1.7.4 Android 常用工具

    地址:https://github.com/JesusFreke/smali

    smali/baksmali 分别用于汇编和反汇编 dex 格式文件。

    使用方法:

    当然你也可以汇编和反汇编单个的文件,如汇编单个 smali 文件,反汇编单个 classes.dex 等,使用命令 查看更多信息。

    baksmali 还支持查看 dex/apk/oat 文件里的信息:

    1. $ baksmali list classes app.apk

    Apktool

    地址:https://github.com/iBotPeaches/Apktool

    Apktool 可以将资源文件解码为几乎原始的形式,并在进行一些修改后重新构建它们,甚至可以一步一步地对局部代码进行调试。

    • 解码:

      1. $ apktool d app.apk -o app
    • 重打包:

    dex2jar

    dex2jar 可以实现 dex 和 jar 文件的互相转换,同时兼有 smali/baksmali 的功能。

    使用方法:

    1. $ ./d2j-jar2dex.sh classes.dex -o app.jar
    2. $ ./d2j-jar2dex.sh app.jar -o classes.dex

    地址:https://github.com/Storyyeller/enjarify

    enjarify 与 dex2jar 差不多,它可以将 Dalvik 字节码转换成相对应的 Java 字节码。

    使用方法:

    1. $ python3 -O -m enjarify.main app.apk

    JD-GUI

    地址:https://github.com/java-decompiler/jd-gui

    JD-GUI 是一个图形界面工具,可以直接导入 .class 文件,然后查看反编译后的 Java 代码。

    CFR

    地址:http://www.benf.org/other/cfr/

    一个 Java 反编译器。

    用于 Java 反编译、汇编和反汇编。

    • 反编译

    • 汇编

      1. $ python2 Krakatau\assemble.py [-out OUT] [-r] [-q] target
    • 反汇编

      Simplify

      地址:https://github.com/CalebFenton/simplify

      通过执行一个 app 来解读其行为,然后尝试优化代码,使人更容易理解。

      Androguard

      地址:https://github.com/androguard/androguard

      Androguard 是使用 Python 编写的一系列工具,常用于逆向工程、病毒分析等。

      输入 可以打开一个 IPython shell,然后就可以在该 shell 里进行所有操作了。

      • a 表示一个 APK 对象
        • 关于 APK 的所有信息,如包名、权限、AndroidManifest.xml和资源文件等。
      • d 表示一个 DalvikVMFormat 对象
        • dex 文件的所有信息,如类、方法、字符串等。
      • 表示一个 Analysis 对象。
        • 包含一些特殊的类,classes.dex 的所有信息。
      • androarsc:解析资源文件
      • androauto:自动分析
      • androaxml:解析xml文件
      • androdd:反编译工具
      • androdis:反汇编工具