APK파일에서 소스코드를 추출할 수 있는 방법이 있나요?
조회수 22625회
컴퓨터 하드 드라이브가 손상되서 제가 두 달 동안 작업한 App의 소스코드가 전부 날라갔네요… 지금 가지고 있는 거라고는 친구한테 보냈던 메일에 저장된 APK 파일 뿐이에요.
APK 파일에서 소스코드를 추출할 수 있는 방법이 있나요?
1 답변
-
간단한 방법 : 온라인 툴 사용 http://www.javadecompilers.com/apk, apk파일을 업로드하고 소스코드 추출하기.
apk파일 디코딩 절차입니다. 순서대로 따라해보세요.
Step 1:
- 새로운 폴더를 하나 만들고 디코딩하고 싶은 apk파일을 폴더 안으로 복사하세요.
- 이제 apk파일의 확장자를 zip으로 바꾸고 저장하세요. 이제 classes.dex파일에 접근할 수 있습니다. 여기까지 완료하셨다면 drawables폴더의 내용은 확인할 수 있지만 xml이나 java 파일은 확인할 수 없습니다. 계속 진행하죠.
Step 2:
- 이제 같은 폴더에(혹은 새로운 폴더도 무관) zip파일의 압축을 풉니다.
- dex2jar파일을 다운받고 마찬가지로 같은 폴더에(혹은 새로운 폴더도 무관) 압축을 풉니다.
- classes.dex파일을 dex2jar 폴더로 이동합니다.
- 이제 명령 프롬프트를 열고 해당 폴더로(혹은 새폴더) 주소를 변경하세요. 그리고 d2j-dex2jar classes.dex를 입력하고 엔터를 누릅니다.(mac아니 ubuntu를 사용하시는 분들은 ./d2j-dex2jar.sh classes.dex입력). 그러면 폴더에 classes.dex.dex2jar파일이 생성될 겁니다.
- java decompiler를 다운받고 jd-gui 더블클릭 → open file 클릭 → classes.dex.dex2jar파일 선택 → class 파일 획득.
- src 이름으로 모든 class파일을 저장합니다(jd-gui에서 File → Save All Sources). 이제 java 소스파일을 획득하게 되었습니다. 그러나 xml파일은 여전히 읽을 수 없는 상태죠.
Step 3:
새로운 폴더를 엽니다.
- 디코딩 하고 싶은 apk파일을 폴더에 넣습니다.
- apktool 와 apktool install window 최신 버젼을 다운받고 같은 폴더에 넣습니다(두 가지 모두 같은 링크에서 다운로드 가능).
- 명령행을 엽니다.
- apktool d myApp.apk 명령 입력(myApp.apk는 디코딩 하고 싶은 파일을 의미합니다). 이제 폴더에 새로운 폴더가 생성될 것이고 이 곳에서 apk파일의 xml파일들을 읽을 수 있습니다.
Step 4:
특별한 것은 없구요 이제 생성된 2개의 폴더(class / xml)를 하나의 폴더에 복사하는 일만 남았습니다. 축하합니다.
- Error: Unable to access jarfile C:\Users\UHO\Desktop\dex2jar-2.x\\apktool.jar 가 뜹니당 ... 알 수 없는 사용자 2017.5.17 04:10
댓글 입력