首页
社区
课程
招聘
[求助]C++部分代码不编译的问题
发表于: 2008-6-28 17:54 4375

[求助]C++部分代码不编译的问题

2008-6-28 17:54
4375
显然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作者讲授!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 454
活跃值: (1673)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
因为编译器优化的问题,你把项目属性 - C/C++ - 优化里的优化给禁用了就可以看到生成完整代码了
2008-6-28 19:10
0
雪    币: 143
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
果然是,太感谢了!!!
2008-6-28 19:41
0
游客
登录 | 注册 方可回帖
返回
//