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 and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.