我有一个 Ida 反编译函数,它通过函数指针调用另一个函数,但我真的很困惑它如何计算它的地址。我是 hex-rays 语法的新手。
int __fastcall SUB_XXXX(int a1)
{
int result; // r0
int (__fastcall *v3)(int); // r2
result = 0;
if ( *off_BD2561B0 )
{
v3 = *(int (__fastcall **)(int))(*off_BD2561B0 + 36);// off_BD2561B0 DCD dword_BD277D84
if ( v3 )
result = v3(a1);
}
return result;
}
所以, v3 = dword_BD277D84 + 0x24 = 0xBD277DA8 或者 v3 = ValueAt (dword_BD277D84) + 0x24 ?
我对 off_* 和 dword_* 有点困惑。