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的使用心得 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怎么处理
Q2.方法总数统计
http://inloop.github.io/apk-method-count/
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