I have this pseudocode in IDA but I don't understand the result when I compiled it
__int64 v17 = 507890351016;
__int64 v20 = 0;
auto test = *(WORD*)(*(uintptr_t*)v17 v20);
the output of test is 48, can someone explain what's going here and what the equivalent in c
CodePudding user response:
v17 is a 64 bit integer, v20 is a 64 bit integer. v17 seems to be a pointer and whatever is at that address is being dereferenced to a DWORD type and stored in test. Because v20 == 0, the offset from v17 v20 is 0.
The result is
int64_t v17 = 507890351016;
DWORD test = *(DWORD*)v17;