티스토리 뷰
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.jarART (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 파일로 변환하여 소스 분석
'Mobile > Android' 카테고리의 다른 글
Android Hidden Menu (0) | 2017.11.12 |
---|---|
Android NDK를 이용한 소스코드 크로스 컴파일 (0) | 2017.08.22 |
Android에서 사용 가능한 GDB, GDBSERVER (0) | 2016.09.05 |
Dalvik opcode (0) | 2015.12.05 |
Android 디바이스에서 Burp Suite를 이용한 HTTP 프록시 설정 (HTTPS 포함) (0) | 2015.11.14 |