首页
社区
课程
招聘
5
[原创]Delphi Hook Library(X86/X64)
发表于: 2013-7-30 22:48 23486

[原创]Delphi Hook Library(X86/X64)

2013-7-30 22:48
23486

第一次在看雪发文.
常常见到有朋友问Hook怎么做和COM的HOOK怎么弄.
来点干货,给Delphi业界朋友做点贡献.把我之前写的一个Delphi Hook库放到了Google Code上.方便大家.
支持X86,X64的函数钩子.线程安全.
封装了对COM对象的Hook.在Hook COM对象的时候方法时会自动判断是Delphi还是其他语言实现的COM对象,从而进行智能处理.

其实代码加注释也就几百行.一个单元文件而已.
其中使用了开源的BeaEngine的反汇编引擎来判断代码的大小,避免机器指令被从中间切开.

Google Code
http://code.google.com/p/delphi-hook-library/

或者到我的博客下载最新代码:
http://www.raysoftware.cn/?p=357

关键代码如下:


[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费 5
支持
分享
赞赏记录
参与人
雪币
留言
时间
心游尘世外
为你点赞~
2024-5-31 05:51
QinBeast
为你点赞~
2024-5-31 05:43
飘零丶
为你点赞~
2024-4-3 00:45
shinratensei
为你点赞~
2024-2-20 00:16
PLEBFE
为你点赞~
2023-3-7 00:30
最新回复 (19)
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
2
感谢分享,收藏备用
2013-7-30 23:06
0
雪    币: 144
活跃值: (42)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
板凳~。
2013-7-30 23:15
0
雪    币: 103873
活跃值: (201914)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
+1
2013-7-31 07:56
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个纯干货,谢谢楼主分享了。。。学习了。
2013-7-31 09:16
0
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
6
感谢分享,收藏备用
2013-7-31 09:28
0
雪    币: 1283
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
其实对于Com的HOOK有一个更智能的方式,不必要自己去指定MethodIndex,自己指定这个,貌似也不太现实。Hook COM,可以先在内存中加载,创建对应的内容信息,然后获得要挂钩的函数偏移,之后根据偏移,可以计算出实际的地址,这样就不用指定这个Methodindex了。
2013-7-31 11:05
0
雪    币: 126
活跃值: (189)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
之所以指定Index实际上就是用来计算偏移的.否则怎么计算偏移呢
2013-7-31 14:05
0
雪    币: 219
活跃值: (878)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
9
备份~~
2013-7-31 15:01
0
雪    币: 1283
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
可以计算的!先获取基地址,获取接口,之后获取接口中的函数的地址,地址对应的基地址的偏移就是的了!以前Hook D3D和OPENGL的时候,就是这样整的,不过不通用,只能针对性的Hook某函数
2013-7-31 15:54
0
雪    币: 126
活跃值: (189)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
我之前Hook D3D也是用Index算的,Index一样要取基地址,接口,方法表地址,但是你总要知道你要Hook对应的是方法表中的第几个函数啊.
2013-7-31 16:56
0
雪    币: 220
活跃值: (836)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
wr960204武稀松.2012.2
武稀松,这个名字亮了
2013-7-31 20:04
0
雪    币: 22
活跃值: (478)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
先备份 后学习
2013-8-1 12:56
0
雪    币: 1283
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
。。。不知道怎么说了,方式不同,我说的那种不是通用方法!你这个是通用方法
2013-8-1 14:13
0
雪    币: 1283
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
呵呵,这个可是Delphi界前辈级的牛A-牛C中间的人物!
2013-8-1 14:15
0
雪    币: 87
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
第一句就没看懂。我是来膜拜的
2013-8-1 14:26
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
收藏备用的好东西啊
2013-8-5 14:59
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
好东西啊
收藏一下,慢慢看
2013-8-5 23:15
0
雪    币: 319
活跃值: (1531)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
19
LZ的博文是很有水平的,支持!
Delphi在这方面确实比较空白,C++下都有hook库,LZ也算填了个空白
2013-8-6 08:24
0
雪    币: 126
活跃值: (189)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
其实也不算填补空白,估计很多Delphi码农兄弟们早就有自己的Hook库了,只是自己用没发布.
比如这个是我在2012写的.之前2002年的时候我就写了自己的Delphi Hook库.2012年重写是因为Delphi支持64位编译器.

现在发布了是方便初学者不会写Hook代码的或者减少大家重复造轮子.
2013-8-6 21:48
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册