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

조회수 22550회

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

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

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)를 하나의 폴더에 복사하는 일만 남았습니다. 축하합니다.

    • Error: Unable to access jarfile C:\Users\UHO\Desktop\dex2jar-2.x\\apktool.jar 가 뜹니당 ... 알 수 없는 사용자 2017.5.17 04:10

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)