GJoy Dex Analysizer是一款Android反编译软件,这款软件支持apk、dex、odex、oat等类型的Android文件的反编译工作。这款软件提供了强大的静态分析功能,新版本已经支持apk多dex分析,由于是全部用C++写的,分析apk速度没的说,修改apk的能力还是有点弱。
在Android可执行文件反编译分析上,GDA摆脱了使用java速度慢的问题,完全采用C++完成核心解析功能,并且使用了字节码直接转java伪代码的解析方式,无需转换成smali汇编后在做反编译,大大提升了解析速度。
此外,该工具还提供了很多实用工具,如查壳功能、odex转dex、oat转dex、xml二进制解析器、算法工具、android设备内存dump等等功能,在交互式分析上,提供了字符串、方法、类和域交叉引用查询、调用者查询、搜索功能、注释功能、分析结果保存等等功能。
GDA3中重写了所有反编译器代码,从反汇编、数据流分析、中间语言优化、结构化分析等都做了重大改变,同时极大的优化DEX解析引擎、恶意行为检测引擎、查壳引擎,相比GDA1、GDA2,在分析速度、稳定性、使用体验方面都有极大的改善和提升。
一、主界面说明
打开GDA并且将你所要分析apk文件拖拽到软件界面上:
1.查看所有字符串;2.查看所有使用过的字符串;3查看所有API;4.查看AndroidManifest文件;5.十六进制浏览数据;6.可疑(恶意行为分析);7.漏洞静态扫描(尚待实现);8.展开权限并查看权限所属模块(方法);9.类及方法,如果出现多个DexClass*表示apk采用mulitdex技术。10、Dex头,没点击DexClass可展示相应的头,每个色块代表头部不同的区域,鼠标移动在其上面可以看到提示,每个偏移可右键跳转到偏移所在的数据区。11、申请的权限概览;12、搜索/访问记录,双击可查看历史访问;13、点击进入入口函数(method);14、连接android设备进行内存dump。
如果APP被加固处理,GDA会对加固进行自动识别,显示在Dex头和APK权限之间,如果没有被加固,则不显示。如图:
点击Entry按钮可以进入到APK的入口函数:
在java代码区,可以按F5查看smali汇编代码。
双击一个方法可以进入该方法,查看其代码,X交叉引用查看调用者。
二、快捷键说明
三、辅助工具
1.二进制XML解码
完全自主实现的解码,可绕过反解码技术,成功解析XML。
2.算法工具
实现加密解密功能,实现了如下算法:
Hash算法: md2 md4 md5 sha sha1 sha224 sha256 sha384 sha512
对称加密:des idea rc2 rc4 rc4-40 rc2-40 rc2-64 bf cast5 aes(128 192 256)及其相应的模式如ecb cbc ofb cfb,其他模式如(cfb1 cfb8)
非对称加密:RSA
编码算法:base62, base64
3.进程模块dump工具
具体使用参考如下链接:
https://zhuanlan.zhihu.com/p/26341224
4.搜索工具(S)
四、Android病毒静态分析实例
本节通过一个病毒样本文件来介绍GDA的基本使用方法。
A.概要分析
主要从整体上对APK做一个简单的了解和掌握,以下以一款Android病毒为例来介绍GDA的使用。
1.首先,可以直接将样本拖入GDA,非常快的我们能够看到分析主界面。我们根据主界面判断其是否有加固,如果有加固主界面会显示,如果没有显示代表没有加固。
2.然后可以检查看看该病毒开启了那些敏感权限,从主界面底部可以看到,该病毒开启了不少敏感权限。
3.我们还可以通过点击如下红色标记的工具栏按钮看到该APK的签名信息。
4.可以通过树形控件中AndroidManifest来分析该病毒所使用的Activity,Service,receive等信息。
5.接下来还可以通过树形框中的MalScan来了解该病毒大致的恶意行为。
可以看出该病毒具有很多恶意的操作。行为描述下面的是产生该种类型的恶意行为的实现方法。双击method@可以进入该方法中查看,比如点击进入第二” #读取联系人、短信等信息:”的[method@0001e5]: com.itcast.cn112.m.a
看smali比较费劲,按F5可以查看反编译的代码。如图
可以看出,这个方法中实现了短信箱的读取,具体方法的分析后面介绍。
6.此外概要分析时,还可以通过查看该APK所使用的字符串和API来做分析。其中AllStrings会获取该APK所有的字符串,而AppStrings只会获取APK有效类会用到的字符串,相对来说AppStrings是更有用的字符串。其中string@区域同样支持交叉引用(X),编辑(右键菜单),双击操作。
AllAPI的method@区域支持交叉引用的功能