-
-
[求助]关于dll重定位的问题
-
发表于:
2008-8-30 20:32
4139
-
exe文件加显示框是很容易的事,但DLL呢,存在重定位的问题!
29912345 jmp 30012345
...
29912355 xor eax,eax
...
30012345 pushad
push 0
push 0
push ebx
push 0
call [312f10] ;地址[312f10]为MessageBoxA在IAT表中的位置
popad
jmp 29912355
程序在调试过程中能正常显示EBX的值,但由于dll每次在内存中加载不同的基地址,因此,调试的当时是可以的,但保存后再重启程序就直接报错了,主要是29912345,及CALL [312f10]处不再是我修改的地址了,因此报错,请问各位大侠,如何让程序在修改,保存并重启后程序后仍然能指向正确的地址?
这个问题有人提了,也有人回答过,有人这样回答
30012345 pushad
call 3001234B
pop eax
sub eax, 3001234B
add eax, 312f10
push 0
push 0
push ebx
push 0
call dwword ptr [eax]
popad
jmp 29912355
这样可以解决dll地址重定位的问题,但是call 3001234B ,jmp 29912355这样的语句里地址只能是偏移地址吧,我遇到的问题是事情做完了,确返回不回去了,就是最后一句jmp 29912355里地址无法正确的取得,请大侠帮帮忙啊,非常感谢!!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!