最快且最强大的安卓反编译器(原生工具,无需Java VM即可运行),支持APK、DEX、ODEX、OAT、JAR、AAR和CLASS文件。具备恶意行为检测、隐私泄露检测、漏洞检测、路径求解、加壳检测、变量追踪、去混淆、Python和Java脚本、设备内存提取、数据解密与加密等功能。

GDA是一个用C++实现的强大的Dalvik字节码反编译器,具有分析速度快、内存和磁盘消耗低、反编译apk、dex、odex、oat、jar、class、aar文件能力强的优点。
GDA是完全原生的软件,无需任何安装和Java虚拟机即可运行,在任何新的Windows系统和虚拟机系统中都可以正常工作,无需额外配置。GDA反编译器项目始于2013年,首个版本1.0于2015年在**GDA官网**发布。
GDA也是一个强大且快速的反向分析平台。它不仅支持基本的反编译操作,还具备许多出色的特性,比如恶意行为检测、隐私泄露检测、漏洞检测、路径求解、加壳识别、变量追踪分析、反混淆、Python和Java脚本、设备内存提取、数据加解密等。
所有特性如下:
𝕬 交互操作:
1. 字符串、类、方法和字段的交叉引用;
2. 搜索字符串、类、方法和字段;
3. Java代码注释;
4. 重命名方法、字段和类;
5. 将分析结果保存到GDA数据库文件中。
...
𝕭 辅助分析工具:
1. 从ODEX提取DEX;
2. 从OAT提取DEX;
3. XML解码器(组件过滤器);
4. 算法工具(支持滚动加密和几乎所有流行的加密算法);
5. 设备内存转储(转储so、odex、dex、oat文件);
6. 路径求解;
7. 静态漏洞扫描器;
...
𝕮 优秀特性:
1. 全新的C++ Dalvik反编译器,带有友好的图形界面。
2. 加壳识别。
3. 支持多DEX。
4. 反混淆。
5. 基于API链的恶意行为扫描。
6. 基于栈状态机和动态规则解释器的静态漏洞扫描器。
7. 污点分析以预览变量的行为。
8. 污点分析以追踪变量的来源。
9. 带交叉引用的API视图。
10. 深层URL提取。
11. 权限与模块关联。
12. APK取证分析。
13. 双反编译器模式。
14. 智能重命名。
15. 设备内存数据转储,通过内存搜索转储DEX文件。
16. 支持Frida钩子并调用选定的方法或类。
17. 隐私泄露扫描。
18. 敏感信息提取。
19. 多DEX合并。
20. 基于低级中间表示(LIR)的路径求解。
21. 垃圾指令清除。
22. 支持调用图视图。
23. Smali指令修补、APK重打包和安装。
24. 支持子类和父类视图。
25. 支持字符串翻译。
...
𝕲𝕯𝕬 快捷键
无需安装,双击可执行文件即可使用。 注意: 这不是一个开源项目,至少在短期内不是。您可以在此处使用免费工具和一些开源脚本。
出于版权保护,GDA由授权的VMP保护,这可能导致某些杀毒软件误报。请忽略或将GDA加入白名单。GDA没有任何恶意行为。
GDA嵌入了ADB和gdump(用于转储设备内存数据),以及漏洞规则、源-污点规则、API指纹等。因此,您会在%APPDATA%/GDA目录下看到一些文件。这种释放其他可执行文件的行为也可能被某些杀毒软件识别为病毒。
仅支持Windows
只需将文件拖入GDA即可完成。
如果您的文件是.jar/.class/.aar文件,则需要Java支持dx工具。请确保Java正常工作。
当分析的jar文件过大时,可能需要较长时间,请耐心等待。
>gda.exe
-sh src_file --> 启动Shell
-sv src_file port --> 启动服务器
-h --> 帮助
------------------------------------------------------------
>gda.exe -h
Usage:gda.exe [option] [apk_file] [-o output_file]
option:
-h 帮助
-x 显示AndroidManifest.xml
-p 应用包名
-P 权限
-i APK基本信息
-a 攻击面
-k 加壳
-s 所有字符串
-S 被引用的字符串
-c 证书信息
-d 反编译所有代码
------------------------------------------------------------
>gda.exe -sv text.apk 12345
File Loading...
GDA Server listening on port 12345...
>client_gda.py help
------------------------------------------------------------
>gda -sh test.apk
>
>
GDA Shell >help
subcmd [-args]... [-t filter_string]
help --> shell command help
set -o file--> set output file
exit/q --> to exit
axml --> content of androidmainfest.xml
binfo --> apk base info
pname --> apk package name
permission --> permissions of APP
header n --> header of the n-st dex file
attsf --> attacksurface
packer --> packer
cert --> certifacate
appstr --> strings referenced by methods
malscan --> malcious behavior
sensinf --> sensitive infos
interface --> list interface classes
uri --> url,path etc.
native --> list native methods
api --> list api methods
listm cname--> list the methods of class(dot)
sclass cidx--> list subclasses by class index(hex)
pclass cidx--> list parent class by class index(hex)
dasm option--> disasembly a method
option: @type(e.g., dasm method@0045F0)
-n name(signature name,e.g.,"Lcom/base/Binary;->add(Lcom/base/Binary;)V")
dec option--> decompile a method or class,
option: @type (class/method type), e.g., dec method@21f
-c[-m] name(class/method signature name, e.g. , "Lcom/base/Binary;")
-a filepath(decompile the all classes)
find option--> search object by name(match partial/regex)
option: -c[-m][-M][-d][-s][-i][-a] name, e.g., find -C Frame (regex:~"Frame.*")
|-c(match class name) |-C(match class name with package)
|-m(match method name) |-M(match method name with package)
|-d(match field name) |-i(match api method name)
|-s(match string) |-a(match all[classes,methods,field and strings]
xref option --> search cross-reference of object
option(1): @type (method/class/field/string type), e.g. ,xref string@22e
option(2): -c[-m][-M][-d][-s][-i][-a] name(match partial), e.g. ,xref -m send
|-c(xref of class name) |-s(xref of string)
|-m(xref of method name) |-r(xref of resource name)
|-f(xref of field name) |-a(xref of all[classes,methods,field and strings]
技能示例:
恶意软件分析示例:
仅支持GDA3.75+版本,其他版本请勿使用此主题文件。使用方法:点击菜单文件->导入颜色配置,选择一个主题文件并重启GDA。

| 快捷键 | 描述 |
|---|
| F5 | 在Java和Smali之间切换,再次按返回Java |
| F | 通过数据流分析跟踪参数和返回值 |
| X | 交叉引用,定位调用者(字符串、类、方法、字段) |
| Esc/◄/Backspace | 返回到上一次访问 |
| ► | 前进到下一次访问 |
| G | 通过输入偏移量跳转到某处 |
| N | 重命名变量/方法/类名 |
| S | 通过给定字符串搜索所有元素 |
| C | 注释。仅支持Java代码 |
| 双击 | 光标位于方法/字符串/字段/类上,双击访问对象 |
| M | 光标位于Smali行,按'M'键编辑指令 |
| ▲ 上 | 按'上'键访问树控件中的上一个方法 |
| ▼ 下 | 按'下'键访问树控件中的下一个方法 |
| D | 转储方法的二进制数据,仅支持Smali窗口 |
| Enter | 编辑框的修改生效 |
| H | 以十六进制显示数据 |
| Ctr+H | 弹出搜索历史窗口 |
| Ctr+A | 全选 |
| Ctr+C | 复制 |
| Ctr+V | 粘贴,仅用于可编辑框 |
| Ctr+X | 剪切 |
| Ctr+F | 查找代码区域中的字符串 |
| Ctr+S | 将修改保存到GDA数据库文件中 |