APK 파일에서 소스 코드를 얻는 방법이 있습니까?


1261

랩톱의 하드 드라이브가 갑자기 작동을 멈추고 지난 2 개월 동안 작업했던 앱의 모든 소스 코드가 손실되었습니다. 내가 가진 것은 친구에게 보낼 때 이메일에 저장된 APK 파일입니다.

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


28
참고로 여기에 온라인 디 컴파일러 검사가 있습니다
edwin

11
이는 Whatsapp 또는 Facebook과 같은 백만 달러 상당의 앱 소스 코드를 얻을 수 있다는 의미입니까? 이것이 모두 오픈 소스입니까?
Faizan

3
@Faizan 당신은 proguard에 대해 들었습니까?
Vishwajit Palankar

1
질문의 어구에는 관련없는 이야기가 포함되어 있으므로 도구추천하는 것으로 해석 될 수 있습니다 . 그러나 그 대답은 잠재적으로 javac -decompileSO 지침에 맞을 수 있습니다 . 대답은 질문이 아닌 주제가 아닌 것으로 보입니다 .
SwiftArchitect

2
에서 이 문서 그들이 반대 포켓몬 이동을 설계하는 방법을 설명은
앤더스

답변:


1569

간단한 방법 : 온라인 도구 http://www.javadecompilers.com/apk를 사용 하고 apk를 업로드하고 소스 코드를 얻으십시오.


.apk 파일 디코딩 절차, 단계별 방법 :

1 단계:

  1. 새 폴더를 만들고 디코딩하려는 .apk 파일을 복사하십시오.

  2. 이제이 .apk 파일의 확장자를 .zip으로 바꾸고 (예 : filename.apk에서 filename.zip으로 이름 바꾸기) 저장하십시오. 이제 classes.dex 파일 등에 액세스 할 수 있습니다.이 단계에서는 드로어 블을 볼 수 있지만 xml 및 java 파일은 볼 수 없으므로 계속하십시오.

2 단계:

  1. 이제이 .zip 파일을 같은 폴더 (또는 NEW FOLDER)에 추출하십시오.

  2. dex2jar를 다운로드 하여 동일한 폴더 (또는 NEW FOLDER)에 추출하십시오.

  3. classes.dex 파일을 dex2jar 폴더로 이동하십시오.

  4. 이제 명령 프롬프트를 열고 디렉토리를 해당 폴더 (또는 NEW FOLDER)로 변경하십시오. 그런 다음 d2j-dex2jar classes.dex(Mac 터미널 또는 우분투 쓰기 ./d2j-dex2jar.sh classes.dex)을 입력하고 Enter를 누르십시오. 이제 같은 폴더에 classes.dex.dex2jar 파일이 있습니다.

  5. java decompiler를 다운로드 하고 jd-gui를 두 번 클릭하고 열린 파일을 클릭 한 다음 해당 폴더에서 classes.dex.dex2jar 파일을 엽니 다. 이제 클래스 파일을 얻습니다.

  6. 이 클래스 파일을 모두 src 이름으로 저장하십시오 (jd-gui에서 파일-> 모든 소스 저장을 클릭하십시오). 이 단계에서 Java 소스를 얻지 만 .xml 파일을 여전히 읽을 수 없으므로 계속하십시오.

3 단계 :

이제 다른 새 폴더를여십시오

  1. 디코딩하려는 .apk 파일을 넣습니다.

  2. 최신 버전의 apktool AND apktool 설치 창을 다운로드하여 (동일한 링크에서 다운로드 할 수 있음) 동일한 폴더에 배치하십시오.

  3. 명령 창을 엽니 다

  4. 이제 같은 명령을 실행 하십시오 (여기apktool if framework-res.apk 가 없으면 여기에 가져옵니다 ).

  5. apktool d myApp.apk 여기서 myApp.apk는 디코딩하려는 파일 이름을 나타냅니다.

이제 해당 폴더에 파일 폴더가 있으며 apk의 xml 파일을 쉽게 읽을 수 있습니다.

4 단계 :

단계가 아니며 두 폴더 (이 경우 새 폴더)의 내용을 단일 폴더로 복사하면됩니다.

그리고 소스 코드를 즐기십시오 ...


26
액세스 jarfile가 전자에 없습니다 : @prankulgarg, 3 단계의 5 지점에서 나는 다음과 같은 오류를 얻고있다 \ apktojava \ testt \\ apktool.jar

55
cmd에서 dex2jar classes.dex 를 작성하는 대신 d2j-dex2jar classes.dex를 사용해보십시오 . dex2jar classes.dex 때문에이 cmd는 더 이상 사용되지 않습니다.
Umesh

23
찾을 수없는 사람들을 위해 framework-res.apk. 여기
atulkhatri

12
여기에서 d2j-dex2jar.sh, 다운로드 dex2jar를 찾지 못한 사람들 : dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip
Reaz Murshed

14
2 : 4 단계에서 갇힌 사람들을 위해이 버전을 다운로드하면 문제가 해결됩니다 : sourceforge.net/projects/dex2jar/files/dex2jar-2.0.zip/download 그것은 나를 위해했습니다. @delive
siriuseteor77

126

이것은 누군가가 위의 설명에 갇힌 경우를 대비 한 대체 설명입니다. 다음 단계를 수행하십시오.

  1. 다운로드 apktool.bat(또는 apktoolLinux 용)과 apktool_<version>.jar에서 http://ibotpeaches.github.io/Apktool/install/을
  2. 위에서 jar 파일의 이름을 바꾸고 apktool.jar두 파일을 같은 폴더에 넣습니다.

  3. dos 상자 ( cmd.exe)를 열고 해당 폴더로 변경하십시오. Java 환경이 설치되어 있는지 확인하십시오 (Linux의 경우 필요한 라이브러리에 대한 참고 사항도 확인하십시오)
  4. 스타트: apktool decode [apk file]

    중간 결과 : 리소스 파일,AndroidManifest.xml

  5. 선택한 언 패커로 APK 파일 압축 해제

    중간 결과 :classes.dex

  6. http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=dex2jar-0.0.9.15.zip 에서 다운로드 및 추출
  7. 드래그 앤 드롭 classes.dex위에 dex2jar.bat(또는 입력 <path_to>\dex2jar.bat classes.dexDOS 창에서, 리눅스 사용 dex2jar.sh)

    중간 결과 :classes_dex2jar.jar

  8. 압축 풀기는 classes_dex2jar.jar(사용되는 디 컴파일러에 따라 선택 될 수 있음)
  9. 클래스 파일을 디 컴파일합니다 (예 : JD-GUI 또는 DJ Decompiler 사용 )

    결과 : 소스 코드

참고 : 타사 패키지를 디 컴파일 할 수 없습니다. 이 안내서는 APK 파일에서만 개인 소스 코드를 복구하기위한 것입니다. 마지막으로 결과 코드가 난독 화 될 가능성이 높습니다


6
또한이 APKTool-> dex2jar-> JD-GUI 경로에 대한 현대적인 대안이 있다고 덧붙일 수도 있습니다! 그냥 오픈 소스 APK와 Jadx라는 DEX의 디 컴파일러를 시도 : sourceforge.net/projects/jadx/files을 그것은 여기 온라인 버전이 : javadecompilers.com/apk
앤드류 Rukin

1
APK 파일 을 디 컴파일 수 있습니다 (읽기 : 적법한) . 다음 질문을 참조하십시오. stackoverflow.com/questions/9674557/…
Rakete1111

1
왜 파일을 apktool반환 smali합니까? java파일 을 얻는 방법 ?
rminaj

108

APK파일 을 디 컴파일 할 수 있지만 큰 문제가 발생할 수 있습니다 .

작성한 코드를 반환하지 않습니다. 대신 임의의 이름이 주어진 변수와 임의의 이름이 주어진 함수와 함께 컴파일러가 인라인 된 모든 것을 반환합니다. 다시 컴파일하는 것보다 코드를 디 컴파일하고 복원하는 데 시간이 훨씬 더 걸릴 수 있습니다.

슬프게도, 이와 같은 것들이 많은 프로젝트를 죽였습니다.
앞으로 CVS , SVNgit 등과 같은 버전 제어 시스템을 배우는 것이 좋습니다 .

그리고 그것을 백업하는 방법.


19
Dropbox와 같은 서비스도 도움이됩니다.
Jeremy Logan

1
항상 CD의를 구울 수있는 방법이
JerryGoyal

52

Play 스토어 에는 APK (시스템 응용 프로그램도)를 디 컴파일하고 스마트 폰에서 바로 소스 코드를 볼 수 있는 새로운 응용 프로그램도 있습니다. 파일을 SD 카드에 저장하여 컴퓨터에서도 볼 수 있습니다. 루트 나 다른 것이 필요하지 않습니다.

그냥 설치하고 즐기십시오. 이것이 앱을 디 컴파일하는 가장 쉬운 방법이라고 생각합니다.


1
이것은 가장 쉬운 방법입니다.
Midhun Vijayakumar

@MidhunVijayakumar 당신은 이것을 사용하여 apk에서 소스 코드로 변환 할 수 있습니까?
Sajeev

28

apktool 은 가장 좋은 방법입니다. XML을 저장했지만 솔직히 .java 코드에서 어떻게 작동하는지 모르겠습니다.

귀하가 유일한 코더 인 경우에도 코드 저장소를 사용하는 것이 좋습니다. 내 프로젝트에 Project Locker 를 사용 하고 있습니다. 그것은 당신에게 무료 svn 및 git repos를 제공합니다.


당신이 추출 자원을 원하는 경우 apktool 필수 불가결를 찾을 수 apktool의 온라인 버전은 여기에서 확인할 수 있습니다 (안드로이드 응용 프로그램에서, 즉 이미지 사실,이 도구는 전혀 경쟁이 없습니다.!) : www.javadecompilers.com/apktool
앤드류 Rukin

23

이 두 기사의 사용을 결합하는 방법에 대해 설명 apktool하고 dex2jar취할 APK파일을 빌드하고 실행할 수있는 이클립스 프로젝트를 만듭니다.

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

기본적으로 당신 :

  1. apktoolAPK에서 리소스 파일을 가져 오기 위해 사용
  2. dex2jarEclipse가 원하는 형식으로 클래스를 포함하는 jar 파일을 얻는 데 사용하십시오 .
  3. 자원 파일 및 새 jar 파일을 가리키는 Eclipse 프로젝트 작성
  4. zip 유틸리티로 jar 파일을 열고 기존 자원을 삭제하십시오.
  5. JDGui소스 파일 을 보려면 jar 파일을여십시오.
  6. 필요한 소스 코드를 가져 와서 JDGuiEclipse 내부의 클래스에 넣고 수정하십시오.
  7. jar 파일에서 해당 클래스를 삭제하십시오 (따라서 동일한 클래스가 여러 번 정의되어 있지 않습니다)
  8. 그것을 실행하십시오.

2
나는이 질문에 여전히 답이된다는 것을 알고있다. 나는 정보를 전달하고 싶다 : 안드로이드 apks decompileandroid.com 용 온라인 디 컴파일러 가있다 로컬 컴퓨터에서 apk 업로드, 잠시 기다려라, zip 형식으로 소스 코드를 다운로드하십시오.
Snehal Masne

2
좋은 소리. 그리고 decompileandroid 웹 사이트에는 모든 소스의 사본이 있습니다! 영리한!
DDSports

한 가지 질문은 apk 디 컴파일되었지만 jd gui에는 java의 실제 클래스가 있는지 알 수 없습니다. apk가 디 컴파일되는지 여부는 실제 Java 클래스가 있습니까?

21

apktool이 작동합니다. 소스 코드를 추출하기 위해 키 저장소를 알 필요조차 없습니다 (약간 무섭습니다). 주요 단점은 소스가 Java 대신 Smali 형식으로 표시된다는 것입니다. icon 및 main.xml과 같은 다른 파일은 완벽하게 잘 나오므로 적어도 복구 할 가치가 있습니다. 궁극적으로 Java 코드를 처음부터 다시 작성해야합니다.

여기서 apktool을 찾을 수 있습니다 . apktool과 적절한 도우미 (Windows, Linux 또는 Mac OS 용)를 다운로드하기 만하면됩니다. 7-zip과 같은 도구를 사용하여 포장을 푸는 것이 좋습니다.


16

이를 수행하는 몇 가지 방법이 있습니다.

  1. Android Studio 3.0에서 "프로필 또는 APK 디버그"기능을 사용하십시오.

    Android Studio에서 APK를 열고 탐색 할 수 있습니다. 클래스는 smali로 디 컴파일됩니다. 리소스가 추출되지 않고 "정의로 이동", "모든 참조 찾기"및 디버깅과 같은 소스 코드가 없으면 작동하지 않습니다 (android studio 3.0 canary 9). 일부 추가 smali 기능은 smalidea 와 함께 작동 할 수 있습니다 .

    안드로이드 스튜디오

    파일 선택

    암호

  2. jadx 사용 .

    Jadx는 주어진 APK의 코드를 Java 소스 파일로 디 컴파일합니다.

    jdax-img

  3. apktool 사용 .

    Apktool은 주어진 apk에 대한 리소스를 추출하고 코드를 smali로 디 컴파일하는 명령 줄 도구입니다. apktool을 사용하여 다시 컴파일 할 수도 있습니다. 다음은 실제로 사용되는 예입니다.

    $ apktool d test.apk
    I: Using Apktool 2.2.4 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.4 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...

나는 jadx를 시도했지만 간단한 helloworld로도 자바로 디 컴파일했지만 안드로이드 스튜디오에서 프로젝트를 열고 다시 apk로 컴파일하려고 시도하면 여러 가지 이유로 인해 실패합니다 (중복 파일 등). apk로 다시 컴파일 할 수있는 java를 만드는 방법이 있습니까?
ransh

1
@ransh 나는 일반적으로 jadx를 사용하여 코드를 읽은 다음 apktool을 사용하여 코드를 수정합니다. apktool은 Java를 생성하지 않지만 다시 컴파일 할 수 있습니다.
0xcaff

설명을 해주셔서 감사합니다. 이제 말이 되네요 안드로이드 스튜디오에서 디 컴파일 Java를 컴파일하려고 시도했지만 작동하지 않았습니다.
ransh

16

소스를 쉽게 볼 수 있습니다.

안드로이드 스튜디오 2.3에서 Build -> Analyze APK -> Select the apk that you want to decompile.
소스 코드임을 알 수 있습니다.

참조 링크 :
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2


9
클래스와 메소드를 나열하지만 소스 코드는 제공하지 않습니다.
WSS

".apk"를 ".zip"으로 변경해야만 위의 파일을 얻을 수 있습니다
M. Usman Khan

7

.apk 를 디 컴파일하는 다른 방법을 보여 드리겠습니다 파일 .

" prankul garg 에서 처음 2 단계를 수행 할 수 있습니다 " . 따라서 다른 기회가 있습니다.

3 단계 :

"JD-GUI"를 다운로드하면 쉽게 찾을 수 있습니다. "jd-gui.exe"에서 .jar 파일을 엽니 다 . (파일> 파일 열기> ' .jar 파일을 찾았습니다 '). 이 절차가 끝나면 모든 리소스를 .zip 파일로 저장할 수 있습니다 파일로 .

그래서,

첫 번째 -.apk 파일의 이름 을 .zip

2 - 당신은 디코딩에있는 덱스 원하는 경우 디코딩 (파일 .apk 파일 에 파일 dex2jar을 가능)

3 -JD-GUI로 .jar 파일 을 디코딩해야합니다.


20
이 답변은 다른 사람들이하지 않는 것을 무엇을 제공합니까?
Jørgen R

실제로 이름을 zip으로 바꿀 필요는 없습니다. 7-zip으로 apk 파일을 직접 열 수 있습니다.
miva2

7

온라인 아래 도구 :

http://www.javadecompilers.com/apk

한 번의 클릭으로 모든 작업을 수행합니다. 디 컴파일 된 .java 파일 + resources + xml (하나의 .zip 파일)로 매우 좋은 디 컴파일러 (jadx는 장소 / 함수에서 자바 코드를 리턴합니다. 안드로이드 어셈블러 / 기계 코드)


예, 이것은 훌륭하지만 함수 이름 대신 모든 함수 이름을 CS1001 등으로 변경했습니다. 그래서 이것을 인식하는 방법. 그리고 한가지 더,이 디 컴파일 된 apk를 안드로이드 스튜디오 프로젝트로 직접 사용할 수 있습니까?
Zia Ur Rahman

앱에서 기능을 사용할 수없는 경우 apk를 디 컴파일하는 데 어떤 목적으로 사용합니까?
Zia Ur Rahman

@ZiaUrRahman 모르겠습니다. 그러나 필자의 경우 알고리즘을 분석하기 위해 코드를 디 컴파일합니다. 해당 도구에서 디 컴파일 된 코드가 안드로이드 스튜디오에서 완전 자동으로 컴파일 될 수 있는지 또는 "인간 처리"가 필요한지 확인합니까?
Kamil Kiełczewski

1
안드로이드 스튜디오에서 디 컴파일 된 프로젝트를 가져 왔지만 거기에 gradle이 없으며 프로젝트에 많은 파일이 있지만 실행할 때까지 이해하지 못했습니다. 단순히 작동하지 않았습니다. 디 컴파일 된 프로젝트를 안드로이드 스튜디오에서 완전히 funtional하게 만들고 일부 핵심 기능을 얻은 다음 내 프로젝트에서 사용 / 임베딩하고 싶습니다. 이렇게하는 방법이 있습니까?
Zia Ur Rahman

6

이 사이트 https://www.apkdecompilers.com/ 자동으로 수행했습니다.

나는 받아 들인 대답에 언급 된 사이트를 먼저 시도했지만 그게 효과가 없었습니다.


내가 그것을 첨부 파일과 같은 somethins을 appeare ... 내 자바 소스 코드를 가져 오지 couldnt한다하고 ..
이만 kazemayni

@imankazemayni 위의 링크에서 APK 파일을 "찾아서" "PK 디 컴파일"을 클릭하십시오. 코드가 암호화되어 있지 않으면 시간이 걸리고 소스 코드를 제공해야합니다.
M. Usman Khan

멀티 덱스가 암호화에 미치는 영향을 알고 있습니까?
iman kazemayni

6

개인적으로 소스 코드를 얻으려면 Show Java Android App 을 권장 합니다. Play 스토어 또는 여기 에서 다운로드 할 수 있습니다


대부분 온라인 컴파일러는 작동하지 않지만이 앱은 작동합니다. 감사합니다
Sunil

4

리버스 엔지니어링 타사, 폐쇄 형, 바이너리 Android 앱용 Apktool .

리소스를 거의 원래의 형식으로 디코딩하고 수정 한 후 다시 작성할 수 있습니다.

smali 코드를 단계별로 디버깅 할 수 있습니다. 또한 프로젝트와 같은 파일 구조와 APK 빌드와 같은 일부 반복적 인 작업의 자동화로 인해 앱 작업이 더 쉬워집니다.

http://ibotpeaches.github.io/Apktool/


3

apktool 은 갈 길입니다. 온라인 apktool 서비스도 있습니다 : http://www.javadecompilers.com/apktool

서비스 '온라인 특성'으로 인해 몇 가지 제한 사항이 존재합니다. 자산과 매니페스트 파일을 추출하고 연구 할 수 있지만 현재 응용 프로그램을 다시 컴파일하는 것은 불가능합니다.

여전히 이것은 안드로이드 응용 프로그램을 '열기'쉬운 방법입니다.


3

DexPatcher 사용해 볼 수 있습니다 . 심지어 Android Studio와 통합됩니다. 내부적으로 ApktoolDex2Jar를 사용합니다 .
해당 도구를 독립적으로 사용할 수도 있습니다. Apktool은 apk를 디 컴파일하고 .dex 파일을 추출하여 Dex2Jar를 사용하여 jar로 변환 할 수 있습니다. JD-GUI 를 사용하여 Jar를 디 컴파일 할 수 있습니다 . 해당 도구를 사용하여 Java 코드를 볼 수 있습니다. 디 컴파일 된 코드와 실제 코드의 유사성은 보장 할 수 없지만. 시중 에는 일부 고급 코드 난독 화 도구가 있으며,이 코드를 해독하여 디 컴파일 / 이해하기가 어렵습니다. 예. 프로 가드


안녕하세요 Android Studio에서 DexPatcher를 사용하는 방법은 무엇입니까?
ravi152

주석으로 모든 것을 설명 할 수 없습니다. 구글은 당신의 친구입니다 :) 멋진 YouTube 튜토리얼도 있습니다.
Lakshmikant Deshpande

2

귀하의 안드로이드 APK 인 경우 귀하의 상태에 따라 :

조건 1 : 경화하지 않음 (Tencent Legu / Qihoo 360 / ...)

Choice1 : 온라인 서비스 사용

같은 :

www.javadecompilers.com 사용

이동:

apk에서 java 소스 코드로 자동 디코딩

단계 :

uploadapk 파일 + 클릭 Run+ 시간 대기 + 클릭 Download하여 zip + unzip 가져 오기->

sources/com/{yourCompanyName}/{yourProjectName}

예상되는 자바 소스 코드입니다

Choice2 : 스스로 디 컴파일 / 크랙

관련 도구를 사용하여 스스로 디 컴파일 / 크랙하십시오 :

사용 jadx/ jadx-gui변환 apkjava sourcecode

jadx-0.9.0.zip 을 다운로드 한 후 압축을 풉니 다 bin/jadx.

  • 명령 행 모드 :
    • 터미널 실행에서 : jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
    • output_folder는 디코딩 sources되고resources
      • sources/com/{yourCompanyName}/{yourProjectName} 당신의 예상입니다 java sourcecode
  • GUI 모드
    • 두 번 클릭하여 실행 jadx-0.9.0/bin/jadx-gui(Linux jadx-gui.sh/ Windows jadx-gui.bat)
    • apk파일 열기
    • 자동 디코딩됩니다-> 예상되는 Java 소스 코드를 참조하십시오
    • save all 또는 save as Gradle project

예 :

Condition2 : 강화 (Tencent Legu / Qihoo 360 / ...)

주요 방법 3 steps:

  1. apk/app to dex
  2. dex to jar
  3. jar to java src

상해:

1 단계: apk/app to dex

실행중인 앱에서 도구 ( FDex2/ DumpDex) 덤프 / 훅 아웃 (하나 또는 여러) dex파일 사용

단계 :

환경을 준비하다

dex실행중인 앱에서 덤프

  • 실행 FDex2후 APK 이름을 클릭하여 나중에 덱스를 캡처 / 훅 아웃 할 수 있습니다

  • (전화 / 에뮬레이터에서) 앱을 실행하십시오.
  • 전체 apk 리소스를 찾아서 복사하십시오. /data/data/com/yourCompanyName/yourProjectName
    • 루트 폴더 에는 일반적으로 여러 dex파일이 있습니다.

2 단계: dex to jar

도구 ( dex2jar)를 사용 하여 (특정한 응용 프로그램 논리를 포함하는) dex파일을 jar파일 로 변환 하십시오.

다운로드 dex2jar이 있어 dex-tools-2.1-SNAPSHOT.zip을 압축 해제 GOT, dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh다음,

sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex

예 :

dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar

3 단계 : jar to java src

도구 중 하나를 사용하십시오.

변환 jarjava src

jar에서 java src 변환 효과로 :

Jadx> Procyon> CRF>>JD-GUI

사용을 권장합니다 : Jadx/jadx-gui

단계 :

  • 두 번 클릭하여 실행 jadx-gui
  • dex파일 열기
  • File -> save all

예 :

내 보낸 자바 src :


더 자세한 설명은 온라인 전자 책 중국어 자습서를 볼 수 있습니다 .


2

안드로이드 스튜디오는 모든 APK 파일을 분석 할 수 있습니다.

1-빌드 메뉴에서 apk 옵션 분석을 선택하고 apk 파일을 선택하십시오. 2-이렇게하면 classes.dex 파일 및 기타 파일이 생성됩니다. 3-classes.dex를 클릭하면 폴더, 패키지, 라이브러리 및 파일 목록이 표시됩니다. 4-Android Studio 설정에서 "Dex to Jar"라는 플러그인을 설치하십시오. 5-추출한 프로젝트의 활동 파일을 클릭하고 빌드 메뉴에서 jar to dex를 선택하십시오.

결과적으로 Java 파일의 실제 코드가 생성됩니다.

건배.


1

가장 간단한 방법은 APK OneClick 디 컴파일러를 사용하는 것입니다. APK를 디 컴파일 및 디스 어셈블하는 툴 패키지입니다 (안드로이드 패키지).

풍모

  • 모든 기능은 Windows의 오른쪽 클릭 메뉴에 통합되어 있습니다.
  • APK 클래스를 Java 소스 코드로 디 컴파일하십시오.
  • smali 코드로 APK를 분해하고 리소스를 디코딩하십시오.
  • 마우스 오른쪽 버튼으로 클릭하여 APK를 전화에 설치하십시오.
  • smali 코드 및 / 또는 리소스를 편집 한 후 APK를 다시 컴파일하십시오. 재 컴파일하는 동안 :
  • PNG 이미지 최적화
  • APK 서명
  • Zipalign

요구 사항

JRE (Java Runtime Environment)가 설치되어 있어야합니다.

이 링크에서 다운로드 할 수 있습니다 Apk OneClick Decompiler

즐기세요.


1

가장 간단한 방법으로 다음을 발견했습니다.

  1. app.apk의 이름을 app.zip으로 바꿉니다 (확장자를 apk에서 zip으로 변경)
  2. zip 파일을 폴더로 추출
  3. JADX 도구를 사용 하여 classes.dex 파일에있는 소스 코드를 읽으십시오.

1

이를위한 앱이 있으며 일반적으로 몇 번의 클릭만으로 완료됩니다. https://github.com/Nuvolect/DeepDive-Android

  1. 앱을 선택하고 "설치된 앱"에서 앱을 선택하십시오. 없는 경우 APK를로드 할 수 있습니다.
  2. "Extract APK"를 선택하십시오
  3. "Unpack APK"를 선택하십시오
  4. "Jadx로 디 컴파일"을 선택하십시오. 기기의 속도에 따라 몇 초 또는 몇 분이 걸릴 수 있습니다

그런 다음 소스 코드를 찾아보고 elFinder를 사용하여 다른 컴퓨터로 다운로드하거나 Lucene을 사용하여 검색하십시오.

Jadx 외에도 CFR 및 Fernflower 디 컴파일러가 있습니다.


0

dex2jar가 페도라 31 랩톱에서 작동하지 않는 APK에 대해 작동하도록 며칠 동안 나를 미치게 만들었습니다. 이 python 3 스크립트는 몇 분 안에 트릭을 수행했으며 jd-gui를 설치하면 클래스 파일을 읽을 수있게 만들었습니다.

http://java-decompiler.github.io/

https://github.com/Storyyeller/enjarify

구체적으로, 여기 내가 실행 한 것이 있습니다.

# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*

# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify

# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build

# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc

이제 클래스 파일을 얻기 위해 다음을 럼주 할 수 있어야합니다.

$> enjarify yourapkfile.apk

그리고 jd-gui를 시작하려면 :

$> jd-gui

그런 다음 수업 파일을여십시오!



0

이 도구를 사용하십시오 http://www.javadecompilers.com/

그러나 최근에는 프로키온, CFR, JD, Fernflower, Krakatau, Candle 등 새로운 디 컴파일러가 시장 에 나왔습니다.

이 사이트에 제공되는 디 컴파일러 목록은 다음과 같습니다.

CFR- 무료, 소스 코드 없음, http://www.benf.org/other/cfr/ 저자 : Lee Benfield

매우 잘 업데이트 된 디 컴파일러! CFR은 Java 9 모듈, Java 8 람다, Java 7 String 스위치 등과 같은 최신 Java 기능을 디 컴파일 할 수 있습니다. 다른 JVM 언어의 클래스 파일을 Java로 다시 전환하는 것도 괜찮습니다!

JD- 비상업적 용도로만 무료, http://jd.benow.ca/ 저자 : Emmanuel Dupuy

2015 년에 업데이트되었습니다. Eclipse 및 IntelliJ에 대한 자체 시각적 인터페이스 및 플러그인이 있습니다. C ++로 작성되었으므로 매우 빠릅니다. Java 5를 지원합니다.

프로키온 -오픈 소스, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler 저자 : Mike Strobel

Fernflower- 오픈 소스, https://github.com/fesh0r/fernflower 저자 : Egor Ushakov

매우 유망한 분석 Java 디 컴파일러가 이제 IntelliJ 14의 필수 부분이되었습니다 ( https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler). ) 버전 6까지의 자바 지원 (주석, 제네릭, 열거 형)

JAD- 역사적인 이유로 만 제공됩니다. 무료, 소스 코드 없음, jad 다운로드 미러 저자 : Pavel Kouznetsov

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.