news 2026/9/21 13:55:55

甄别伪代码中的二维数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
甄别伪代码中的二维数组

以下是IDA生成的关于变量dword_2810F8C伪代码:

int dword_2810F8C[]; // weak int page_s_tactical__g_num_rte[]; // weak if ( v22 > 5 ) //这是Ada编译器插入的判断下标是否合法的语句 __gnat_rcheck_05("page_s_tactical.adb", 1252); if ( v29 > 1u ) //这是Ada编译器插入的判断下标是否合法的语句 __gnat_rcheck_06("page_s_tactical.adb", 1252); dword_2810F8C[6 * v29 + 1 + v22] = *(_DWORD *)(a2 + 12 * (v26 - 1) + 8);

根据以上两行if语句,可知v22与v29是数组下标。

v22的合法数值范围是0..5。

v29的合法数值范围是0..1。

从汇编清单中可知page_s_tactical__g_num_rte的起始地址是0x2810F90:

bss:02810F8C ; int dword_2810F8C[] .bss:02810F8C dword_2810F8C dd ? .bss:02810F90 ; int page_s_tactical__g_num_rte[] .bss:02810F90 _page_s_tactical__g_num_rte dd ? .bss:02810F94 align 40h .bss:02810FC0 ; char page_s_tactical__g_exec_pressed[]

page_s_tactical__g_num_rte与dword_2810F8C相差4个字节。

page_s_tactical__g_num_rte的长度是48个字节。

由此可见,

dword_2810F8C[6 * v29 + 1 + v22]

可改写为:

page_s_tactical__g_num_rte[v29][v22]

因此,page_s_tactical__g_num_rte可以定义为:

Int page_s_tactical__g_num_rte[2][6];

其他关于dword_2810F8C的伪代码都可以进行相应的修改。例如:

dword_2810F8C[6 * a1 + page_s_tactical__num_page[a1]]

可改为:

page_s_tactical__g_num_rte[a1][page_s_tactical__num_page[a1] - 1]

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

LabVIEW 携手 YOLOv8:全方位视觉处理的奇妙之旅

labview yolov8分类,目标检测,实例分割,关键点检测onnxruntime推理,封装dll, labview调用dll,支持同时加载多个模型并行推理,可cpu/gpu, x86/x64位,识别视频和图片,cpu和gpu可选&am…

作者头像 李华
网站建设 2026/9/21 15:27:07

某雷赛86闭环步进驱动方案-HBS86H整体方案及原理图、PCB、无错无警告代码打包

某雷赛86闭环步进驱动方案 HBS86H 86闭环电机驱动器/混合伺服驱动器。原理图PCB代码。整体方案打包。代码无错误无警告。项目概述 本文档详细分析了基于TI DSP2803x系列微控制器的嵌入式系统外设驱动代码。该代码库为DSP2803x芯片提供了完整的外设寄存器定义和基础驱动功能&am…

作者头像 李华
网站建设 2026/9/20 18:27:27

通过SEO推广LobeChat博客内容,带动大模型Token购买转化

通过SEO推广LobeChat博客内容,带动大模型Token购买转化 在生成式AI席卷全球的今天,一个开发者想搭建自己的AI助手,已经不再需要从零开始训练模型。真正决定体验优劣的,反而是那个“看不见”的前端界面——它决定了用户是否愿意留下…

作者头像 李华
网站建设 2026/9/20 16:01:43

【Svelte】重定向页面

In SvelteKit’s page.ts file, you can redirect by throwing a redirect error from the sveltejs/kit module within your load function. Here’s how to do it: // src/routes/page.ts import { redirect } from sveltejs/kit; import type { PageLoad } from ./$types; /…

作者头像 李华