GDA是一个完全用C++编写的Dalvik字节码反编译器。与其他应用反编译器不同,GDA不依赖于JavaVM,支持APK、DEX、ODEX、OAT、JAR、AAR和CLASS文件。
一、主窗口
打开GDA,将我们要分析的APK文件拖到软件UI上:
二、快捷键
快捷键说明
快捷键描述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的用法。
我们可以根据呈现的信息判断APK是否被加壳。如果APK未加壳,则DexHeader下方不会显示任何内容。
如果我们想进一步分析方法会做什么,可以双击method@xxxxxx查看方法代码,比如点击"#Sendingmessage:”下面的“[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.算法工具
该工具支持以下算法:
哈希算法:md2md4md5shasha1sha224sha256sha384sha512
对称加密:desidearc2rc4rc4-40rc2-40rc2-64bfcast5aes(128192256),模式如ecbcbcofbcfb,其他模式如(cfb1cfb8)
非对称加密:RSA
编码算法:base62、base643.
alg-tool接受3种类型的输入作为密钥、明文和密文。简单来说,1.我们可以直接输入字符串作为源数据,也可以2.输入“hex:”如下图所示的二进制数据。3.我们可以双击文本框弹出文件对话框,然后选择一个文件作为输入。
武汉网盾科技有限公司Allrightsreserved
联系地址:武汉市洪山区光谷大道70号现代光谷世贸中心F栋7楼(光谷校区)武汉市东湖新技术开发区武大园路5-1号国家地球空间信息产业基地二期南主楼2单元12层(江夏校区)