struct
作为参数。 struct
看起来像这样:struct my_struct {
short a;
unsigned int b;
unsigned int c;
};
注意对齐,我在IDA中构建了以下
struct
:field_0 +0x0
field_1 +0x4
field_2 +0x8
编译器对其进行编译,以使其在
rbp+0x10
中将struct
作为第一个字段,将rbp+0x14
作为第二个字段,依此类推。现在出现问题是因为,如果我尝试将预定义的IDA struct
应用于指令,我总是会得到类似[rbp+struct.field_0+0x10]
的信息。如果+0x10
的结构中确实存在某些内容,则情况会变得更加复杂,因为这只会显示[rbp+struct_fieldX]
(这是错误的)。问题是:有没有办法告诉IDA(我使用6.3)应用偏移为
struct
的0x10
? 这个简单案例的肮脏技巧是创建一个
struct
,该size_t
和RIP
具有2个SFP
虚拟字段,但这似乎并不是正确的选择。#1 楼
在结构的堆栈视图中添加结构:将光标置于函数的反汇编视图中,按Ctrl + K打开堆栈视图。
在堆栈视图中,确保存在足够的函数参数以至少到达堆栈中的
+00000010
。使用D根据需要添加更多函数参数。将光标定位在堆栈视图中的
+00000010
行上,然后按Alt + Q在该偏移量处指定my_struct
。
评论
重点说明:在第三步中,您必须处于堆栈视图上。如果将光标放在IDA视图中相应的局部变量上,然后按Alt + Q,则IDA会尝试将函数的内容解释为结构,而不是变量,这会破坏函数。我看到这是人们在学习IDA中的结构时经常犯的一个错误。
–user1354557
14-10-27在20:53