apktool
功能:主要用于反编译项目中的资源文件,以及将字节码反编译成Smali语言
**下载地址:**ibotpeaches.github.io/Apktool/ins…
**运行环境:**Java 8
使用:
反编译
$ apktool d test.jar
// 反编译jar文件
$ apktool decode test.jar
// 反编译jar文件
$ apktool d test.apk
// 反编译apk文件
$ apktool decode test.apk
// 反编译apk文件
$ apktool d test.apk -o demo
// 反编译apk文件 指定输出目录
打包
$ apktool build test
// 打包jar文件,输出位置test/dist/
$ apktool b test
// 打包apk文件,输出位置test/dist/
$ apktool b .
// 打包apk文件 输出位置./dist
$ apktool b bar -o new_bar.apk
// 打包apk文件 指定输出位置
dex2jar
功能:将dex文件转为可阅读的jar文件
**下载地址:**github.com/pxb1988/dex…
**运行环境:**Java 8
使用:
$ d2j-dex2jar.sh test.dex
// 将dex文件转为jar文件(dex文件可以手动解压apk获取)
$ d2j-dex2jar.sh -f test.apk
// 将apk内的dex文件提取后转为jar文件
jd-gui
功能:用于阅读和修改jar文件或class文件
**下载地址:**java-decompiler.github.io
**运行环境:**Java 8(注意:不支持openJDK)
使用:
直接打开jar文件或class文件
jadx-gui
功能:用于阅读和修改dex文件,并且可以很方便的在java代码和Smali代码间切换
**下载地址:**github.com/skylot/jadx
**运行环境:**Java 8(注意:不支持openJDK)
使用:
直接打开dex文件
jbe
功能:编辑Java字节码
**下载地址:**set.ee/jbe
**运行环境:**Java 1.5+(注意:不支持openJDK)
使用:
打开class文件(File——Open class file)
左边可以看到该类的常量池(Constant Pool)、字段(Fields)、方法(Method)等信息
点击XXX方法,选择[0] Code查看该方法的字节码
右边可以看到方法的字节码,点击Code Editor可编辑字节码
jad
功能:反编译class文件
**下载地址:**www.javadecompilers.com/jad
**运行环境:**Java 1.5+(注意:不支持openJDK)
使用:
jad本身没有ui界面,所以为了方便使用,可以将其添加到系统path变量中,之后便可以直接使用jad命令进行反编译操作
$ jad test.class
操作成功后,会在当前class文件目录下生成一个同名的.jad文件,直接用文本编辑器打开即可进行阅读
luyten
功能:用于阅读和修改jar文件或class文件
**下载地址:**github.com/deathmarine…
**运行环境:**Java 1.8(注意:不支持openJDK)
使用:
直接打开jar文件或class文件
AndroidKiller
功能:集成了前面工具的所有功能,用于直接对apk文件进行反编译、修改、打包等
**下载地址:**www.pd521.com/thread-136-…
**运行环境:**Java 1.8、apktool
使用:
自带的是ShakaApktool,很久没有更新了,所以我们要更换为apktool,按照下图选择自己的apktool路径,参数选项可不填
直接点击打开,选择一个apk文件
工程信息窗口
左侧有apk的入口页面、以及版本信息、四大组件列表、权限信息等
右侧则是代码编辑窗口、日志信息、方法引用等
这里只演示基本使用,更多功能还请自行探索
IDA_Pro
功能:IDA Pro能够对so文件进行反汇编,从而将二进制代码转化为汇编语言,利用IDA Pro神奇的F5功能还能将汇编语言反编译成c/c++程序
**下载地址:**www.hex-rays.com/products/id…
**运行环境:**windows 7+、vc2013、vc2015
使用:
根据自己电脑的位数选择打开ida.exe或者ida64.exe,之后选择新建打开so文件
打开后进入工程页面
左侧可以看到函数名称,选中函数后,按下F5还可以查看c++伪代码
这里只演示基本使用,更多功能还请自行探索