我只是使用IDA反向设计二进制文件并加载Hex Ray以检查特定功能.generate C源代码包含以下if语句:
LP_ret_GlobalLock_1 = GlobalLock(hMem);
LP_ret_GlobalLock_2 = LP_ret_GlobalLock_1;
...
if ( !LP_ret_GlobalLock_1 || (v9 = *(_DWORD *)(v6 + 4), *(_DWORD *)v6 = LP_ret_GlobalLock_2, v9 < 0) )
Run Code Online (Sandbox Code Playgroud)
我不确定完全理解以下部分:
(v9 = *(_DWORD *)(v6 + 4), *(_DWORD *)v6 = LP_ret_GlobalLock_2, v9 < 0)
Run Code Online (Sandbox Code Playgroud)
v9初始化为v6 + 4; 但是后来v6被修改为指针LP_ret_GlobalLock_2,最后v9检查是否小于0.这是正确的吗?在计算v9时,v6使用了什么值?LP_ret_GlobalLock_2或之前的值?