IDA 逆向代码--- 指针类型的使用

本文介绍了在IDA逆向过程中遇到的指针和二维数组的访问方式,通过实例解析了如何从内存地址中按照指定类型读取数据。分析了一个函数定义,解释了0x40 * v23作为一级偏移,v25作为二级偏移,形成二维数组的访问逻辑。并指出在理解这种操作时,可以将v39视为二维数组,从而简化表达式。这对于不熟悉这种操作的开发工程师具有参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:指针、地址、数组访问、一维二维数组转换在IDA F5 之后的伪代码里面时常被用到;
理解:指针指向的是地址,指针表示的是 从某个地址开始 照 指定数据类型 读取数据
如下函数定义:

        int v12; // r3@32 
	 
        unsigned int v39[96]=
	{
		//int v39; // [sp+94h] [bp-1074h]@1
		0x4,0x12C,0x0,0x2DA,
		//int v40; // [sp+98h] [bp-1070h]@1
		//int v41; // [sp+A0h] [bp-1068h]@1
		0x0,0x0,0x0,0x0,//[sp+A4h] ~[sp+B0h]
		0x0,0x0,0x0,0x0,//[sp+B4h] ~[sp+C0h]
		0x0,0x0,0x0,0x0,//[sp+C4h] ~[sp+D0h]

		0x4,0x258,0,0x447,
		0x0,0x0,0x0,0x0,//[sp+E4h] ~[sp+F0h]
		0x0,0x0,0x0,0x0,//[sp+F4h] ~[sp+100h]
		0x0,0x0,0x0,0x0,//[sp+104h] ~[sp+110h]

		0x8,0x258,0x0,0x447,//[sp+114h] ~[sp+120h]
		0x0,0x258,0x258,0x447,
		0x447,0x0,0x0,0x0,
		0x0,0x0,0x0,0x0,

		0x0,0x0,0x0,0x0,
		0x0,0x0,0x0,0x0,
		0x0,0x0,0x0,0x0,
		0x0,0x0,0x0,0x0,

		0x0,0x0,0x0,0x0,
		0x0,0x0,0x0,0x0,
		0x0,0x0,0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值