gpt4 book ai didi

com - IDA Pro 中是否可以将结构体字段偏移到 .data 段中定义的 vtable?

转载 作者:行者123 更新时间:2023-12-02 22:24:17 27 4
gpt4 key购买 nike

这就是我想要实现的目标。我确定了一个类,并将其定义为存储类数据的结构。该类的方法之一使用类字段,就像它是指向 vtable 的指针一样。

int __thiscall SignOn(struc_4 *this)
{
v1 = this;
if ( !v1->vtable_40194AE0 )
return E_UNEXPECTED;
v1->field_3E8 = 0;
if ( !sub_686F7193(v1) )
return (*(*v1->vtable_40194AE0 + 12))(v1->vtable_40194AE0, 0, 0); // sub_40128EEE
}

正如你所看到的,它从 vtable 调用第三个函数。在运行时,我发现 vtable_40194AE0 指向 .data 部分中的数组,如下所示

off_40194AE0    dd offset InternalQueryInterface
dd offset AddRef
dd offset Release
dd offset sub_40128EEE ; 3
dd offset sub_40128F8C
dd offset sub_4012C2E2 ; 5

有没有办法以某种方式告诉 IDA vtable_40194AE0 始终指向 0x40194AE0 处的 vtable,因此伪代码中的给定调用将如下所示

return vtable_40194AE0->sub_40128EEE(v1->vtable_40194AE0, 0, 0);

我尝试将结构的 vtable_40194AE0 设置为“用户定义的偏移量”,但没有帮助:(

非常感谢!

最佳答案

当然有可能!

打开“结构”窗口,找到您的类结构(在您的情况下是struc_4)并打开它(如果它已折叠)。选择 vtable 字段(它应该位于第一个位置),按 Y 并在打开的窗口中输入类型声明作为指向 vtable 结构的指针(在您的情况下为 vtable_40194AE0* )。就是这样。

关于com - IDA Pro 中是否可以将结构体字段偏移到 .data 段中定义的 vtable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5931775/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com