안드로이드 모바일 어플리케이션 디컴파일(간단한 툴 사용법)

 

 

모바일 어플리케이션 디컴파일하기

 

■ 디컴파일 개요

 

Android Manifest
앱에 필수로 들어가야되며, 앱에 대한 필수적인 정보를 담고 있음. 특히, 앱의 패키지 이름과 사용되는 컴포넌트 및 권한 등이 전부 담겨 있음

DEX
안드로이드 환경에서의 실행 파일
Java 코드로 작성된 컴파일된 class 파일을 DX 도구를 사용해 변환시킨 파일
 - Java 바이트 코드가 달빅 다이트 코드로 변환
달빅 가상머신에서 구동
 - 실행되는 앱마다 가상머신을 생성해 구동시킴

SMALI
DEX 바이너리를 사람이 읽을 수 있도록 표현. DEX를 디코딩 작업으로 추출할 수 있음.
Smali 파일의 코드를 분석해 프로그램의 실행 원리 파악 가능
Smali 코드를 읽고, 수정 후 재컴파일해서 프로그램 수정 가능

(조작하면 동적제어가 가능함)

 

apk 디컴파일 툴(apktool, dex2jar, jd-gui, BytecodeViewer)

 

■ 안드로이드 어플리케이션 디컴파일하기

 

소스코드를 가지고 있지 않은 상태에서는 디컴파일을 통해 어플리케이션을 분석해야함

 

어플리케이션 변조 과정

- APK 획득 -> 디컴파일 -> 코드변조 -> 컴파일 -> 사이닝

 

 

apktool 사용법

 

apk 파일로 압축되어 있는 resource.arsc, classes.dex XML 파일들을 디버깅 형태로 변환시켜주는 도구

https://ibotpeaches.github.io/Apktool/install/

 

Apktool - How to Install

Install Instructions Quick Check Is at least Java 1.8 installed? Does executing java -version on command line / command prompt return 1.8 or greater? If not, please install Java 8+ and make it the default. (Java 7 will also work at this time) Windows: Down

ibotpeaches.github.io

 

설치 파일 및 설치법은 위 주소로 접속하여 확인 가능

 

 

옵션은 d 를 사용하여 디컴파일 명령어(apktool d 파일경로) 입력

C:\Users\CDM\app-release 폴더에서 결과값 아래와 같이 확인

 

 

※smali 파일은 조작하면 동작제어 가능

 

 

dex2jar 사용법

 

apk 파일이나 apk 파일에 포함된 classes.dex 파일을 자바 클래스 파일로 변환시켜주는 도구

https://sourceforge.net/projects/dex2jar/

 

dex2jar

Download dex2jar for free. Tools to work with android .dex and java .class files. Mirrors: * https://bitbucket.org/pxb1988/dex2jar * https://github.com/pxb1988/dex2jar dex2jar contains following compment * dex-reader is designed to read the Dalvik Executab

sourceforge.net

 

dex2jar를 이용할 땐, 디컴파일할 파일을 다운로드 받은 dex2jar 폴더 내로 이동시켜주어야 함

 

 

실행파일을 .jar 확장자를 가진 파일로 변환 및 파일 생성 확인

(명령어 : d2j-dex2jar.bat InsecureBankv2.apk)

 

jd-gui 사용법

 

jar 파일을 사용자가 읽을 수 있는 형태로 디컴파일하기 위하여 사용하며, dex2jar을 이용하여 생성된 jar 파일을 불러오면 자동으로 디컴파일 함

http://java-decompiler.github.io/

 

Java Decompiler

The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions. JD-GUI is a standalone graphical utility that displays Java source codes of “.class” files. You can browse the reco

java-decompiler.github.io

 

 

윈도우 버전의 압축파일을 다운로드 받은 후, 압축해제

 

 

dex2jar을 이용하여 생성된 jar 파일을 jd-gui로 불러오면 자동으로 디컴파일 및 결과 확인 가능

 

 

BytecodeViewer 사용법

BytecodeViewer는 안드로이드 뿐만 아니라, 자바, DEX, jars 파일 등과 같은 소스코드 리버싱 분석 도구. 윈도우 환경에서도 완벽하게 동작하며, 안드로이드 APK 파일을 디컴파일하여 바이트코드 형태와 클래스 파일을 자바 파일로 변환한 후 소스파일로 복원하여 함께 보여줌. 앞서 소개한 도구들의 기능을 모두 합한 것과 같아서 효율적인 도구이며, 분석 속도가 매우 빠름.

https://github.com/Konloch/bytecode-viewer/releases

 

Releases · Konloch/bytecode-viewer

A Java 8+ Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More) - Konloch/bytecode-viewer

github.com

 

jar 파일을 다운로드 후, 설치경로에서 명령어(java -jar Bytecode-Viewer-2.11..0 jar) 입력하면 bytecodeviewer가 실행됨

 

 

분석하고자 하는 파일을 드래그 시키거나, 오픈하면 아래와 같이 결과가 출력(좌측 - 소스코드, 우측 - 바이트코드)되는데 해석된 2개의 코드를 동시에 볼 수 있다는 점에서 매력적이며, 다양한 플러그인을 활용하여 분석이 가능

 

 

 

댓글

Designed by JB FACTORY