首页
社区
课程
招聘
[求助]关于dll重定位的问题
发表于: 2008-8-30 20:32 4140

[求助]关于dll重定位的问题

2008-8-30 20:32
4140
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里地址无法正确的取得,请大侠帮帮忙啊,非常感谢!!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 256
活跃值: (748)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
CALL 123456

123456:
mov eax,[esp]
ret
2008-8-30 22:33
0
游客
登录 | 注册 方可回帖
返回
//