首页
论坛
专栏
课程

[求助]如何给DLL文件重定位加MessageBoxA显示框

2007-3-24 16:41 4339

[求助]如何给DLL文件重定位加MessageBoxA显示框

2007-3-24 16:41
4339
.exe文件加显示框是很容易的事,但DLL呢,存在重定位的问题!

某一DLL,如其运行中显示EBX的值为:0123456;查看其输入表,有MessageBoxA函数,我希望用这个函数将EBX的值自动显示出来,于是改造文件为:

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]处不再是我修改的地址了,因此报错,请问各位大侠,如何让程序在修改,保存并重启后程序后仍然能指向正确的地址?

2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!

最新回复 (4)
晓斌 2007-3-24 17:05
2
0
         call  @F
         @@:
         pop  ebx
         sub  ebx,offset @B
         pushad
         push 0
         push 0
         push eax
         push 0
         call [ebx + 312f10]
         popad

         call  @F
         @@:
         pop  ebx
         sub  ebx,offset @B
是经典的解决重定位代码
cyclotron 17 2007-3-24 17:05
3
0
这样写

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
晓斌 2007-3-24 17:10
4
0
楼上的刚才少写个pop eax吧,加得可真快哦,呵呵
wyqzm 1 2007-3-24 18:44
5
0
有道理,学习了,谢谢各位兄弟!
游客
登录 | 注册 方可回帖
返回