如何在 x64/x32Dbg 中定义结构?

逆向工程 结构 x64dbg
2021-07-07 16:15:19

查看图像如何有 ecx、ecx+4、ecx+8、ecx+24 等...如果这是一个结构并且我想定义它怎么办...我可以在 x64Dbg 中执行此操作吗? ? 我确实在十六进制转储区域看到了一个结构选项卡,但是如果我右键单击,则没有定义结构的选项。在此处输入图片说明

1个回答

现在不可能将反汇编中的指令标记为结构成员。然而,可以定义结构并在内存中访问它们(类似于 010 编辑器)。这方面的主要信息来源是这里这里

例如,如果您有以下代码:

#pragma pack(1)
struct MyStruct
{
    int a;
    bool b;
    const char* c;
};

void test(MyStruct* p)
{
    MyStruct* s = p;
    s->a = 0x1234;
    s->b = true;
    s->c = "Hello world";
}

int main()
{
    MyStruct s;
    test(&s);
    return s.a;
}

您可以使用Parse header选项Struct中的选项来解析以下标题:

struct MyStruct
{
    int a;
    bool b;
    const char* c;
};

这将加载结构(使用命令EnumTypes查看类型列表)。现在,当您暂停test函数的反汇编时,您可以使用Visit type选项Struct卡中选项以ecx结构化方式显示内存的内容

结构成员的地址也将作为临时标签添加,以便您可以在信息框中查看指令所指的内容:

由于社区缺乏兴趣,因此尚未进一步开发此功能。