APK파일에서 소스코드를 추출할 수 있는 방법이 있나요?


컴퓨터 하드 드라이브가 손상되서 제가 두 달 동안 작업한 App의 소스코드가 전부 날라갔네요… 지금 가지고 있는 거라고는 친구한테 보냈던 메일에 저장된 APK 파일 뿐이에요.

APK 파일에서 소스코드를 추출할 수 있는 방법이 있나요?

  • 2016년 05월 27일에 작성됨

조회수 384


1 답변


좋아요
0
싫어요
채택취소하기

간단한 방법 : 온라인 툴 사용 http://www.javadecompilers.com/apk, apk파일을 업로드하고 소스코드 추출하기.


apk파일 디코딩 절차입니다. 순서대로 따라해보세요.

Step 1:

  1. 새로운 폴더를 하나 만들고 디코딩하고 싶은 apk파일을 폴더 안으로 복사하세요.
  2. 이제 apk파일의 확장자를 zip으로 바꾸고 저장하세요. 이제 classes.dex파일에 접근할 수 있습니다. 여기까지 완료하셨다면 drawables폴더의 내용은 확인할 수 있지만 xml이나 java 파일은 확인할 수 없습니다. 계속 진행하죠.

Step 2:

  1. 이제 같은 폴더에(혹은 새로운 폴더도 무관) zip파일의 압축을 풉니다.
  2. dex2jar파일을 다운받고 마찬가지로 같은 폴더에(혹은 새로운 폴더도 무관) 압축을 풉니다.
  3. classes.dex파일을 dex2jar 폴더로 이동합니다.
  4. 이제 명령 프롬프트를 열고 해당 폴더로(혹은 새폴더) 주소를 변경하세요. 그리고 d2j-dex2jar classes.dex를 입력하고 엔터를 누릅니다.(mac아니 ubuntu를 사용하시는 분들은 ./d2j-dex2jar.sh classes.dex입력). 그러면 폴더에 classes.dex.dex2jar파일이 생성될 겁니다.
  5. java decompiler를 다운받고 jd-gui 더블클릭 → open file 클릭 → classes.dex.dex2jar파일 선택 → class 파일 획득.
  6. src 이름으로 모든 class파일을 저장합니다(jd-gui에서 File → Save All Sources). 이제 java 소스파일을 획득하게 되었습니다. 그러나 xml파일은 여전히 읽을 수 없는 상태죠.

Step 3:

새로운 폴더를 엽니다.

  1. 디코딩 하고 싶은 apk파일을 폴더에 넣습니다.
  2. apktool 와 apktool install window 최신 버젼을 다운받고 같은 폴더에 넣습니다(두 가지 모두 같은 링크에서 다운로드 가능).
  3. 명령행을 엽니다.
  4. apktool d myApp.apk 명령 입력(myApp.apk는 디코딩 하고 싶은 파일을 의미합니다). 이제 폴더에 새로운 폴더가 생성될 것이고 이 곳에서 apk파일의 xml파일들을 읽을 수 있습니다.

Step 4:

특별한 것은 없구요 이제 생성된 2개의 폴더(class / xml)를 하나의 폴더에 복사하는 일만 남았습니다. 축하합니다.

  • 2016년 05월 28일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close