首页
社区
课程
招聘
[求助]如何给DLL文件重定位加MessageBoxA显示框
发表于: 2007-3-24 16:41 6300

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

2007-3-24 16:41
6300

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


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 333
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
         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
是经典的解决重定位代码
2007-3-24 17:05
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
3
这样写

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:05
0
雪    币: 333
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上的刚才少写个pop eax吧,加得可真快哦,呵呵
2007-3-24 17:10
0
雪    币: 256
活跃值: (758)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
有道理,学习了,谢谢各位兄弟!
2007-3-24 18:44
0
游客
登录 | 注册 方可回帖
返回
//