001F4DF0 |. 64:A3 0000000>mov dword ptr fs:[0], eax
001F4DF6 |. A1 F4C42400 mov eax, dword ptr [24C4F4]
001F4DFB |. 8B0D F0C42400 mov ecx, dword ptr [24C4F0] ; ecx=[24c4f0] 这里
//第二次
00334DF0 |. 64:A3 0000000>mov dword ptr fs:[0], eax
00334DF6 |. A1 F4C43800 mov eax, dword ptr [38C4F4]
00334DFB |. 8B0D F0C43800 mov ecx, dword ptr [38C4F0] ; ecx=[24c4f0] 这里
为什么会这样子?基址为什么也变化?
10 个解决方案
#1
001,003开头是在堆中的数据吧 就是把代码放到堆中执行了 每次重启申请的内存地址可能就不一样
#2
windows vista开始有动态基地址的功能,只要pe头Dll Characteristics有0x40每次加载时基地址都不一样
#3
你这个是什么系统?
#4
我用的 win7
#5
如何能让基址不改变? 把pe头Dll Characteristics 去掉?
#6
如果是DLL的话,有可能是重定位的原因。
找偏移。。
找偏移。。
#7
如果是dll,可以不管,如果是exe,连接时不要指定/DYNAMICBASE
#8
你好 ,重定向 我了解了一下,程序加载dll的时候是有一个偏移地址?
#9
你的程序是exe还是dll
#10
在链接器里设一个默认地址
#1
001,003开头是在堆中的数据吧 就是把代码放到堆中执行了 每次重启申请的内存地址可能就不一样
#2
windows vista开始有动态基地址的功能,只要pe头Dll Characteristics有0x40每次加载时基地址都不一样
#3
你这个是什么系统?
#4
我用的 win7
#5
如何能让基址不改变? 把pe头Dll Characteristics 去掉?
#6
如果是DLL的话,有可能是重定位的原因。
找偏移。。
找偏移。。
#7
如果是dll,可以不管,如果是exe,连接时不要指定/DYNAMICBASE
#8
你好 ,重定向 我了解了一下,程序加载dll的时候是有一个偏移地址?
#9
你的程序是exe还是dll
#10
在链接器里设一个默认地址