364589886 发表于 2011-2-25 12:50:38

360的hook架构源码

本帖最后由 364589886 于 2011-2-25 13:04 编辑

这个基本和360的hook架构是一样的(有一点区别,360是用了个二级跳,即jmp到一个地址,然后这个地址同样是个jmp,最后由这个jmp跳转到真正要执行的代码处,达到的效果就是一些ARK工具检测时只能显示为unknow module,不过这个貌似是流氓软件的惯用手段,作为安全软件来说,用不着这样吧。。。。。此处正好说明了360的流氓本质,哈哈)。。。。。要正式使用的话,自己添加ioctl,往ServiceFilterInfoTable里注册自己的过滤函数

364589886 发表于 2011-2-25 12:57:26

不过不得不赞一句。。。。360的这个hook架构确实很不错,易于扩展和控制
比如:需要增加对某函数的hook,则只需要往ServiceFilterInfoTable的相应数组元素里添加一个自己的过滤函数(数组下标和SSDT里相应函数的index一致),要暂停过滤这个函数,只需要把相应数组元素的控制字段设为0,要删除过滤这个函数,则只需要把相应数组元素全部清零就可以了

有个问题:代码里对只读内存的写,采用了改写CR0寄存器的方式,这里需要同步,我采取的是关中断的方式,但cli这个汇编指令只对当前处理器有效(自旋锁也是一样的情况),对于多核情况,如何做到同步,很头痛。。。。若有人有好的办法,烦请留言告知

Xor 发表于 2011-2-25 16:54:01

可以暂时关闭另一个核心么(好像不能)或者多线程并发占用cpu?

好像一本书上讲过不用cr0的方法,不过忘了:lol

364589886 发表于 2011-2-25 17:13:21

你说的是重新弄个可写的内存描述符(MDL)吧。。。。这个与用同步没关系
同样得找办法解决同步问题

Tesla.Angela 发表于 2011-2-25 20:17:56

乔丹二世以前贴过代码:
http://www.m5home.com/bbs/thread-5071-1-1.html

Tesla.Angela 发表于 2011-2-25 20:23:10

仔细看了下,觉得这个Hook KiFastCallEntry的构架比我以前写的那个好多了。

马大哈 发表于 2011-2-26 13:26:28

这是从360里反出来的么?

364589886 发表于 2011-2-26 15:54:56

Tesla.Angela 发表于 2011-2-25 20:17 static/image/common/back.gif
乔丹二世以前贴过代码:
http://www.m5home.com/bbs/thread-5071-1-1.html

这个还是有问题。。。。比如。。。这个代码里,替换的是两条指令,一个sub,一个shr,假设其它代码执行到了sub,然后此时被我们的驱动线程中断,然后后面的内容被替换成我们自己的了。。。等我们替换完,刚才被中断的那个线程继续运行时,必定要蓝了。。

364589886 发表于 2011-2-26 15:55:51

马大哈 发表于 2011-2-26 13:26 static/image/common/back.gif
这是从360里反出来的么?

嗯。。。。多数是逆向出来的
有些是我自己的理解

马大哈 发表于 2011-2-26 17:12:15

364589886 发表于 2011-2-26 15:55 static/image/common/back.gif
嗯。。。。多数是逆向出来的
有些是我自己的理解

看起来这个架构很不错啊.

说明360里面还是有牛人的,只是这老板的名声.......{:1_111:}

Tesla.Angela 发表于 2011-2-26 17:19:40

回复 364589886 的帖子

没这么多意外,我在Intel和AMD的四核机上试过,没事。。。

364589886 发表于 2011-2-26 19:57:22

Tesla.Angela 发表于 2011-2-26 17:19 static/image/common/back.gif
回复 364589886 的帖子

没这么多意外,我在Intel和AMD的四核机上试过,没事。。。

理论上存在这种可能性

Tesla.Angela 发表于 2011-2-26 23:17:44

回复 364589886 的帖子

我知道,只是机率小,反正我没有遇到过。

364589886 发表于 2011-2-28 14:22:53

回复 Tesla.Angela 的帖子

你有时间的话,完善哈这个驱动,搞个SSDThook的通用组件嘛

iniwf 发表于 2011-3-22 00:01:40

嗯,这个确实不错

KindOf 发表于 2011-4-30 16:29:28

有用。。回个帖子。。。

hacknone 发表于 2011-5-4 22:30:24

mark,收藏,下下来一起学习!

男人心计 发表于 2011-5-8 01:52:38

都是牛人,无法学习

chris2211 发表于 2011-7-9 15:17:58

谢谢分享了啊

jackqiang 发表于 2011-8-19 12:05:41

{:soso_e179:} 360其实就是流氓

evilkis 发表于 2012-3-1 00:24:37

下载看看

watchsky 发表于 2012-3-1 12:43:56

364589886 发表于 2011-2-25 12:57 static/image/common/back.gif
不过不得不赞一句。。。。360的这个hook架构确实很不错,易于扩展和控制
比如:需要增加对某函数的hook,则 ...

不断的发线程,直到其他cpu都自旋

wjshome 发表于 2012-6-13 10:55:42

学习。

wsnhyjj 发表于 2012-6-16 21:31:44

360的技术还是不错的,这个架构很好

kuxing100 发表于 2012-8-6 11:47:18

学习之!!!

TouDaiMa 发表于 2012-9-28 14:59:22

好好学习下!不流氓的话很难在中国的软件市场上混得一席之地!
页: [1]
查看完整版本: 360的hook架构源码