diff --git a/doc/1.7.4_android_tools.md b/doc/1.7.4_android_tools.md index f94ffeb..c408461 100644 --- a/doc/1.7.4_android_tools.md +++ b/doc/1.7.4_android_tools.md @@ -1,10 +1,11 @@ # 1.7.4 Android 常用工具 -- [smali/baksmali](#smalibaksmali) - +这里先介绍一些好用的小工具,后面会介绍大杀器 JEB、IDA Pro 和 Radare2。 #### smali/baksmali -smali/baksmali 分别用于汇编和反汇编 dex 格式文件。地址:https://github.com/JesusFreke/smali +地址:https://github.com/JesusFreke/smali + +smali/baksmali 分别用于汇编和反汇编 dex 格式文件。 使用方法: ``` @@ -19,3 +20,96 @@ baksmali 还支持查看 dex/apk/oat 文件里的信息: $ baksmali list classes app.apk $ baksmali list methods app.apk | wc -l ``` + +#### Apktool +地址:https://github.com/iBotPeaches/Apktool + +Apktool 可以将资源文件解码为几乎原始的形式,并在进行一些修改后重新构建它们,甚至可以一步一步地对局部代码进行调试。 + +- 解码: + ``` + $ apktool d app.apk -o app + ``` +- 重打包: + ``` + $ apktool b app -o app.apk + ``` + +#### dex2jar +地址:https://github.com/pxb1988/dex2jar + +dex2jar 可以实现 dex 和 jar 文件的互相转换,同时兼有 smali/baksmali 的功能。 + +使用方法: +``` +$ ./d2j-jar2dex.sh classes.dex -o app.jar + +$ ./d2j-jar2dex.sh app.jar -o classes.dex +``` + +#### enjarify +地址:https://github.com/Storyyeller/enjarify + +enjarify 与 dex2jar 差不多,它可以将 Dalvik 字节码转换成相对应的 Java 字节码。 + +使用方法: +``` +$ python3 -O -m enjarify.main app.apk +``` + +#### JD-GUI +地址:https://github.com/java-decompiler/jd-gui + +JD-GUI 是一个图形界面工具,可以直接导入 .class 文件,然后查看反编译后的 Java 代码。 + +#### CTF +地址:http://www.benf.org/other/cfr/ + +一个 Java 反编译器。 + +#### Krakatau +地址:https://github.com/Storyyeller/Krakatau + +用于 Java 反编译、汇编和反汇编。 + +- 反编译 + ``` + $ python2 Krakatau\decompile.py [-nauto] [-path PATH] [-out OUT] [-r] [-skip] target + ``` +- 汇编 + ``` + $ python2 Krakatau\assemble.py [-out OUT] [-r] [-q] target + ``` +- 反汇编 + ``` + $ python2 Krakatau\disassemble.py [-out OUT] [-r] [-roundtrip] target + ``` + +#### Simplify +地址:https://github.com/CalebFenton/simplify + +通过执行一个 app 来解读其行为,然后尝试优化代码,使人更容易理解。 + +#### Androguard +地址:https://github.com/androguard/androguard + +Androguard 是使用 Python 编写的一系列工具,常用于逆向工程、病毒分析等。 + +输入 `androlyze.py -s` 可以打开一个 IPython shell,然后就可以在该 shell 里进行所有操作了。 +```python +a, d, dx = AnalyzeAPK("app.apk") +``` +- `a` 表示一个 `APK` 对象 + - 关于 APK 的所有信息,如包名、权限、AndroidManifest.xml和资源文件等。 +- `d` 表示一个 `DalvikVMFormat` 对象 + - dex 文件的所有信息,如类、方法、字符串等。 +- `dx` 表示一个 `Analysis` 对象。 + - 包含一些特殊的类,classes.dex 的所有信息。 + +Androguard 还有一些命令行工具: +- androarsc:解析资源文件 +- androauto:自动分析 +- androaxml:解析xml文件 +- androdd:反编译工具 +- androdis:反汇编工具 +- androgui:图形界面