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报告和改进建议可发送邮件至[email protected]
下载地址:传送门
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等操作系统)
官网地址:传送门
下载地址:传送门