首页
社区
课程
招聘
[求助]替换系统dll实现hook api
发表于: 2008-1-24 11:26 6195

[求助]替换系统dll实现hook api

2008-1-24 11:26
6195
windows不是有一个特性说加载exe程序时会先在本目录查找导入的dll吗
所以弄个dll导出目标程序所有引用的函数,然后在dll当中hook到调用,再转发到系统dll的函数

可是为什么不行啊,
比如用记事本和user32.dll,我把他拷到单独目录中
可是运行后还是能删除user32.dll了,说明同目录的的user32.dll根本没被加载啊

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
不是所有DLL都可以的
2008-1-24 11:30
0
雪    币: 50161
活跃值: (20620)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
user32.dll,kernel32.dll等系统DLL好像不行的。你换其他DLL试试,如ws2_32.dll等
2008-1-24 11:32
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有什么限制呢

我想hook到一个程序的writefile可以吗

我想过修改导入表和跳转表,但无奈自己水平不够
2008-1-24 11:32
0
雪    币: 7325
活跃值: (3803)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
5
除了ntdll.dll,kernel32.dll
其他的都行吧

至少xp sp2是这样的
具体细节可以去看看windows 核心编程里面的dll部分

因为user32.dll不是那么随便就能替换掉的 (绝对不是不能替换)
2008-1-24 11:34
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
书里面讲到的方法是注如dll然后覆盖iat地址好象

可是这程序一执行就开始操作,等不及注入啊,好象在create_suspend下注入也是不行的
唯一的办法只能手工修改exe了
2008-1-24 11:37
0
雪    币: 7325
活跃值: (3803)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
7
貌似很多人没看过USER32.DLL可以替换成本目录的

放个图大家欣赏一下,没什么高深技术
上传的附件:
2008-1-24 11:44
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
怎么做的,user32.dll和kernel32.dll有什么不同吗
kernel32.dll应该也行吧
2008-1-24 11:51
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
其实用OD调入exe停在系统断点的时候就能大概明白,kernel32.dl和ntdll.dlll是在程序还没有初始化IAT表的时候就已经装入内存了,这应该是无法替换的。至于user32.dll是否能替换我也不清楚。不过上面的那个图也许就是为了对付老王的壳,先避过message的部分,使得epe无法注入而搞得高招吧。
另外,一个纯console应用是不装入user32.dll得,楼主可以试试写各console程序,然后loadlibrary(user32.dll)试试,也许这样可以替换掉。
2008-1-24 17:25
0
雪    币: 7325
活跃值: (3803)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
10
上面那个图是直接运行EPE得到的结果,没写代码,没开调试器
所以说没什么高深的技术

难道要放视频才相信
2008-1-24 17:51
0
游客
登录 | 注册 方可回帖
返回
//