Skip to Sidebar Skip to Content
IT 보안 이야기
익명

  • 로그인
  • 처음으로
  • 소개
  • 기획 시리즈
  • 참고문헌
  • 자료실
  • 추천 링크
태그
  • Basic
  • Computer
  • Essay
  • How to Install
  • Infra
  • Mobile
  • News
  • Reference
  • Research
  • Resource
  • Story
  • Web
  • X
  • 페이스북
  • Sign up
  • Tistory Blog
  • 지식iN
  • 커피 한 잔 사주기
Copyright by Kinesis. All Reserved.

Unreal Engine 기반 Android Mobile App 분석 방법 살펴보기

  • Kinesis Kinesis 작성
    Kinesis Kinesis
    • •
    • 2월 25, 2025
    • •
    • 10 분 소요 예상
    • X에 공유하기
    • 페이스북에 공유하기
    • 링크드인에 공유하기
    • 핀터레스트에 공유하기
    • 이메일
    Unreal Engine 기반 Android Mobile App 분석 방법 살펴보기
    • Research
    • Mobile
    이 페이지에서
    본문 전체 보기

    Exploring Analysis Methods for Unreal Engine-Based Android Mobile Apps

    💬
    이 글에 작성된 내용은 세부 내용 및 검증이 미흡하여 참고 사항으로 보셔야 하며, 무조건 신뢰 되어서는 안됩니다.
    틀린 부분이나 부족한 부분이 있을 것을 전제로 독자 스스로 검증을 통해 활용하시길 부탁드립니다.
    🚨
    본 글에 기재된 내용을 자칫 악의적, 불법적인 목적으로 사용할 경우 그에 따른 책임이 발생될 수 있습니다.
    부디 보안 수준 향상을 위해 기여할 수있는 올바른 형태로 참고 및 사용해 주시길 간곡히 부탁드립니다.

    목차

    1. 사용된 Unreal Engine Version 정보 확인하기
    2. libUnreal.so 파일 추출하기
    3. Package 파일목록 확인 및 수집하기
    4. Viewer 도구를 이용해 Encryption 여부 확인하기
    5. AES Key 추출하기
    6. Package 파일내 리소스 추출하기

    Android 기반 App을 분석하는 기법이야 여러가지고, 그 중에서도 Unreal Engine 을 이용해 개발된 유형을 분석하는 기법도 여러가지 일 것이다. IDA 같은 고급 도구를 가지고 있다면 보다 효율적으로 분석할 수도 있겠지만, 일반 개인이나 해당 도구를 지원 받을 수 없는 기업 환경에서는 다른 대안이 필요할 수 있다.

    이 글에서는 내가 Unreal Engine 기반의 Android App 을 분석하는 과정에서 습득한 방법이나 대안 등을 기술하고 업데이트 할 예정이다. 틀린 부분이 있을 수 있고, 시간의 흐름이나 상황에 따라 여러 인자들이 변동 될 수 있다는 것을 사전에 인지하자.


    사용된 Unreal Engine Version 정보 확인하기

    Unreal Engine 을 이용해 개발된 Android App 은 AndroidManifest.xml 이라는 파일 안에 개발에 사용된 Unreal Engine Version 정보 등을 명시하고 있다. 후에 서술하겠지만, 패키지 처리된 .pak 확장자 파일을 추출(Extract) 할 때에도 Version 정보를 알고 있어야 올바르게 추출을 시도할 수 있는 만큼 정보 수집은 모든 분석에 있어 기본이라 할 수 있고, 모든 Android App 분석의 기본은 바로 이 AndroidManifest.xml파일에서 시작된다.

    APK 파일을 분석을 도와주는 도구들은 여러 사람들에 의해 다양하게 등장하고 변환해왔는데, 이 글에서는 간단하게 다음과 같은 3가지 방법에 대해 설명하고 넘어갈 예정이다.

    • APK Easy Tool 을 이용한 방법 - APK 의 Unpack/Repack Tool 활용법
    • MobSF 을 이용한 방법 - Mobile Security Framework 활용법
    • AXMLPrinter2를 이용한 방법 - 직접적인 AndroidManifest.xml 복호화
      (Google Android4me 기록보관소 제공)

    APK Easy Tool을 이용한 AndroidManifest.xml 확인 방법

    APK Easy Tool 은 Android App 의 설치 패키지 파일인 APK를 GUI 기반으로 편하게 Decompile, Re-Compile 및 Sign 작업까지 진행해주는 도구이다. 업데이트 및 관리는 사실상 2022년에 중단된 도구이지만, 2025년 02월 현재 시점까지도 편리하게 사용할 수 있는 도구 중 하나 이다.

    [CLOSED] [Discontinued] [Windows] APK Easy Tool v1.60 (2022-06-23)
    Apk Easy Tool is a lightweight GUI application that enables you to manage, sign, compile and decompile the APK files for the apps you are working on. APK Easy Tool is absolute free for commercial and non-commercial use. Please note: This tool…
    XDA ForumsDeleted member 4623971
    APK Easy Tool 을 이용해 APK 파일을 선택하고 Decompile 을 누르면 쉽게 APK를 풀어볼 수 있다.
    1-Decompiled APKs 경로 내 APK 파일 명과 동일한 폴더에 복호화 된 AndroidMenifest.xml 있다.

    MobSF를 이용한 AndroidManifest.xml 확인 방법

    모바일 보안 프레임워크(Mobile Security Framework) 약칭 MobSF 로 불리는 도구를 이용해 복호화 된 AndroidManifest.xml 를 확인해 보는 방법도 있다.

    GitHub - MobSF/Mobile-Security-Framework-MobSF: Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and security assessment framework capable of performing static and dynamic analysis.
    Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and security assessment framework capable of performing static a…
    GitHubMobSF

    Github 를 참고해 직접 설치하거나 Docker 를 내려받아 가동하거나 또는 검사 결과가 외부에 노출 되도 상관없는 경우라면, MobSF Live 서버에 직접적으로 올려 분석을 돌려봐도 된다.

    가동된 MobSF에 접속하여 APK 파일을 Drag & Drop 또는 직접적으로 선택해 업로드하면 된다.
    MobSF를 이용해 AndroidManifest.xml 내용을 열람하여 Unreal Engine 버전 정보를 확인하는 모습

    AXMLPrinter2를 이용한 AndroidManifest.xml 확인 방법

    AXMLPrinter2 를 이용한 방법은 앞서 언급된 도구들과는 다르게 보다 기본적인 도구를 활용하는 방법으로 Google Code Archive 에 보관되어 있는 android4me 프로젝트에서 내려받아 사용할 수 있다.

    Google Code Archive - Long-term storage for Google Code Project Hosting.
    Long-term storage for Google Code Project Hosting.

    사용 방법은 java 만 설치되어 있다면 간단한데, java -jar AXMLPrinter2.jap AndroidManifest.xml > {변환할 파일명} 명령어를 이용하면 사람이 쉽게 읽어볼 수 있도록 변환이 완료된다.

    AXMLPrinter2 를 이용해 AndroidManifest.xml 를 읽을 수 있는 AndroidManifest2.xml 로 변환한 모습

    앞서 언급한 3가지 방법 이외에도 다양한 방법 등을 활용해 AndroidManifest.xml을 열람해 살펴보면 com.epicgames.unreal.GameActivity.EngineVersion 속성을 통해 버전 정보를 확인할 수 있는데, 이 정보를 알아야 향후 분석 과정에서 버전 정보가 필요할 때 대응이 가능해진다.

    ...생략...
    
    <meta-data android:name="com.epicgames.unreal.GameActivity.EngineVersion" android:value="5.3.2" />
    <meta-data android:name="com.epicgames.unreal.GameActivity.EngineBranch" android:value="UE5" />
    
    ...생략...

    Unreal Engine 5 버전 대는 AndroidManifest에 위와 같은 Name Attribute 를 통해 확인할 수 있다.

    libUnreal.so 파일 추출하기

    Unreal Engine 에서 Build 옵션 중 Crypto 섹션을 이용한 암호화를 수행했을 경우 Encryption Key 는 libUnreal.so 파일에 포함되기 때문에 IDA 등 별도의 Debugger 를 이용해 추출하는 경우가 아니라면 가장 단순하게 Encryption Key 를 얻을 수 있는 방법은 libUnreal.so 파일과 Package 된 파일들을 이용하는 방법이다. 따라서 Encryption Key 를 얻기 전에 libUnreal.so 파일을 확보해야 할 필요가 있다.

    가장 단순한 방법으로는 설치 APK 파일에서 .so 파일을 추출해 내는 방법이고, 설치 APK를 구할 수 없는 경우에는 Root 권한이 부여된 Device 안에서 .so 파일을 추출해내는 방법이 있다.

    APK 파일에서 .so 파일을 추출해 내는 방법

    APK 파일은 Zip 파일에 서명이 추가된 구조로 압축 프로그램을 이용하면 손쉽게 내부 파일을 확인하고 추출하는 것이 가능하다.

    참고 : https://source.android.com/docs/security/features/apksigning?hl=ko

    APK는 단일 파일 형태인 Legacy APK 일수도 있고 2018년 05월부터 등장한 App Bundle 이 적용된 복수의 APK 군집 형태 일수도 있다.

    Legacy Type 인 경우 Single APK 파일로 해당 파일 안에서 libUnreal.so 파일을 추출해 낼 수 있을 것이고, App Bundle 이 적용되어 Split APKs 파일 형태를 갖는 APK 인 경우에는 base.apk 또는 config.{architecture}.apk 파일 에서 libUnreal.so 파일을 추출해 낼 수 있을 것이다.

    — 현재 작성 중: 보여지지 않는 부분은 틈틈이 시간을 들여 작성 진행 중인 영역으로 아직 공개될 만큼 정리가 이루어지지 않은 부분입니다. 양해 부탁 드립니다. —

    Root 권한이 부여된 Device 안에서 libUnreal.so 파일 추출하기

    또 다른 방법은 Root 권한이 부여된 device 안에서 libUnreal.so 파일을 추출하는 방법이 있는데, Root 권한이 부여되었다는 전제 자체가 Rooting 이 되어 있는 환경이라는 점과, 굳이 이렇게 명령어를 사용하는 것보다는 설치된 App을 백업용 APK 파일로 만들어주는 앱 이용하는 편이 더 효율적이지만 이러한 방법이 있다는 기록 목적으로 서술하기로 한다.

    우선 연결된 devices 목록을 확인하고 shell로 접속해준다.

    Drive:\> adb devices
    List of devices attached
    emulator-5554   device

    연결된 devices 확인

    Drive:\> adb shell 또는 adb -s emulator-5554 shell

    emulator-5554 기기의 shell 접속

    su 명령어를 이용해 root 권한으로 전환한 뒤 Unreal engine 을 사용하고 있는 대상 App의 PID 값을 확인한다.

    $ su
    # ps -ef | grep -i 'com.*'
    PID   USER     TIME  COMMAND
    ...생략...
    15087 10061     4h12 {main} com.companyname.appname
    ...생략...

    프로세스 목록을 통해 PID (Process ID) 값을 확보한다.

    # cat /proc/15087/maps | grep -i libunreal.so
    address permission offset dev(major:minor) inode path
    00000000-ffffffff rw-p 00000000 00:00 0000000 /data/app/{appname}/lib/arm64/libUnreal.so

    Process Maps 정보를 이용해 libUnreal.so 파일의 path 를 확보한다.

    Drive:\> adb pull /data/app/{appname}/lib/arm64/libUnreal.so libUnreal.so

    adb pull 명령어를 이용해 파일을 확보한다.

    이후 해당 경로에 있는 파일을 특정 경로에 복사한 뒤 꺼내오거나, adb pull 명령어를 이용해 확보하면 된다.

    Package 파일 목록 확인 및 수집하기

    이 게시물은 구독자 전용입니다.

    지금 구독자 회원이 되어 모든 게시물에 접근하고, 독점 콘텐츠를 즐기며 최신 업데이트를 받아보세요.

    구독자 가입

    이미 계정이 있으신가요? 로그인

    Kinesis Kinesis

      다른글 보기

      보안 진단: 좋은 보고서의 구조 8 분 소요 예상

      보안 진단: 좋은 보고서의 구조

      Kinesis Kinesis
      Kinesis Kinesis
        6월 2, 2025 • Basic • Research • Story
        보안 진단: 보고서 작성의 목적 8 분 소요 예상

        보안 진단: 보고서 작성의 목적

        Kinesis Kinesis
        Kinesis Kinesis
          6월 2, 2025 • Basic • Research • Story
          Anditer : Command Execution 기반 루팅 검증 우회 (Rooting - Bypass Command Execution) 8 분 소요 예상

          Anditer : Command Execution 기반 루팅 검증 우회 (Rooting - Bypass Command Execution)

          Kinesis Kinesis
          Kinesis Kinesis
            5월 11, 2025 • Mobile
            Anditer : Packages 기반 루팅 검증 우회 (Rooting - Bypass Packages) 13 분 소요 예상

            Anditer : Packages 기반 루팅 검증 우회 (Rooting - Bypass Packages)

            Kinesis Kinesis
            Kinesis Kinesis
              5월 10, 2025 • Mobile
              [How] JAVA Runtime 설치 방법 3 분 소요 예상

              [How] JAVA Runtime 설치 방법

              Kinesis Kinesis
              Kinesis Kinesis
                4월 29, 2025 • How to Install
                취약점(vulnerability), 위협(threat) 그리고 리스크(risk) 9 분 소요 예상

                취약점(vulnerability), 위협(threat) 그리고 리스크(risk)

                Kinesis Kinesis
                Kinesis Kinesis
                  4월 6, 2025 • Basic • Story
                  입문자를 위한 컴퓨터 이야기 #02 : 1세대 진공관 컴퓨터 ENIAC 20 분 소요 예상

                  입문자를 위한 컴퓨터 이야기 #02 : 1세대 진공관 컴퓨터 ENIAC

                  Kinesis Kinesis
                  Kinesis Kinesis
                    4월 6, 2025 • Story • Computer • Basic
                    정보보안의 3요소 : CIA Triad 13 분 소요 예상

                    정보보안의 3요소 : CIA Triad

                    Kinesis Kinesis
                    Kinesis Kinesis
                      4월 3, 2025 • Story • Basic
                      보안이 중요한 이유와 기본 개념 29 분 소요 예상

                      보안이 중요한 이유와 기본 개념

                      Kinesis Kinesis
                      Kinesis Kinesis
                        4월 3, 2025 • Story • Basic
                        Anditer : Frida 보안 검증 우회(Frida Detect Bypass) 24 분 소요 예상

                        Anditer : Frida 보안 검증 우회(Frida Detect Bypass)

                        Kinesis Kinesis
                        Kinesis Kinesis
                          3월 26, 2025 • Mobile

                          발행물 구독하기

                          게시글들이 마음에 든다면 구독하기 버튼을 눌러주세요. 구독시 코맨트 작성 등의 활동도 가능해집니다.

                          받은 편지함을 확인하시고 확인 링크를 클릭해 주세요.
                          IT 보안 이야기
                          • 처음으로
                          • 소개
                          • 기획 시리즈
                          • 참고문헌
                          • 자료실
                          • 추천 링크
                          태그
                          • Basic
                          • Computer
                          • Essay
                          • How to Install
                          • Infra
                          • Mobile
                          • News
                          • Reference
                          • Research
                          • Resource
                          • Story
                          • Web
                          • X
                          • 페이스북
                          • Sign up
                          • Tistory Blog
                          • 지식iN
                          • 커피 한 잔 사주기
                          Copyright by Kinesis. All Reserved.