CTF-All-In-One/doc/1.7.4_android_tools.md
2018-08-05 17:43:10 +08:00

143 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 1.7.4 Android 常用工具
这里先介绍一些好用的小工具,后面会介绍大杀器 JEB、IDA Pro 和 Radare2。
## 常用工具
### smali/baksmali
地址:<https://github.com/JesusFreke/smali>
smali/baksmali 分别用于汇编和反汇编 dex 格式文件。
使用方法:
```text
$ smali assemble app -o classes.dex
$ baksmali disassemble app.apk -o app
```
当然你也可以汇编和反汇编单个的文件,如汇编单个 smali 文件,反汇编单个 classes.dex 等,使用命令 `baksmali help input` 查看更多信息。
baksmali 还支持查看 dex/apk/oat 文件里的信息:
```text
$ baksmali list classes app.apk
$ baksmali list methods app.apk | wc -l
```
### Apktool
地址:<https://github.com/iBotPeaches/Apktool>
Apktool 可以将资源文件解码为几乎原始的形式,并在进行一些修改后重新构建它们,甚至可以一步一步地对局部代码进行调试。
- 解码:
```text
$ apktool d app.apk -o app
```
- 重打包:
```text
$ apktool b app -o app.apk
```
### dex2jar
地址:<https://github.com/pxb1988/dex2jar>
dex2jar 可以实现 dex 和 jar 文件的互相转换,同时兼有 smali/baksmali 的功能。
使用方法:
```text
$ ./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 字节码。
使用方法:
```text
$ 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 反编译、汇编和反汇编。
- 反编译
```text
$ python2 Krakatau\decompile.py [-nauto] [-path PATH] [-out OUT] [-r] [-skip] target
```
- 汇编
```text
$ python2 Krakatau\assemble.py [-out OUT] [-r] [-q] target
```
- 反汇编
```text
$ 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图形界面