VC2008编译的函数,每次运行地址都不一样,该怎么处理
VC2008编译的函数,每次运行地址都不一样
以下代码在VC2005下函数地址是固定的0x4110e1
在VC2008下函数地址每次运行都不一样,0x3b10e1、0xfd10e1、0x10c10e1等等
请问造成VC2005和VC2008不同的原因是什么?怎样获取VC2008的编译函数的固定地址?
谢谢
------解决方案--------------------
/DYNAMICBASE:NO
/FIXED:YES
------解决方案--------------------
直接修改文件,OptionalHeader.DllCharacteristics&=~0x0040
在全局范围禁用动态基地址
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
MoveImages=0
------解决方案--------------------
第二种要重启的
以下代码在VC2005下函数地址是固定的0x4110e1
在VC2008下函数地址每次运行都不一样,0x3b10e1、0xfd10e1、0x10c10e1等等
- C/C++ code
#include <stdio.h> void Fun() { printf("Fun Address:0x%0x\n", Fun); } int _tmain(int argc, _TCHAR* argv[]) { Fun(); return 0; }
请问造成VC2005和VC2008不同的原因是什么?怎样获取VC2008的编译函数的固定地址?
谢谢
------解决方案--------------------
/DYNAMICBASE:NO
/FIXED:YES
------解决方案--------------------
直接修改文件,OptionalHeader.DllCharacteristics&=~0x0040
在全局范围禁用动态基地址
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
MoveImages=0
------解决方案--------------------
第二种要重启的