安卓 反编译工具

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-guiJadx Smali2Java

ApkTool 下载

     apktool详细使用方法 百度

     APKTOOL的使用心得 cnblogs

 

 

dex2jar

    Github开源项目,支持dex/jar/smali/.class文件之间的转换。

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

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

smali/baksmali: disassemble dex to smalifiles and assemble dex from smali files. different implementation tosmali/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用法 新浪博客

     AndroidDEX安全攻防战 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代码。解析能力有限,已两年多未更新。

参考:

    JavaDecompiler 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文件夹,否则会导致安装包解析失败。

参考:

    Apktoolsignapk.jar 可签名 CSDN下载

 

 

异常问题:

Q1. Exceptionin 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 acommand, got -o

参考:

     java编译中出现了Exception in thread “main"java.lang.UnsupportedClassVersionError

     Unsupportedmajor.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

     JesusFrekesmali jar下载

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

     Android对apk源码的修改--反编译+源码修改+重新打包+签名 CSDN

 

 

其他参考

     androguard

     androguard/androguardgithub

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

     Androguard基本使用方法 CSDN

你可能感兴趣的:(安卓,反编译工具)