news 2026/4/16 17:22:17

用GHIDRA核查IDA生成的伪代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用GHIDRA核查IDA生成的伪代码

以下是IDA生成的一段伪代码:

for ( i = 1; i <= 3; ++i )

*(_BYTE *)(v5 - 8 + 4) = util_rnav__valide_caract(&a5[104 * i - 104]);

而且还有以下警告:

// 9C8A2F: variable 'v5' is possibly undefined

在以上循环中,v5没有变化,这很可疑,于是查看对应的汇编代码:

汇编

备注

.text:009C8A26 loc_9C8A26:

伪代码中的i对应esi,a5对应edi, v5对应ebx

.text:009C8A26 lea eax, [esi+esi*2]

3*i赋予eax

.text:009C8A29 lea eax, [esi+eax*4]

13*i赋予eax

.text:009C8A2C lea eax, [edi+eax*8]

a5+104* i赋予eax

.text:009C8A2F lea ebx, [eax-8]

a5+104* i-8赋予ebx

为何IDA忽视了a5+104* i?

.text:009C8A32 sub esp, 0Ch

.text:009C8A35 sub eax, 68h

104 * i - 104赋予eax

.text:009C8A38 push eax

.text:009C8A39 call _util_rnav__valide_caract

返回值是al

.text:009C8A3E mov [ebx+4], al

al赋予[a5+104* i-8+4]

.text:009C8A41 add esp, 10h

.text:009C8A44 inc esi

.text:009C8A45 cmp esi, 3

.text:009C8A48 jle short loc_9C8A26

根据以上分析,伪代码中的赋值语句应改为:

*(_BYTE *)(&a5[104 * i - 8 + 4]) = util_rnav__valide_caract(&a5[104 * i - 104]);

后来查看了GHIDRA的反编译结果,其中与上述相关的伪代码是正确的:

iVar17 = 1; do { iVar16 = param_5 + iVar17 * 0x68; uVar15 = _util_rnav__valide_caract(iVar16 + -0x68); *(undefined *)(iVar16 + -4) = uVar15; iVar17 = iVar17 + 1; } while (iVar17 < 4);

看来用GHIDRA核查IDA生成的伪代码是可行的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:55:14

Simditor多语言编辑器:构建全球化内容创作平台的完整技术解析

Simditor多语言编辑器&#xff1a;构建全球化内容创作平台的完整技术解析 【免费下载链接】simditor An Easy and Fast WYSIWYG Editor 项目地址: https://gitcode.com/gh_mirrors/si/simditor 在当今数字化时代&#xff0c;内容创作已经跨越国界&#xff0c;面向全球用…

作者头像 李华
网站建设 2026/4/16 10:57:51

Markdown写技术博客利器:记录你的PyTorch环境搭建全过程

基于 Miniconda 与 Markdown 的 PyTorch 环境构建实践 在深度学习项目中&#xff0c;最让人头疼的往往不是模型调参&#xff0c;而是环境配置——明明本地跑得好好的代码&#xff0c;换台机器就报错&#xff1a;torch not found、CUDA version mismatch……这类问题反复出现&am…

作者头像 李华
网站建设 2026/4/16 10:55:24

快速做事经验分享

在工作和学习中&#xff0c;我们经常会遇到这样的情况&#xff1a;事情并不难&#xff0c;但总是做得慢、容易卡住&#xff0c;甚至做到一半自己不满意然后全部推倒重来。下面是我总结的一些自己快速做事情的经验。一、确认事情「结束」界限在真正动手之前&#xff0c;第一件事…

作者头像 李华
网站建设 2026/4/15 15:23:02

Rigorous 英文单词学习

1️、基本信息单词&#xff1a;rigorous词性&#xff1a;形容词发音&#xff1a; &#x1f1fa;&#x1f1f8; /ˈrɪɡ.ɚ.əs/&#x1f1ec;&#x1f1e7; /ˈrɪɡ.ər.əs/词源&#xff1a; 来自拉丁语 rigor&#xff08;僵硬、严厉、严格&#xff09; → rigorous 严格的…

作者头像 李华
网站建设 2026/4/16 12:35:58

终极指南:在Windows上轻松安装Brunch框架运行ChromeOS

终极指南&#xff1a;在Windows上轻松安装Brunch框架运行ChromeOS 【免费下载链接】brunch Boot ChromeOS on x86_64 PC - supports Intel CPU/GPU from 6th Gen (Skylake) or AMD Ryzen 项目地址: https://gitcode.com/gh_mirrors/bru/brunch Brunch框架是一个革命性的…

作者头像 李华
网站建设 2026/4/16 11:12:40

RakNet自动补丁系统:高效的游戏内容分发解决方案

RakNet自动补丁系统&#xff1a;高效的游戏内容分发解决方案 【免费下载链接】RakNet 项目地址: https://gitcode.com/gh_mirrors/rak/RakNet RakNet自动补丁系统&#xff08;Autopatcher&#xff09;是一个专为游戏开发者设计的智能内容分发解决方案&#xff0c;能够显…

作者头像 李华