本文采用了《加密与解密》第4版的3.5.1的示例文件,因为很容易下载到,在这里就不再传源文件了,大家自行寻找下载这个crackme.exe。分别采用IDA Pro和 Ghidra 这两款比较权威的静态反编译器的C代码生成质量。
IDA Pro是此领域商业软件的泰斗,Ghidra则是开源软件在这个领域的泰斗级工具。
分别用两个工具加载exe,并且生成C代码。我们来逐步看关键函数各个代码段的生成质量。先IDA, 后Ghidra.
简要对比Ghidra和IDA Pro的伪C代码生成特点和水平简要对比Ghidra和IDA Pro的伪C代码生成特点和水平
可见从代码生成质量来看,IDA 要从如下方面略胜一筹:
(1) IDA正确的识别了函数名和调用约定stdcall.
(2) IDA对于局部变量string2,ida 巧妙的采用了strcpy来进行赋值,并且直接将字符串翻译为可读性很强的字符串9981. 其实从后面的逻辑来看,就很容易一眼就看出来这个要被破解的密码就是9981.
(3) 对于Ghidra而言,虽然没有IDA那么智能,但是也可以直接点击local_14右边的地址,就可以从汇编窗口看到对应的ASCII码。只是这个是原始的数据,需要人为的转换成9981.
简要对比Ghidra和IDA Pro的伪C代码生成特点和水平
在如下几个方面,我更喜欢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则翻译的比较啰嗦一些。但是我感觉这个啰嗦版本的对于初学入门的人来说反而是比较友好的。
简要对比Ghidra和IDA Pro的伪C代码生成特点和水平简要对比Ghidra和IDA Pro的伪C代码生成特点和水平
如上内容,仅仅是学习随笔,也没啥技术含量。仅供大家参考。
标签:
简要对比Ghidra和IDA Pro的伪C代码生成特点和水平

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
狼山资源网 Copyright www.pvsay.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。