티스토리 뷰

Mobile/Android

APK 분석

do9dark 2015. 12. 6. 18:30

APK 파일은 zip 알고리즘의 압축파일 형태이므로 압축 유틸리티를 이용하여 풀 수 있다.

 

- APK 파일 구성

assets: 패키지가 가지고 있는 외부 리소스

res: 패키지가 가지고 있는 내부 리소스

META-INF: 프로그램 정보 데이터로 인증서에 서명한 내용

classes.dex: 클래스들의 정보를 가지고 있는 파일

resources.arsc: 별도로 컴파일된 리소스

AndroidManifest.xml: 안드로이드 어플리케이션에 대한 정보 (권한 정보)



Dalvik Decompile

 

- DEX (Dalvik EXecutable)

자바 클래스 파일이 Dalvik 형태로 변환된 파일으로 프로그램의 실제 코드를 포함하고 있다.

 

dex2jar를 이용해서 dex 포맷을 jar 포맷으로 변환할 수 있다. (윈도우 기준)

> dex2jar.bat classes.dex

 

jar 포맷으로 변환된 파일은 jd-gui를 이용해서 볼 수 있다.

 

xml file decompile

> java -jar <AXMLPrinter2.jar path> <decompile xml file path>

https://android4me.googlecode.com/files/AXMLPrinter2.jar

AXMLPrinter2.jar



ART (Android RunTime) Decompile

 

app/arm/ 경로에서 odex 파일 추출

oat2dex를 이용해서 odex 파일을 dex 파일로 변환

> oat2dex.bat *.odex *.dex

 

baksmali/smali를 이용하여 classes.dex 파일로 변환

> java -jar baksmail.jar -x *.dex -o <output directory path>

> java -jar smali.jar <output directory path> -o classes.dex

 

classes.dex 파일을 압축 해제한 APK 폴더에 넣은 다음 다시 APK 파일로 압축

이후 과정은 Dalvik Decompile과 동일



*.java > *.class/*.jar > *.dex

 

- Compile

*.java > *.class/*.jar : javac

*.class/*.jar > *.dex : dx

 

- Decompile

*.dex > *.class/*.jar : dex2jar / undx

*.class/*.jar > *.java : jad / dava / jd-gui

apk 파일에서 dex 파일 추출 후 dex2jar를 이용하여 dex 파일을 jar 파일로 변환, 

jad를 이용해서 class 파일에서 java 파일로 변환하여 소스 분석

댓글
댓글쓰기 폼
«   2020/09   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
링크
공지사항
Total
108,249
Today
5
Yesterday
57