2012. 5. 14. 23:41

Android App (Apk) Source Reverse Engineering

안드로이드 apk 파일에서 소스를 추출하는 방법을 설명해 드리겠습니다. 여기서 소스는 원본소스가 아닌 disassembly 를 이용하여 생성된 byte code (dex format)로부터 생성된 Java 소스를 말합니다. 좀더 정확하게 말하면 .class 포맷으로 변경해서 이 포맷을 볼 수 있는 Viewer 를 통해서 소스를 보는 것입니다. 아무래도 원본 소스랑은 좀 다르겠지만 로직이나 어떤 API 를 사용했느냐를 분석할 수 있어서 큰 도움이 될 수 있습니다.


(자료 자체가 공개할만한개 아니라 비공개로 작성합니다.)



Swype.apk


유명한 SwypePad 의 apk 파일입니다. 엔지니어링 빌드 폰의 System/App 위치에서 복사했습니다.


1. http://code.google.com/p/dex2jar/ 에서 다운로드



dex2jar-0.0.9.8.zip



2. d2j-dex2jar 명령을 실행합니다.


D:\Android\apps>d2j-dex2jar -f Swype.apk

dex2jar Swype.apk -> Swype-dex2jar.jar


3. 새로 생성된 Swype-dex2jar.jar 파일을 JD-GUI (Java Decompiler) 툴로 열면 아래처럼 소스가 보입니다.



jd-gui-0.3.3.windows.zip



http://java.decompiler.free.fr/?q=jdgui