programing

덱스를 자바 소스 코드로 압축 해제하는 방법은 무엇입니까?

mailnote 2023. 6. 10. 09:39
반응형

덱스를 자바 소스 코드로 압축 해제하는 방법은 무엇입니까?

안드로이드 덱스(VM 바이트코드) 파일을 어떻게 해당 자바 소스 코드로 압축 해제할 수 있습니까?

쉬워요

다음 도구를 가져옵니다.

  1. 덱스2jar - 덱스 파일을 jar 파일로 변환합니다.

  2. jd-gui를 사용하여 jar의 java 파일을 봅니다.

소스 코드는 덱스2jar가 일부 최적화를 수행하기 때문에 상당히 읽기 쉽습니다.

절차:

다음은 디컴파일 방법에 대한 절차입니다.

1단계:

test_apk-debug의 class.dex를 변환합니다.pk to test_apk-sys_test2jar.항아리

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk
d2j-dex2jar.sh -f -o output_jar.jar dex_to_decompile.dex

참고 1: Windows 기계에서 모든 것은.sh가 스립트다대체로 대체됩니다..bat:

참고 2: Linux/mac에서는 다음 사항을 잊지 마십시오.sh또는bash전체 명령은 다음과 같아야 합니다.

sh d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk 

참고 3: 또한 실행 권한을 다음에 추가해야 합니다.dex2jar-X.X디렉토리(예: sudo chmod -R +x dex2jar-2.0

덱스2jar 문서

2단계:

JD-GUI에서 병 열기

디컴파일된 소스

여기서는 달성하고자 하는 목표에 따라 크게 두 가지 경로를 선택할 수 있습니다.

Dalvik 바이트 코드(덱스)를 읽을 수 있는 Java 소스로 압축 해제합니다.프레드가 언급한 것처럼 덱스2jar와 jd-gui로 쉽게 이를 수행할 수 있습니다.결과 소스는 앱의 기능을 읽고 이해하는 데 유용하지만 100% 사용 가능한 코드를 생성하지 못할 가능성이 높습니다.즉, 소스를 읽을 수는 있지만 실제로 수정하고 재포장할 수는 없습니다.소스가 proguard로 난독화된 경우, 결과적으로 생성된 소스 코드는 훨씬 더 풀기 어려울 것입니다.

다른 주요 대안은 바이트 코드를 정확하게 이 목적을 위해 설계된 어셈블리 언어인 smali로 분해하는 것입니다.이를 위한 가장 쉬운 방법은 pk 툴을 사용하는 것입니다.pktool을 설치한 후에는 apk 파일을 가리키기만 하면 응용프로그램에 포함된 각 클래스에 대한 작은 파일을 얻을 수 있습니다.새 Java 소스에서 smali를 생성하여 smali를 읽고 수정하거나 클래스를 완전히 대체할 수 있습니다(이를 위해서는 .java 소스를 javac으로 .class 파일로 컴파일한 다음 Android의 dx 컴파일러로 .class 파일을 .dex 파일로 변환한 다음 baksmali(smali disassembler)를 사용하여 .dex 파일을 .smali 파일로 변환할 수 있습니다.이 질문에 기술된 바와 같이.여기에 바로 가기가 있을 수 있습니다.작업이 완료되면 apk 툴로 apk를 다시 쉽게 패키지화할 수 있습니다.apktool은 결과 apk에 서명하지 않으므로 다른 Android 애플리케이션과 마찬가지로 이를 처리해야 합니다.

작은 경로로 이동하는 경우 APK Studio를 사용해 보십시오. 이 IDE는 위의 단계 중 일부를 자동화하여 apk의 압축을 풀고 다시 컴파일하여 장치에 설치하는 데 도움이 됩니다.

간단히 말해서, 당신의 선택은 더 읽기 쉽지만 되돌릴 수 없는 Java로 분해하거나 읽기는 어렵지만 수정된 앱을 변경하고 다시 패키징하기 위해 훨씬 더 유연한 소형으로 분해하는 것입니다.어떤 접근 방식을 선택하느냐는 달성하고자 하는 목표에 따라 달라집니다.

마지막으로, 대담함에 대한 제안도 주목할 만합니다..dex 및 .apk 파일을 java.class 파일로 변환하여 일반적인 java 정적 분석 도구를 사용하여 분석할 수 있도록 하는 재타겟팅 도구입니다.

저는 실제로 여기에 가는 것을 추천합니다: https://github.com/JesusFreke/smali

BAKSALI는 DEX 파일을 위한 가장 뛰어난 리버스 엔지니어링 도구입니다.그것은 유명한 안드로이드용 ROM을 만든 Jesus Freke에 의해 만들어졌습니다.

때부터Dheeraj Bhaskar의 대답은 비교적 오래된 것입니다.

다음은 저의 최근(2019년) 답변입니다.

메인 로직

dexjava sourcecode에는 현재 두 가지 솔루션이 있습니다.

  • One Stepdexjava sourcecode
  • Two Step 번째 변환 제1회개자dexjar 번째 변환 제2의 종개자jarjava sourcecode

단계 한단계솔션루:dex京都까지 java sourcecode

도구들

과정

  1. jadx-0.9.0.zip을 다운로드하고 압축을 풉니다.bin에는 명령줄이 됩니다.jadx 버전 는 GUI 전jadx-gui버전을 하려면 두 번 하십시오. GUI 버전:jadx-gui

  1. 다열dex

그러면 Java 소스 코드를 표시할 수 있습니다.

  1. File->save as gradle project

그런 다음 Java 소스 코드를 받았습니다.


2단계 솔루션

1단계:dexjar

도구들

과정

다운로드 덱스2jar zip, 압축 풀기d2j-dex2jar.sh그러면:

  • apkjar:sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk
  • dexjar:sh d2j-dex2jar.sh -f ~/path/to/dex_to_decompile.dex

예:

➜  v3.4.8 /Users/crifan/dev/dev_tool/android/reverse_engineering/dex-tools/dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.huili.readingclub8825612.dex
dex2jar com.huili.readingclub8825612.dex -> ./com.huili.readingclub8825612-dex2jar.jar
➜  v3.4.8 ll
-rw-------  1 crifan  staff   9.5M  3 21 10:00 com.huili.readingclub8825612-dex2jar.jar
-rw-------  1 crifan  staff   8.4M  3 19 14:04 com.huili.readingclub8825612.dex

2단계:jarjava sourcecode

도구들

과정

데모 기모데Procyon코드로 :jar를 java 파일:

procyon-viler-0.5.34.jar 다운로드

그런 다음 구문을 사용합니다.

java -jar /path/to/procyon-decompiler-0.5.34.jar -jar your_to_decompile.jar -o outputFolderName

예:

java -jar /Users/crifan/dev/dev_tool/android/reverse_engineering/Procyon/procyon-decompiler-0.5.34.jar -jar com.huili.readingclub8825612-dex2jar.jar -o com.huili.readingclub8825612

편집기 VSCode를 사용하여 내보낸 소스 코드를 여는 방법은 다음과 같습니다.

결론

변환정도확:Jadx>Procyon>CRF>JD-GUI

용도: ( 사용법: (원스텝 솔루션의)Jadx


더 자세한 설명을 원하시면 제 온라인 중국어 전자책을 참조해주세요: 安用的和破解全安卓应解破▁for和全▁my安:.

프레드의 대답의 더 완전한 버전:

수동 방식

먼저 DEX의 모든 (컴파일된) 클래스를 JAR로 추출하는 도구가 필요합니다.
중국 학생이 만든 덱스2jar라는 것이 있습니다.

그런 다음 jd-gui를 사용하여 JAR의 클래스를 소스 코드로 압축 해제할 수 있습니다.
덱스2jar는 일부 최적화를 적용하기 때문에 결과 소스는 상당히 읽을 수 있어야 합니다.

자동 방식

APK Tool을 이용하실 수 있습니다.모든 클래스를 자동으로 추출합니다(.dex(), 리소스().asrc), 그런 다음 이진 XML을 사람이 읽을 수 있는 XML로 변환하고 클래스를 분해합니다.
분해는 항상 분해보다 더 강력합니다. 특히,
JARs가 Pro Guard로 난독화되었습니다!

APK 툴에게 APK를 디렉터리로 디코딩하고 원하는 것을 수정하라고만 하면 됩니다.
마지막으로 APK로 인코딩합니다.이상입니다.

중요: APK 도구 분해분해되지 않습니다.
생성된 코드는 Java 소스가 아닙니다.
하지만 당신은 그것을 읽을 수 있어야 하고, 심지어 당신이 jasmin에 익숙하다면 그것을 편집할 수 있어야 합니다.
Java 소스를 원하시면 Manual 방식으로 진행해주시기 바랍니다.

사용 시 때때로 코드가 깨지는 경우가 있습니다.dex2jar/apktool특히 루프에서.이를 피하기 위해, 달빅 바이트 코드를 자바 소스 코드로 압축 해제하는 jadx를 사용합니다..jar/.class로 제일 먼저 철하다.dex2jar를 사용한다고 (apktool은 덱스2jar를 사용합니다.)그것은 또한 오픈 소스이고 활발한 개발 중입니다.GUI 마니아들을 위한 GUI도 있습니다.해보세요!

사용한 적이 있습니다.

  1. 덱스2jar + jd-gui
  2. javadecompilers.com
  3. 향락을 즐기다
  4. Pktool

하지만 구글의 자체 도구를 능가하는 것은 없습니다.

Android Studio 2.x: build > apk 분석

Android Studio 3.0: APK 프로필 또는 디버그

아무도 이것을 언급하지 않았기 때문에, 한 가지 도구가 더 있습니다: DED 홈페이지.

사용 방법 및 몇 가지 설명을 설치합니다.설치.

이는 주요 시장 앱의 보안에 대한 상당히 흥미로운 연구에 사용되었습니다(실제로 관련된 것은 아닙니다. 궁금할 경우에만 해당).Android 애플리케이션 보안 설문 조사

APK 파일을 다운로드한 후 편집 가능한 Java 코드/문서를 가져오려면 다음 단계를 수행해야 합니다.

  1. 이렇게 하면 apk 파일을 zip으로 변환할 수 있습니다("저장" 옵션으로 다운로드를 시작하지 않고 "다른 이름으로 저장"하고 확장자를 .zip으로 언급합니다). APKTOOL을 피할 수 있습니다...
  2. zip 파일을 추출하면 파일 이름.dex.를 찾을 수 있으므로 이제 덱스 -> .class를 변환해야 합니다.
  3. 이를 위해서는 "dx2jar"가 필요합니다. (해동 후 http://code.google.com/p/dex2jar/ 에서 다운로드할 수 있습니다. 명령 프롬프트에서 [D:\dex2jar-0.09>dex2jar some filename.dx]와 같이 언급해야 합니다. (일부 filename.dll은 덱스2jar를 보관하는 동일한 폴더 안에 있어야 합니다.)
  4. http://www.viralpatel.net/blogs/download/jad/jad.zip 에서 jad를 다운로드하여 추출합니다.압축이 풀리면 "jad.exe"와 "Readme"와 같은 두 개의 파일을 볼 수 있습니다.txt" (때로는 "jad.exe" 대신 "jad.txt"가 있을 수 있으므로 실행할 확장명을 .exe로 변경하십시오.)
  5. 마지막으로 명령 프롬프트에서 [D:\jad>jad -sjava yourfilename.class]와 같이 언급해야 클래스 파일이 편집 가능한 Java 문서로 구문 분석됩니다.

안드로이드 리버스 엔지니어링이 가능합니다.다음 단계에 따라 pk 파일에서 .java 파일을 가져옵니다.

1단계. 덱스2jar 사용

  • .apk 파일에서 .jar 파일 생성
  • 명령:dex2jar sampleApp.apk

2단계. JD-GUI를 사용하여 .jar 압축 풀기

  • .class 파일을 압축 해제합니다. 즉, apk에서 난독화된 .vmdk를 다시 가져올 것입니다.

Dedexer를 사용하여 다음을 분해할 수 있습니다..dex을 달빅 달빅 바이트코드)에 저장합니다..ddx).

제가 알기로는 자바로 디컴파일하는 것은 불가능합니다.
당신은 여기에서 달빅 바이트코드에 대해 읽을 수 있습니다.

패키지를 있습니다.androguard:

Description-en: full Python tool to play with Android files
 Androguard is a full Python tool to play with Android files.
  * DEX, ODEX
  * APK
  * Android's binary xml
  * Android resources
  * Disassemble DEX/ODEX bytecodes
  * Decompiler for DEX/ODEX files

해당 패키지 설치:

sudo apt-get install androguard python-networkx

DEX 파일 압축 풀기:

$ androdd -i classes.dex -o ./dir-for-output

추출classes.dexApk + 디컴파일에서:

$ androdd -i app.apk -o ./dir-for-output

Pk 파일은 Java 아카이브(JAR)에 불과하며, 다음을 통해 아카이브에서 파일을 추출할 수 있습니다.

$ unzip app.apk -d ./dir-for-output

대부분의 답변이 게시된 이후로 많은 것이 바뀌었습니다.최근에는 다음과 같은 GUI를 사용하는 간편한 도구가 많이 있습니다.

APK Easy Tool for Windows (GUI tool, friendly)
Bytecode Viewer - APK/Java Reverse Engineering Suite
URET Android Reverser Toolkit

XDA Developers 포럼에서 찾을 수 있는 가장 좋은 장소입니다.

JADX를 사용해 볼 수도 있습니다(https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler), 이것은 DEX 압축 해제를 위한 완벽한 도구입니다.

그리고 네, (내:0) 새로운 사이트 http://www.javadecompilers.com/apk/ 에서도 온라인으로 이용이 가능합니다.

이 작업은 다음 5단계로 수행할 수 있습니다.

이 보석은 필요한 도구를 설치할 때도 자동으로 이러한 작업을 수행합니다.

  1. pk 파일을 zip으로 변환
  2. 파일의 압축을 풉니다.
  3. 클래스를 추출합니다.
  4. 덱스를 jar로 사용하여 class.dll을 jar 파일로 변환합니다.
  5. jadx gui를 사용하여 jar 파일을 java 소스 코드로 엽니다.

Android 앱을 가장 쉽게 압축 해제할 수 있는 방법은 Playstore에서 ShowJava라는 이름의 앱을 다운로드하는 것입니다. 앱 목록에서 압축 해제해야 하는 앱을 선택하기만 하면 됩니다.앱을 디컴파일하기 위해 사용할 수 있는 세 가지 다른 디컴파일러가 있습니다. 즉, -

CFR 0.110, JaDX 0.6.1 또는 FernFlower(분석 디컴파일러).

덱스2jar를 다운로드하지 않으려면 python 스크립트를 사용하여 apk를 jar 파일로 압축 해제합니다.그런 다음 jd-gui로 읽습니다.

언급URL : https://stackoverflow.com/questions/1249973/how-to-decompile-dex-into-java-source-code

반응형