吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9043|回复: 37
收起左侧

[原创] 简要对比Ghidra和IDA Pro的伪C代码生成特点和水平

  [复制链接]
gmg2719 发表于 2022-12-14 23:46
本帖最后由 gmg2719 于 2022-12-14 23:53 编辑

本文采用了《加密与解密》第4版的3.5.1的示例文件,因为很容易下载到,在这里就不再传源文件了,大家自行寻找下载这个crackme.exe。分别采用IDA Pro和 Ghidra 这两款比较权威的静态反编译器的C代码生成质量。
IDA Pro是此领域商业软件的泰斗,Ghidra则是开源软件在这个领域的泰斗级工具。
分别用两个工具加载exe,并且生成C代码。我们来逐步看关键函数各个代码段的生成质量。先IDA, 后Ghidra.
image.png image.png


可见从代码生成质量来看,IDA 要从如下方面略胜一筹:
(1) IDA正确的识别了函数名和调用约定stdcall.
(2) IDA对于局部变量string2,ida 巧妙的采用了strcpy来进行赋值,并且直接将字符串翻译为可读性很强的字符串9981. 其实从后面的逻辑来看,就很容易一眼就看出来这个要被破解的密码就是9981.
(3) 对于Ghidra而言,虽然没有IDA那么智能,但是也可以直接点击local_14右边的地址,就可以从汇编窗口看到对应的ASCII码。只是这个是原始的数据,需要人为的转换成9981.

image.png

在如下几个方面,我更喜欢Ghidra的代码风格:
(4)对于IDA而言倾向于将所有的数值转换为10进制,而Ghidra倾向于用原始的十六进制来表示常量。 从我个人的角度而言,我感觉还是喜欢Ghidra这样的方式。比较贴近API一些常量的定义习惯。
(5)对于局部变量而言,IDA采用的是短变量,命名感觉有些乱。a4,v10这种的感觉没啥规律。 Ghidra这个方式我感觉还是不错,采用local_相对函数堆栈栈顶的偏移量方式。感觉比较有条理。


两者对于逻辑的反编译而言,相差不多。形式略有差异,但是大体是一样的。对于这个简单的程序而言,两者反编译的c代码都是比较容易看懂的。 逻辑组织大同小异。其中的小异举例如下:
(1)对于 a2!=273 然后return 0的逻辑, ida是直接判断然后返回0. 对于Ghidra而言是先处理 param_2==0x111(273), 最后不满足这个条件的返回0
  (2) 对于 lstrcmp(&String, String2)而言,这一部分代码,IDA翻译的比较简洁,Ghidra则翻译的比较啰嗦一些。但是我感觉这个啰嗦版本的对于初学入门的人来说反而是比较友好的。
image.png image.png


如上内容,仅仅是学习随笔,也没啥技术含量。仅供大家参考。

免费评分

参与人数 8吾爱币 +14 热心值 +4 收起 理由
bnuzgn + 1 用心讨论,共获提升!
X1a0 + 1 用心讨论,共获提升!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
axin0529 + 1 热心回复!
Tonyha7 + 1 谢谢@Thanks!
snowCoco + 1 + 1 热心回复!
luozi1653 + 1 + 1 热心回复!
Ll001 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lichao890427 发表于 2022-12-15 14:17
比较这种工具一定是在你有相当深厚的功底的时候去做,且建立在对语言,底层非常精通的基础上。你精通多少了啊?
虽说工具没有绝对的好与不好,但是真正用来做工作的时候肯定是不一样的。在初学阶段去做比较其实都没啥意义,肯定选功能强大的,
至于开源不开源,如果你是做科研的,专门去研发一款这种工具那或许会在意开源这个事。
一个工具,眼光放远点,他是有生态圈的,而不只是UI界面那些功能。另外书这个东西,最多让你入门,摆弄摆弄几个菜单控件。
如果想深入必然是对相应的编程技术和底层技术有深度了解的。书和视频最多入个门,你以后遇到的难题能从书里或者百度能搜到吗?


免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
0xffc0 + 1 + 1 谢谢@Thanks!

查看全部评分

爱飞的猫 发表于 2022-12-15 02:10
IDA 生成的代码质量高一些,但有时候会“过优化”一部分细节。虽然遇到的次数不多,但是遇到的时候很烦。

Ghidra 生成的代码不一定很好读,但是不会漏。
eer123 发表于 2022-12-15 00:24
w1066602520 发表于 2022-12-15 00:43
谢谢分享 十分有用
chen297 发表于 2022-12-15 06:40
谢谢分享
头像被屏蔽
tl;dr 发表于 2022-12-15 06:42
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| gmg2719 发表于 2022-12-15 07:19

肯定是综合来看商用软件好用啦。毕竟需要花钱买的。
 楼主| gmg2719 发表于 2022-12-15 07:21
爱飞的猫 发表于 2022-12-15 02:10
IDA 生成的代码质量高一些,但有时候会“过优化”一部分细节。虽然遇到的次数不多,但是遇到的时候很烦。
...

确实如此。两者都试试,取长补短。
dou520dou 发表于 2022-12-15 07:56
感谢楼主分享
pizazzboy 发表于 2022-12-15 08:41
谢谢分享高见。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 06:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表