首页
社区
课程
招聘
[求助]dll中如何获取LoadLibrary的返回地址
发表于: 2012-10-26 12:28 3841

[求助]dll中如何获取LoadLibrary的返回地址

2012-10-26 12:28
3841
举例:
程序a.exe中
0x00401000 : HMODULE hModule = LoadLibrary("a.dll")
0x00401010 : printf("hello");

我们知道在call LoadLibrary时,程序会先把0x00401010压入堆栈

请问如何在a.dll中取得这个地址?

如果只是调用子程序我知道怎么取,在子程序内部取esp+4就是返回地址了,
但是这边是dll,就不知道怎么在dll里面推算了

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 138
活跃值: (306)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
很简单,从LoadLibrary 的地址开始,特侦码搜索 LoadLibrary 的尾部的ret ,然后Hook这个地址,在hook例程里取当时的esp
2012-10-26 13:40
0
雪    币: 113
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我开始是一步步跟踪进ntdll.dll再到a.ll中的dllmain找出了堆栈便宜地址之差0x740,
不同版本误差太大,而且硬编码,我不太满意

你的这个搜索特征码的方法貌似还不错,我试试,先谢过
2012-10-26 14:30
0
游客
登录 | 注册 方可回帖
返回
//