26款优秀的Android逆向工程工具
工欲善其事必先利其器,好的 Android 逆向工程工具在逆向破解工程中起到事半功倍的作用。
1. SMALI/BAKSMALI
SMALI/BAKSMALI 是一个强大的 apk 文件编辑工具,用于 Dalvik 虚拟机(Google 公司自己设计用于 Android 平台的虚拟机)来反编译和回编译 classes.dex。其语法是一种宽松式的 Jasmin/dedexer 语法,而且它实现了 .dex 格式所有功能(注解,调试信息,线路信息等)。
下载地址:传送门
2. ANDBUG
Andbug 是一款针对 Android 平台的 Dalvik 虚拟机的调试工具,工具基于 jdwp 协议,使用了 python 封装,其灵活性和可定制性对逆向工程师和开发人员而言可谓是神器级别的安卓安全工具。它与 Android 的 Eclipse 插件调试使用相同的接口,其 Java 调试线协议(JDWP)和 Dalvik 调试监视器(DDM)允许用户监视 Dalvik 虚拟机,检查进程状态。
不同于谷歌自己的 Android 软件开发工具包调试工具,AndBug 不要求源代码。但是,它需要使用 python 封装,因为对于大多数重要的任务,它需要使用一个脚本断点(scripted breakpoints)的概念,称为“hooks”。
下载地址:传送门
3. ANDROGUARD
androguard (也称 Android guard) 是 Android 应用程序的逆向工程,提供恶意软件分析等功能。其特征为:
使用 DAD 作为反编译器;
可以分析恶意软件;
主要由 Python 编写;
支持可视化;
androguard 支持:
DEX, ODEX;
APK;
Android 的二进制 XML;
Android 资源文件;
分解的 DEX/ODEX 字节;
DEX/ODEX 文件反编译程序;
下载地址:传送门
4. APKTOOL
APKTool 是 GOOGLE 提供的 APK 编译工具,能够反编译及回编译 apk,同时安装反编译系统 apk 所需要的 framework-res 框架,清理上次反编译文件夹等功能。它可以完整解包 APK,解包后你可以看到 APK 里面的声明文件、布局文件、图片资源文件、由 dex 解包出来的 smali 文件、语言文件等。如果你要汉化、修改界面、修改代码的话,apktool 可以帮你一站式完成。
特征:
反编译资源文件到原始格式(包括 resources.arsc,classes.dex,9.png 以及 XML 等);
将解码资源重建回二进制 APK / JAR;
组织和处理依赖于框架资源的 APK;
Smali 调试(2.1.0 中移除,被 IdeaSmali 取代);
协助重复性任务;
下载地址:传送门
5. AFE
AFE(Android Frameworkfor Exploitation)是一个开源项目,运行在 Unix-based 的操作系统中,能够用来证明 Android 操作系统中存在安全漏洞,它还表明 Android 僵尸网络是能够存在的。使用 AFE 能够非常容易的自动创建一个 Android 平台的恶意软件,发现应用软件的漏洞(例如 Leaking Content Providers,Insecure FileStorage,Directory Traversal 等),以及在受感染的设备上执行任意命令。
AFE 包含两个部分,PC 端(以下称为 AFE)和手机端(以下称为 AFEServer)。AFE 大部分是完全使用 Python 编写的。AFE 是可扩展的,可以自由添加其他的模块或者将已有的工具移植到 AFE 框架下。AFEServer 是一个在手机上运行的 Android 应用,用来和 AFE 的 Python 界面进行连接,执行 AFE 发送到手机的命令。
功能:
完善的命令行界面;
发现应用漏洞;
自动化创建恶意应用;
下载地址:传送门
6. BYPASS SIGNATURE AND PERMISSION CHECKS FORIPCS
该工具通过使用 Cydia Substrate 为 IPCs 提供绕过签名和权限检查服务。
关于 Cydia Substrate
Cydia Substrate 是一个代码修改平台。它可以修改任何主进程的代码,不管是用 Java 还是 C/C++(native 代码)编写的。
下载地址:传送门
7. ANDROID OPENDEBUG
该工具利用 Cydia Substrate 将所有的应用程序在设备上运行;一旦安装任意应用程序就会有一个 debugger 连接到它们。
注意:该工具只能在测试设备中使用!
下载地址:传送门
8. DARE
Dare 是宾州大学计算机系发布的 apk 逆向工程工具,可以将 Android 系统中使用的 apk 文件反编译为 JavaClass 文件,这些 Class 文件随后可以通过现有的 Java 工具(包括反编译)进行处理。目前支持 Linux 和 Mac OS X 中使用。
下载地址:传送门
9. DEX2JAR
dex2jar 是一个能操作 Android 的 dalvik(.dex) 文件格式和 Java 的 (.class) 的工具集合。包含以下几个功能
dex-reader/writer:用于读写 DalvikExecutable (.dex) 文件格式. 包含一个简单的 API(与 ASM 相似);
d2j-dex2jar:执行 dex 到 class 的文件格式转换;
smali/baksmali:与 smali 工具功能一致,但是对中文更友好;
其他工具:字符串解密
下载地址:传送门
10. ENJARIFY
Enjarify 是由 Google 推出的一款基于 Python3 开发,类似 dex2jar 的反编译工具,它可以将 Dalvik 字节码转换成相对应的 Java 字节码,有比 dex2jar 更优秀的兼容性,准确性及更高的效率。
下载地址:传送门
11. DEDEXER
Dedexer 是一款反编译 dex 文件的开源工具。特征包含:
不需要在 android 模拟器中运行;
能够将 dex 文件按照 java 源代码 package 的目录结构建好了目录,每个 class 文件对应一个 ddx 文件;
可作为像 jasmin 一样的反编译引擎;
下载地址:传送门
12. FINO
一款 Android 动态分析工具。
下载地址:传送门
13. INDROID
该项目的目的是证实在 nix 系统 a.k.a ptrace 函数上的一个简单的调试功能可以被恶意软件滥用,在远程进程中注入恶意代码。Indroid 为基于 ARM 的 nix 设备提供创建远程线程(CreateRemoteThread)。
如果你想更深入地了解该框架,可以点击如下链接:
观看 Defcon 19 相关视频:传送门
查看报告详情:传送门
CreateRemoteThread 是创建一个在其它进程地址空间中运行的线程 (也称创建远程线程)。
14. INTENT SNIFFER
Intent Sniffer 工具可以在任何运行谷歌 Android 操作系统的设备上使用。在 Android 平台中,Intent 是应用程序之间进行通信的最常用的方式之一,Intent Sniffer 工具实现监控运行时路由的广播 Intent,也就是在系统上的应用程序之间发送的 Intent。它并不监控显式广播的 Intent,而是默认为(大多数情况下)无优先权的广播。
该工具也能够针对那些基于应用反射和动态审查安装程序的 Intent 来动态升级扫描的 Action 和 Category。
下载地址:传送门
15. INTROSPY
Introspy 是一款黑盒测试工具,帮助我们理解 Android 应用程序在运行时的行为,协助我们识别潜在的安全问题。
下载地址:传送门
16. JAD
JAD 是一款 Java 反编译工具,可以通过命令行把 Java 的 class 文件反编译成源代码。
下载地址:传送门
17. JD-GUI
JD-GUI 是一个独立的显示“.class” 文件 Java 源代码的图形用户界面工具。用户可以使用 JD-GUI 浏览和重建源代码的即时访问方法和字段,以代码高度方式来显示反编译过来的代码。
下载地址:传送门
18. CFR
CFR(Class File Reader),Java 反编译器,支持 Java 8 的 lamda 表达式,Java 7 的字符串转换等,开发者为 LeeBenfield。
下载地址:传送门
19. KRAKATAU
Krakatau 开发者为 Storyyeller,目前主要包含三个工具 ——java 类文件的反编译和反汇编工具,创建类文件的汇编工具。
下载地址:传送门
20. PROCYON
Java 反编译器和元编程框架 Procyon 可以在反编译工具中立足,显然是具有其独到优势的。它有进行控制流分析,以及类型推断,也支持 java8 特性,其开发者为 Mike Strobel。
下载地址:传送门
21. FERNFLOWER
Fernflower 是一个对 Java 程序进行反编译分析的利器。目前正处于开发阶段,如有 bug 报告和改进建议可发送邮件至 fernflower.decompiler@gmail.com
下载地址:传送门
22. REDEXER
Redexer 是 Dalvik 字节码(用于安卓 APP)分析框架,它是一套基于 OCaml 的实用工具,帮助程序员解析,操作 Dalvik 虚拟机。Redexer 由来自马里兰大学帕克分校的 PLUM 组织开发完成,主要作者是:Jinseong Jeon,Kristopher Micinski 以及 Jeff Foster。
关于 OCaml
OCaml 是 Caml 编程语言的主要实现,由 XavierLeroy,Jérme Vouillon,Damien Doligez,Didier Rémy 及其他人于 1996 年创立。
下载地址:传送门
23. SIMPLIFY 安卓反混淆工具
Simplify 安卓反混淆工具实际上是通过执行一个 APP 来解读其行为,随后尝试通过优化代码来实现行为一致,但是更容易被人理解的目的。每一种优化类型都是非常简单通用的,所以无论用的是什么特殊类型的混淆技术都没关系。其主要由 3 部分组成:smalivm,simplify 以及 demo app。
下载地址:传送门
24. BYTECODE VIEWER
Bytecode Viewer 是一个高级的轻量级 Java 字节码查看器,GUIProcyon Java 反编译器, GUI CFR Java 反编译器, GUI FernFlower Java 反编译器, GUI Jar-Jar, Hex 查器看, 代码搜索器, 调试器等。
这款开源工具完全采用 Java 编程语言进行开发。这款工具由 Konloch 设计并开发,目前也主要是 Konloch 正在维护这一开源项目。
在这款工具中,还设计有一个插件系统,它可以允许你与加载的类文件进行交互。比如说,你可以写一个字符串的反混淆工具,恶意代码搜索器,或者其他的一些你所能想到的东西。
你不仅可以使用一个他人预先编写完成的插件,而且你也可以使用你自己写的插件。不仅如此,它还支持使用 Groovy 脚本,Python 脚本,以及 Ruby 脚本。当插件状态被激活之后,它会将每一个单独的类文件加载进 BCV 中,这样一来,用户就可以使用 ASM 来控制这些加载的类文件了。
下载地址:传送门
25. RADARE2
radare2 是一款开放源代码的逆向工程平台,它可以反汇编、调试、分析和操作二进制文件。
主要特点:
多平台多架构的;
高度脚本;
十六进制编辑器;
IO 包裹;
文件系统支持;
调试器支持等;
下载地址:传送门
26. JEB FOR ANDROID
JEB 是一个功能强大的为安全专业人士设计的 Android 应用程序的反编译工具。用于逆向工程或审计 APK 文件,可以提高效率减少许多工程师的分析时间。
特征表现为:
全面的 Dalvik 反编译器;
交互性;
可全面测试 APK 文件内容;
多平台(支持 Windows, Linux 和 Mac 等操作系统)
官网地址:传送门
下载地址:传送门
*原文链接:hackerlists*、米雪儿编译,转载自 FreeBuf 黑客与极客(FreeBuf.COM)