GDA: 简洁,快速,强大的交互式反编译器 v3.82

GDA是一款由本人对反编译理论的长期研究和实践而形成的全交互式反编译器,中国第一款也是唯一一款全交互式反编译器。简洁、轻便、快速的交互式Android反编译分析工具,无需安装,也无需java和android sdk环境支持。支持apk、dex、odex、oat、jar、aar、class文件的反编译分析,GDA中包含多个由本人独立研究的高速分析引擎: 反编译引擎、漏洞检测引擎、恶意行为检测引擎、污点传播分析引擎、反混淆引擎、apk壳检测引擎等。

在Android可执行文件反编译分析上,GDA摆脱了使用java速度慢的问题,完全采用C++完成核心反编译引擎的编写,并且使用了字节码直接转java伪代码的解析方式,无需转换成smali汇编后在做反编译,大大提升了解析速度。

此外,在反编译引擎的基础上,我做了一些更加实用的功能,如路径求解、 漏洞检测、隐私泄露检测、查壳、odex转dex、oat转dex、加解密算法工具、android设备内存dump等等功能,在交互式分析上,提供了( multi-dex的跨dex的 )字符串、方法、类和域交叉引用查询、调用者查询、搜索功能、注释功能、分析结果保存等等功能。

运行环境:win7,xp,win8,win10(注意由于加壳的缘故使得win10或者杀毒软件报毒,请自行甄别)

官方地址

http://www.gda.wiki:9090/

【 GDA反编译器实现原理】

GDA的反编译器实现采用了7阶段分析的模式,这也是一种类“ 前端 -反编译-后端”的实现方式,但与传统的反编译器实现上有所差别,同时在算法速度和反编译效果上做一些权衡,当然反编译器时刻都在进行优化和提升之中,由于反编译器的实现较为复杂,需要处理的细节比较多,所以此处仅仅是非常简单的介绍GDA的反编译核心实现,实际上也谈不上是实现原理。

1.dex文件解析

dex文件解析主要用于定位类,方法,域以及字符串等等信息,其中反编译器需要用到字节码是直接从method中解析得来,此外GDA还需获取try-catch信息,调试信息等以备后用(主要在代码生成时使用)。

2.指令解码

对方法的字节码进行解码,类似于反汇编,识别出240多条字节码并将其转化为LIR(低级中间表式)和HIR(高级中间表式)(注释GDA的中间表式并非如llvm的文本型中间表示,而是内存结构型的表达式),然后对中间表式进行优化,剔除无效语句,然后生成控制流图。GDA中每个低级中间表式都一一对应着字节码指令,高级中间表式的数目小于等于低级中间表式的数目。此外,之后实现的污点传播分析引擎也是基于低级中间表达式进行的,以支持准确的变量追踪与定位。

3.控制流图的生成

扫描每个高级中间表达式,查找分支、跳转指令建立基本块儿(同时把try-catch也考虑进去),进一步建立起控制流图。此外还需要对控制流图进行优化,简化控制流图,去除无意义的基本块,GDA还在这个阶段做一些反混淆的工作,用于对抗一些无用跳转,但是此处作用有限,更进一步的反混淆在数据流分析中实现。

4.数据流分析

有了控制流图,使用DFS遍历控制流图对基本块儿内及块间进行数据流分析,本处GDA并没有采用du(定义使用链)来实现,而是采用了比较快的使用定义计数法来实现数据流分析,对低级中间代码进行优化。此外,数据流分析中,GDA同时实现了类型推断,以给每个低级中间表式的输入输出值确定其类型。同时,反混淆也在数据流分析中实现。

5.高级中间代码生成

优化完成后,就可以生成高级中间代码,按照DFS遍历每个基本块,以基本块为单位进行高级中间代码生成,此处需要应用复制传播来进行低级中间表式的迭代,以生成大幅缩减的代码语句。同时应用调试信息来修改变量符号。

6.结构化分析

GDA到这个阶段实现了多复合条件的分析,并对二路(if-else)、多路(switch-case、try-catch)、环(while、do-while、for)结构进行了结构化分析,为最终代码输出做准备。结构化分析时对于非结构化图,只能采用goto来实现,确保反编译后逻辑正确性。

7.java代码生成

最后按照java的代码格式来生成代码,尤其对于try-catch型的结构,为了防止try块儿于代码的生成以method为单位也可以以类为单位进行代码生成。GDA主要以method为单位,并将类和方法进行了分离。

当然反编译器的实现还只是一个开端,要成为一个可用的交互式反编译器,还需要基于反编译器来支持更多的特性。

302697_NZE262FAE3XVJ87302697_NQ2FXWD5EJ6CAP7

GDA3.66
1.(需root)设备dump功能支持android 5以上,支持64位arm系统
2.修复内部类名称在package显示过程中的不一致问题
3.删除了反编译代码中的多余label
4.优化数组初始化的反编译显示
5.加强了URL搜索的特征
6.类成员名称自动重命名
7.import支持超链接
8.重写设计了代码着色器的着色算法,大大提高了超大方法作色速度
9.修复了在multi-dex分析中速度会明显变慢的问题
10.修复了误入HexView,再后退(esc)时的一些问题

GDA3.65
1.修复反编译结构化分析的一些问题
2.修复易语言编写的apk出现乱码的问题
3.修复了按“下箭头键”出现鼠标跟随的问题
4.优化了反编译代码
5.调整gda分析保存结果的文件处理,支持了multidex的分析保存。
6.按光标位置对相应的小括号高亮

GDA3.63
1.优化反编译器
2.纠正字体配置时,重启丢失问题
3.调整了反编译代码输出策略

GDA3.62更新
1.为反编译器编写了污点传播分析引擎,实现了正向污点传播识别sinks,以及反向污点传播识别source。加入大量source特征和sink特征,可以用于寄存器变量追踪、数据流分析、自动分析隐私泄露、恶意行为等。
2.对内容搜索(ctr+f)添加了搜索列表功能,以及双击列表项自动定位功能。
3.对反编译引擎进行了变量处理。
4.优化了一些操做细节。
5.添加了双击goto偏移的页内跳转功能,对于smali代码点击goto或者if后面偏移地址,对于java则点击goto之后label即可。

GDA3.60 更新

1.添加URLs字符串功能,DexClass右键->UrlStrings

2.为了支持后续污点传播分析以及模拟执行支持,重构了数据流分析部分,以方便后续功能扩展。

3.为了方便使用python的库进行自动化分析,添加了对python脚本的支持,需要安装32位的python2.7。

4.改善了反编译效果,对于方法中存在非结构化控制流图时,我采取return归约的方法降低jmp语句出现的概率,此外还修复了多处比较少见的bug。

5.对于空方法自动命名为Null_*

6.对get和set方法进行自动识别

7.添加了字节码签名功能,方便后续进行恶意代码特征库的构建,同时可以用于反混淆,以及库函数的识别。

8.添加了中文和英文动态切换的功能,默认为英文界面,菜单view->chinese

9.添加了get和set方法自动命名功能。

10.进一步加强了反编译器的稳定性和容错能力

11.修复了符合条件下,反编译会出现条件反转的问题。

12.分析MultiDex时,修复了在跨Dex交叉引用过程中,部分特殊方法无法交叉引用到的问题。

13.修复了快速频繁按下小盘的上下箭头键时的崩溃问题。

14.添加更多的加固和打包器特征,可识别国外主流加固或者打包厂商,识别标识里添加了加固链接。

15.重新优化了分析引擎,为后续的批量apk分析提供支持。

GDA3.54 更新

1.添加了数字类型的转化功能,点击数字右键可以实现十进制、八进制、16进制以及字符之间相互转化。

2.对于存在操作历史的文件时,默认显示操作历史窗口

3.优化AllString操作,原来分析速度较慢,容易出现界面假死,目前速度得到较大提升。

4.微调了配色窗口

5.对反编译器做进一步优化和bug修复,如修复了条件反转问题。

6.修复对.gda文件加载后无法显示权限的问题

7.修复了跨Dex进行部分method访问时,无法发现method的问题。

8.对每个方法添加了package标注和返回方法查看。

9.增加了对查找记录管理,可右键进行删除和清理操作。

10.对MultiDex增加了字符串、方法、APIS、可疑行为扫描等功能,点击DexClass{2,3,...}右键可用

移动安全

GDA3.4更新

bug修复:

1.修复算法工具bug

2.修复n操作重命名操作大小写不敏感的问题。

3.修改了类和字符串点击阴影作色的策略

4.修复了编译器引擎的几处Bug

5.修复了高版本DEX文件无法打开的问题

6.修正了反编译超大函数时出现畸形代码问题。

7.修正了对称加密算法加解密时出错的问题。

8.修正方法参数类型为根类时,无法显示参数类型问题。

9.修正了在进行两个相同文件名的APK文件分析时出现当前文件未分析到的问题。

功能更新

1.对优化后DEX的反编译做了兼容,使其能够正确反编译(之前会出现崩溃)

2.添加了交叉引用的method与string在调用者方法中的定位着色功能。

3.进一步优化了扫描引擎,大大提升了扫描的速度。

4.修改了类的显示方式,之前的类显示过于简单。

5.增加了申请访问权限与模块(method)的关联功能。

6.区分了类(对象)和方法的重命名操作,当光标在点号之前时,按n可以对对象变量进行从命名,点号之后为method重命名。

7.增加了java伪代码中的双击类变量(对象)/域时跳转到类的功能,类的交叉引用。

8.增加了java伪代码中field和类(对象)的识别,其中field支持双击后在类中查看,交叉引用,重命名。类/对象双击可查看类,以及类的交叉引用。

9.增加了父类的查看定位功能

10.增加了子类的查看定位功能

11.增加了树形框下类的实时搜索功能,鼠标移动到树形框,搜索框会自动显示并获得焦点。

12.增加近期文件的打开历史记录,点击文件可以直接加载分析。

13.增加了历史分析文件的搜索记录,CTR+H可以调出搜索历史,双击搜索历史项可以弹出搜索内容,双击右边的搜索项,可以自动弹出搜索结果。

14.最大化时取消了任务栏覆盖功能

15.增加了java伪代码的显示模式的选择,可以选择try-catch模式与非try-catch模式,默认设置为了不显示try-catch。

16.增加了对屏幕的适配,防止小分辨率下窗口无法显示完全。

细节:

1.对优化后DEX的反编译做了兼容,使其能够正确反编译(之前会出现崩溃)

2.添加了交叉引用的method与string在调用者方法中的定位着色功能。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

3. 进一步优化了扫描引擎,大大提升了扫描的速度。

4. 修改了类的显示方式,之前的类显示过于简单。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

5. 增加了申请访问权限与模块(method)的关联功能。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

6. 区分了类(对象)和方法的重命名操作,当光标在点号之前时,按n可以对对象变量进行从命名,点号之后为method重命名。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

GDA: 简洁,快速,强大的交互式反编译器 v3.82

7. 增加了java伪代码中的双击类变量(对象)/域时跳转到类的功能,类的交叉引用。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

GDA: 简洁,快速,强大的交互式反编译器 v3.82

8. 增加了java伪代码中field和类(对象)的识别,其中field支持双击后在类中查看,交叉引用,重命名。类/对象双击可查看类,以及类的交叉引用。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

GDA: 简洁,快速,强大的交互式反编译器 v3.82

9. 增加了父类的查看定位功能

10. 增加了子类的查看定位功能

GDA: 简洁,快速,强大的交互式反编译器 v3.82

11. 增加了树形框下类的实时搜索功能,鼠标移动到树形框,搜索框会自动显示并获得焦点。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

12. 增加近期文件的打开历史记录,点击文件可以直接加载分析。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

13. 增加了历史分析文件的搜索记录,CTR+H可以调出搜索历史,双击搜索历史项可以弹出搜索内容,双击右边的搜索项,可以自动弹出搜索结果。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

14. 最大化时取消了任务栏覆盖功能

15. 增加了java伪代码的显示模式的选择,可以选择try-catch模式与非try-catch模式,默认设置为了不显示try-catch。

GDA: 简洁,快速,强大的交互式反编译器 v3.82

16.增加了对屏幕的适配,防止小分辨率下窗口无法显示完全。

3.31更新

1.重新设计了界面,对代码着色做了些调整。

2.树形框与编辑框大小可拖拽移动。

3.纠正了部分情况下代码着色时的拖延问题。

4.对反编译引擎做了进一步的优化和排错。

5.变量类型分析做了变化,如果存在调试信息,使用调试信息中的变量类型。

6.添加了本地变量优化算法,防止分支结构中出现重复声明问题。

7.添加try-catch结构优化算法,对相同handler的异常做了融合。try{}体代码更加精确。

8.添加十六进制编辑功能,可实现任意偏移的Dex文件编辑。

3.0更新

1.对恶意行为扫描引擎,极大的提高了恶意行为扫描速度,比以前扫描速度提升了2倍以上。

2.增加全局导入API扫描功能,可查看该APK所使用的所有有效API功能(其中包含所使用的native函数)

3.优化了点击字符自动背景作色算法,大大改善了作色的速度,尤其是在大函数中,体验会比较明显。

4.完全重写了反编译引擎,本次花费了大量精力深入研究反编译理论技术并且实现了Android字节码的反编译,反编译效果已经非常接近JEB。

5.修复S/s快捷键搜索类时,双击类无法显示类的bug.

6.对GDA文件做了文件关联(需要开启注册表HKEY_CLASSES_ROOT的读写权限)

文章版权声明

 1 原创文章作者:汇维网,如若转载,请注明出处: http://www.52hwl.com/2366.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

发表评论

登录后才能评论