简体   繁体   English

如何简化这个伪代码

[英]how to simplify this pseudocode

I have this pseudocode in IDA but I don't understand the result when I compiled it我在 IDA 中有这个伪代码,但我不明白编译它时的结果

__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++测试的 output 是48 ,有人可以解释这里发生了什么以及 c++ 中的等价物

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. v17 是 64 位 integer,v20 是 64 位 integer。v17 似乎是一个指针,该地址处的任何内容都被取消引用为 DWORD 类型并存储在测试中。 Because v20 == 0, the offset from v17+v20 is 0.因为 v20 == 0,所以 v17+v20 的偏移量为 0。

The result is结果是

int64_t v17 = 507890351016;
DWORD test = *(DWORD*)v17;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM