Android App (Apk) Source Reverse Engineering
안드로이드 apk 파일에서 소스를 추출하는 방법을 설명해 드리겠습니다. 여기서 소스는 원본소스가 아닌 disassembly 를 이용하여 생성된 byte code (dex format)로부터 생성된 Java 소스를 말합니다. 좀더 정확하게 말하면 .class 포맷으로 변경해서 이 포맷을 볼 수 있는 Viewer 를 통해서 소스를 보는 것입니다. 아무래도 원본 소스랑은 좀 다르겠지만 로직이나 어떤 API 를 사용했느냐를 분석할 수 있어서 큰 도움이 될 수 있습니다.
(자료 자체가 공개할만한개 아니라 비공개로 작성합니다.)
유명한 SwypePad 의 apk 파일입니다. 엔지니어링 빌드 폰의 System/App 위치에서 복사했습니다.
1. http://code.google.com/p/dex2jar/ 에서 다운로드
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) 툴로 열면 아래처럼 소스가 보입니다.
http://java.decompiler.free.fr/?q=jdgui