安卓 反編譯工具


APK反編譯工具

反編譯工具

Java層反編譯

// dex/smali

dex2smali/smali2dex

dex2jar // dex/smali/jar/.class

// smali/java

Smali2Java

Smali2JavaUI

 

 

 

 

 

Java代碼反編譯工具

Smali2Java

    Smali文件轉java文件工具。

參考:

https://github.com/demitsuri/smali2java

 

Baksmali.jar

    Github開源項目,支持dex與smali文件的相互轉換。版本已經比較穩定,仍在更新中。

功能:.dex反編譯.smali文件,.smali文件編譯.dex文件。

反編譯.dex文件:

dex2smali

    java -jar baksmali-2.1.3.jar -o classout/ classes2.dex

smali2dex

    java -jar smali-2.1.3.jar classout/ -o classes.dex

 

v2.2.0

反編譯.apk文件:

    java -jar baksmali-2.2.0.jar disassemble apk-name.apk -o path

    java -jar baksmali-2.2.0.jar disassemble xxxv2.apk -o xxx-path 反編譯apk

    java -jar baksmali-2.2.0.jar disassemble xxx3.dex -o xxx3-path 反編譯dex

smali2dex

    java -jar smali-2.2.0.jar assemble path -o dex-name.dex

    java -jar smali-2.2.0.jar assemble xxx-path -o apk-name.apk 編譯apk

    java -jar smali-2.2.0.jar assemble xxx3-path -o dex-name.dex 編譯dex

Ref:

     https://bitbucket.org/JesusFreke/smali/downloads/

 

Apktool

    開源項目,可以對整個APK做反編譯,重新打包。APKkiller核心部分基於Apktool。版本持續更新,最新已經到2.3.0版本。

// 反編譯

apktool d test.apk

apktool d xxx.apk反編譯命令

// 重新打包

apktool b test

apktool b xxx-path 編譯

apktool if xxx.apk安裝框架 // ?

 

 

Ref:

     https://ibotpeaches.github.io/Apktool/

     https://ibotpeaches.github.io/Apktool/documentation/

     https://github.com/iBotPeaches/Apktool

     http://blog.csdn.net/ysc123shift/article/details/52985435

     http://blog.csdn.net/wolinghuanyun/article/details/52440989

     android 逆向工程apktool dex2jar jd-gui Jadx Smali2Java

ApkTool 下載

     apktool詳細使用方法 百度

     APKTOOL的使用心得 cnblogs

 

 

dex2jar

    Github開源項目,支持dex/jar/smali/.class文件之間的轉換。

dex-reader/writer: Read/write the Dalvik Executable (.dex) file. It has a light weight API similar with ASM.

d2j-dex2jar: Convert .dex file to .class files (zipped as jar)

smali/baksmali: disassemble dex to smali files and assemble dex from smali files. different implementation to smali/baksmali, same syntax, but we support escape in type desc "Lcom/dex2jar\t\u1234;"

other tools: d2j-decrypt-string

    命令解析

反編譯dex to jar

    d2j-dex2jar.bat classes2.dex

 

Ref:

     https://github.com/pxb1988/dex2jar

     apk編譯/反編譯工具baksmali和smali用法 新浪博客

     Android DEX安全攻防戰 dex解析

 

 

android-classyshark

    Executables (apk, multi-dex, jar) browser for Android, Java and Kotlin.反編譯解析能力還比較差,適合整個APK代碼架構分析。

    適用APK數據統計,如每個dex/包的方法數等。

Ref:

     https://github.com/google/android-classyshark

     http://blog.csdn.net/sp6645597/article/details/51301663

 

 

jadx

    jadx是一款Android反編譯gui工具,它支持apk、dex、jar、class、zip、aar等文件。jadx操作方便,反編譯后的代碼可讀性高,同時還擁有較完善的gui界面,除去混淆部分的代碼,jadx已經非常接近源代碼了。

    Smali解析為java效果比較好。

Ref:

     https://github.com/skylot/jadx

     http://www.jb51.net/softs/544428.html

 

 

Smali2Java

    Github開源項目,沒有提供jar包下載。解析率低,不建議使用。

參考:

https://github.com/demitsuri/smali2java

 

Smali2JavaUI

    Smali/jar文件轉java文件,版本較老,轉換率低。解析率低,不建議使用。

Ref:

     下載

 

 

 

 

JD-GUI

    主要功能:從.class/.jar文件查看java代碼。解析能力有限,已兩年多未更新。

參考:

    Java Decompiler JD-GUI-1.4.0

     https://github.com/java-decompiler/jd-gui

 

signapk.jar

    功能:修改后的apk加簽名。

    簽名命令:

    java -jar signapk.jar platform.x509.pem platform.pk8 test.apk test-signed.apk

    注意:簽名前刪除META-INF文件夾,否則會導致安裝包解析失敗。

參考:

    Apktool signapk.jar 可簽名 CSDN下載

 

 

異常問題:

Q1. Exception in thread "main" java.lang.UnsupportedClassVersionError

     較高版本的JDK編譯的java class文件試圖在較低版本的JVM上運行產生的錯誤。java -version和javac -version命令來查看版本是否一致。

     Test01:jdk1.7 => jdk1.8

     換成jdk1.8運行環境后,出現新問題:Exception in thread "main" com.beust.jcommander.MissingCommandException: Expected a command, got -o

參考:

     java編譯中出現了Exception in thread “main" java.lang.UnsupportedClassVersionError

     Unsupported major.minor version 52.0怎么處理

     JCommander

Q2.方法總數統計

     http://inloop.github.io/apk-method-count/

     http://www.methodscount.com/

     https://github.com/KeepSafe/dexcount-gradle-plugin

 

 

參考:

     JesusFreke/smali github

     JesusFreke smali jar下載

     apk反編譯工具(smali/baksmali) v2.1.3 使用示例

     Android對apk源碼的修改--反編譯+源碼修改+重新打包+簽名 CSDN

 

 

其他參考

     androguard

     androguard/androguard github

     Android平台APK分析工具包androguard的部署使用和原理分析 博客園

     Androguard基本使用方法 CSDN


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM