I have a Ida decompiled function that invokes another function through a function pointer but I'm really confused how it calculates it's address. I'm new to hex-rays syntax.

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;

So, v3 = dword_BD277D84 + 0x24 = 0xBD277DA8 Or v3 = ValueAt(dword_BD277D84) + 0x24 ?

I'm kinda confused with off_* and dword_* thing.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.