显然Release模式下编译会少很多代码。我写的if里的代码全部没有编译。DEBUG模式则是全部正常的。请问是为什么
源码是这样的
void My_ReadProcessMemory(DWORD Eax,
HANDLE hProcess,
LPCVOID lpBaseAddress,
LPVOID lpBuffer,
DWORD nSize,
LPDWORD lpNumberOfBytesRead
)
{
if (!IsMe)
{
IsMe =true;
MessageBox(NULL,"","",NULL);
if ((DWORD)lpBaseAddress>=0x6f000000&&(DWORD)lpBaseAddress <=0x6F705000)
{
hProcess=nOK;
DWORD lpnew;
lpnew=(DWORD)lpBaseAddress-0x6f000000;
lpnew+=(DWORD)gamedllbuf;
(LPCVOID)lpBaseAddress=(LPCVOID)lpnew;
}
IsMe = false;
}
}
用Release编译出来的代码为
10009530 cmp byte ptr [IsMe (1002FBB8h)],0
10009537 jne My_ReadProcessMemory+2Bh (1000955Bh)
10009539 push 0
1000953B push offset string "" (10007354h)
10009540 push offset string "" (10007354h)
10009545 push 0
10009547 mov byte ptr [IsMe (1002FBB8h)],1
1000954E call dword ptr [__imp__MessageBoxA@16 (10001408h)]
10009554 mov byte ptr [IsMe (1002FBB8h)],0
1000955B ret
用Debug编译出来的代码为
10111E50 push ebp
10111E51 mov ebp,esp
10111E53 sub esp,0CCh
10111E59 push ebx
10111E5A push esi
10111E5B push edi
10111E5C lea edi,[ebp-0CCh]
10111E62 mov ecx,33h
10111E67 mov eax,0CCCCCCCCh
10111E6C rep stos dword ptr es:[edi]
10111E6E movzx eax,byte ptr [IsMe (1027ADA8h)]
10111E75 test eax,eax
10111E77 jne My_ReadProcessMemory+8Bh (10111EDBh)
10111E79 mov byte ptr [IsMe (1027ADA8h)],1
10111E80 mov esi,esp
10111E82 push 0
10111E84 push offset string "" (100D41EAh)
10111E89 push offset string "" (100D41EAh)
10111E8E push 0
10111E90 call dword ptr [__imp__MessageBoxA@16 (10282CFCh)]
10111E96 cmp esi,esp
10111E98 call @ILT+34760(__RTC_CheckEsp) (100B67CDh)
10111E9D cmp dword ptr [lpBaseAddress],6F000000h
10111EA4 jb My_ReadProcessMemory+84h (10111ED4h)
10111EA6 cmp dword ptr [lpBaseAddress],6F705000h
10111EAD ja My_ReadProcessMemory+84h (10111ED4h)
10111EAF mov eax,dword ptr [nOK (1027AC9Ch)]
10111EB4 mov dword ptr [hProcess],eax
10111EB7 mov eax,dword ptr [lpBaseAddress]
10111EBA sub eax,6F000000h
10111EBF mov dword ptr [lpnew],eax
10111EC2 mov eax,dword ptr [lpnew]
10111EC5 add eax,dword ptr [gamedllbuf (1027ADA4h)]
10111ECB mov dword ptr [lpnew],eax
10111ECE mov eax,dword ptr [lpnew]
10111ED1 mov dword ptr [lpBaseAddress],eax
10111ED4 mov byte ptr [IsMe (1027ADA8h)],0
10111EDB pop edi
10111EDC pop esi
10111EDD pop ebx
10111EDE add esp,0CCh
10111EE4 cmp ebp,esp
10111EE6 call @ILT+34760(__RTC_CheckEsp) (100B67CDh)
10111EEB mov esp,ebp
10111EED pop ebp
10111EEE ret
[课程]FART 脱壳王!加量不加价!FART作者讲授!