位置:首页 > 安全分类 > WEB安全
工具推荐 | GDA:中国首款现代交互式反编译器
简介(新版)
GDA 是一个完全用 C++ 编写的 Dalvik 字节码反编译器。与其他应用反编译器不同,GDA 不依赖于 Java VM,支持 APK、DEX、ODEX、OAT、JAR、AAR 和 CLASS 文件。
项目地址:https://github.com/charles2gan/GDA-android-reversing-Tool
简介:http://www.gda.wiki:9090/introducation.php
一、主窗口
打开GDA,将我们要分析的APK文件拖到软件UI上:
1.目标文件的基本信息;
2.DEX文件使用的API
3.查看DEX中的所有字符串;
4.查看所有方法使用的所有字符串;
5.提取DEX文件中的所有URL(Pro版本);
6.查看AndroidManifest文件;
7.可编辑的十六进制查看器;
8.恶意行为检测;
9.漏洞扫描(专业版);
10.隐私泄漏扫描(专业版);
11.展开权限,查看权限所属的模块/方法;
12.点击进入入口函数(方法);
13.连接Android设备进行内存转储;
14.搜索和访问历史记录,双击可查看;
15.目标文件中各元素的比例分布;
16.DEX头,点击“DexClass*”项显示相应头,每个色块代表不同的区域头。当鼠标在其上移动时,将显示提示。在偏移区域中单击鼠标右键并跳转到参考位置;
17.加壳的识别;
18.点击代码中的相关对象时,显示该对象的索引值;
19.点击代码中的相关对象时,会显示该对象的包名;
20.单击代码中的相关对象时,将显示该对象的名称。
二、快捷键
快捷键说明
快捷键描述F5 切换java和smali代码 F 通过数据流分析跟踪参数和返回值 X 交叉引用、定位调用者(字符串、类、方法、字段、Smali、Java) Esc/<-/Backspace 返回上次访问 -> 转至下一次访问 G 通过输入偏移量跳转到某个地方 N 重命名变量/方法/类名 S 按给定字符串搜索所有元素 C 注释。只支持Java代码 DoubleClick 双击method/str/field/class名称查看对象 M 将光标置于 Smali 代码行并按“M”键编辑指令 UP\bigtriangleup 按“向上”键访问树控件中的向上方法 Down\bigtriangledown 按“向下”键访问树控件中的向下方法 D 转储方法的二进制数据,仅支持Smali模式 Enter 编辑框修改生效 H 以十六进制显示数据 Ctrl+H 弹出搜索历史窗口 Ctrl+A 全选 Ctrl+C 复制 Ctrl+V 粘贴,仅适用于可编辑框 Ctrl+X 切 Ctrl+F 找出当前窗口的字符串 Ctrl+S 将修改保存到 GDA 数据库文件中 |
三、Android恶意软件静态分析示例
本节通过一个恶意软件示例文件介绍GDA的基本用法。
A.总结分析
总结分析就是对整个APK做一个简单的了解。下面是一个Android恶意软件的例子来说明GDA的用法。
- 首先,我们将恶意软件样本拖入 GDA。然后我们就可以看到它的基本信息了。
我们可以根据呈现的信息判断APK是否被加壳。如果 APK 未加壳,则 DexHeader 下方不会显示任何内容。
- 然后我们可以检查我们的APK的权限。正如我们在基础信息的底部看到的,APK 启用了很多危险的权限
e.g. READ_SMS, SEND_SMS, READ_CALL_LOG, READ_PHONE_STATE
等等。
- 通过点击工具栏中红色标记的按钮,我们可以查看APK的签名信息。
- 此外,
AndroidManifest
树形控件顶部的 可以引导您分析Activity, Service, Receive
和AndroidManifest.xml 中的其他配置信息。
- 接下来,我们可以点击树框中的
MalScan
来扫描 APK 的恶意行为。下图显示恶意软件有很多恶意操作。
如果我们想进一步分析方法会做什么,可以双击method@xxxxxx查看方法代码,比如点击"#Sending message:”下面的“[method@000197]: com.itcast.cn112.a.a”
。该方法下的代码将会如图显示。
当然,如果我们要分析 Smali 代码,只需按F5
。
从图中我们可以看出,这个方法会访问短信。
此外,我们还可以看到 DEX 使用的字符串和 API。AllStrings
将显示 DEX 中的所有字符串,并将AppStrings
通过方法代码显示引用的字符串。实际上,AppStrings 是一个更有用的字符串。string@
区域还支持交叉引用(X)、编辑(右键单击)和双击操作。
AllAPI的method@
区域支持交叉引用功能。
B、JAVA伪代码分析
这里主要展示一些java代码中的交互操作。下面简单介绍一下GDA的基本使用。
- 从入口点开始,点击入口按钮查看入口方法。
如果反编译内容太大,需要在当前代码中搜索感兴趣的关键字,可以按ctr+f启动搜索框。
现在,如果我们要标记已识别的方法、字段或类。我们可以重命名它们。例如,双击a.d()
将显示下图。很明显,它是用来记录信息的,所以我们将方法名重命名为'log',GDA会升级所有引用的位置。
然后,我们以相同的方式重命名所有可识别的方法。
如果我们想要做进一步的描述,可以使用注释(C)。
当我们需要分析当前方法的调用者时。我们可以通过交叉引用来查看它们。
当我们想知道在哪里使用字符串时。您可以将鼠标放在双引号之间并按 X 以查看参考方法。
至此,基本的使用已经完成,如有问题,欢迎留言。并欢迎报告错误。
四、辅助工具
1. XML 解码器
自行实现的解码功能可以绕过Anti-decoding技术:
2. 算法工具
该工具支持以下算法:
哈希算法: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.
alg-tool 接受 3 种类型的输入作为密钥、明文和密文。简单来说,1.我们可以直接输入字符串作为源数据,也可以2.输入“hex:”
如下图所示的二进制数据。3.我们可以双击文本框弹出文件对话框,然后选择一个文件作为输入。
3.Dumper
更多详情,请访问以下链接:https : //zhuanlan.zhihu.com/p/26341224
4.搜索工具(S)
上一篇: 通过DNSLOG回显验证漏洞
下一篇:漏洞挖掘典型场景和思路!