如何在 IDA Pro 中正确标记 C 风格结构的所有结构成员

逆向工程 艾达 结构
2021-06-16 00:08:26

我制作了一个非常简单的 C 程序,它在堆上抛出一个结构,然后对其进行反汇编。令人惊讶的是,当我使用 Structures 选项卡按名称添加结构时,IDA Pro 实际上识别了该结构。但是,当我尝试在反汇编代码中标记结构时,它只给了我解析第一个成员的选项,即使是后续成员也是如此。在这个例子中,第一个结构成员被调用name,第二个age,,,第三个hair_color但是正如您在屏幕截图 2 中看到的,我已经标记了结构的第一个成员,但是当我尝试使用T热键标记ageand 时hair_color,它只能让我选择将所有内容标记为 PERSON.name。为什么会这样,我如何正确标记这些成员?

更具体地说:我希望将第一个成员标记为“名称”,并让 IDA 自动正确标记其余成员,因为它们相对于“名称”/PERSON 结构的开头的偏移量。

结构定义 代码中的结构

1个回答

IDA 从光标所在的操作数中选取一个潜在的结构成员偏移量。如果是[eax],则偏移量为 0,因此它显示 0 ( .name)处的成员但是,如果您尝试例如[eax+34h],它会建议.age哪个偏移量为 34。