我目前正在分解游戏(灵魂掠夺者:凯恩的遗产),我经常在反编译器中遇到类似这样的奇怪部分
*(_DWORD *)(a2 + 16) = a2 + 624;
*(_DWORD *)(a2 + 38200) = a2 + 8;
*(_DWORD *)(a2 + 20) = 0;
*(_DWORD *)(a2 + 37592) = 0;
*(_DWORD *)(a2 + 37596) = a2 + 36968;
*(_DWORD *)(a1 + 8) = a2;
*(_DWORD *)a1 = 0;
*(_DWORD *)(a1 + 4) = 0;
这些在我看来是结构体中的偏移量,但有些偏移量没有意义,例如36968
. 我知道这很难确定,但是非常感谢一些指向正确方向的指针:)
为那些想要它的人组装:)
.text:004B0126 xor esi, esi
.text:004B0128 mov [ecx+10h], eax
.text:004B012B lea eax, [ecx+8]
.text:004B012E mov [ecx+9538h], eax
.text:004B0134 mov eax, [esp+4+arg_0]
.text:004B0138 lea edx, [ecx+9068h]
.text:004B013E mov [ecx+14h], esi
.text:004B0141 mov [ecx+92D8h], esi
.text:004B0147 mov [ecx+92DCh], edx
.text:004B014D mov [eax+8], ecx
.text:004B0150 mov [eax], esi
.text:004B0152 mov [eax+4], esi