阅读:1816回复:14
怎么判断系统已经被ndis hook过一次了?(50分)
我用注册假协议的ndis hook方法处理数据包,可是在有些机器上安装后,启动会死机?我怀疑是其他软件已经hook过一次了,如果其他软件已经hook过一次了,我再hook会造成死机吗?
如果其他软件已经hook过了,我们再hook时应该怎样处理? 我还能拦截到数据包吗? |
|
最新喜欢:hljwb |
沙发#
发布于:2002-07-05 15:14
能不能简单介绍一下ndis hook是指什么?
我再ddk文档里面怎么没看到ndis有hook一说? |
|
板凳#
发布于:2002-07-05 15:20
ndis hook?
呵呵,其实我也不知道是不是这样叫, 就是注册一个dummy protocol,然后得到协议链的头, 然后找到各个protocol,然后找到receive and send ... 然后你进行hook,就可以了,就能得到数据包了! |
|
地板#
发布于:2002-07-05 15:34
如果使用修改PE表的方法进行hook,是不是也存在这样的问题,
如果安装了两种使用这种技术的软件会不会有问题? 能否请大家讨论一下! FW到底用哪种技术好! 1,IMD安装有问题,不能支持PPPoE 2,注册假协议有“第二次hook”的问题 3,PE表呢?它又有什么问题? 还有其他什么技术可以用吗? 唉,当初没有考虑好呀! |
|
地下室#
发布于:2002-07-05 16:23
如果使用修改PE表的方法进行hook,是不是也存在这样的问题, 1,IMD安装有问题,不能支持PPPoE -- 为何,兄台可否,详细点? 2,注册假协议有“第二次hook”的问题 “我用注册假协议的ndis hook方法处理数据包,可是在有些机器上安装后,启动会死机?我怀疑是其他软件已经hook过一次了,如果其他软件已经hook过一次了,我再hook会造成死机吗? 如果其他软件已经hook过了,我们再hook时应该怎样处理? 我还能拦截到数据包吗? ” 以下为偶乱曰: “如果其他软件已经hook过一次了,我再hook会造成死机吗?” 我个人认为是你HOOK 的处理方式问提。 有没有考虑过---“串接”的方式。 偶乱曰的! 见笑。。。。。。。。 :P [编辑 - 7/5/02 by magicx] |
|
|
5楼#
发布于:2002-07-05 16:32
什么叫串接的方式?
1,IMD安装要有ms的数据签名才行,不然很麻烦, 2,PPPoE driver也是用的IMD技术 3,可能我hook的方法有问题,不过确实是有第二次hook的问题,曾经有一位高人好象给我讲过! |
|
6楼#
发布于:2002-07-05 19:34
我用注册假协议的ndis hook方法处理数据包,可是在有些机器上安装后,启动会死机?我怀疑是其他软件已经hook过一次了,如果其他软件已经hook过一次了,我再hook会造成死机吗? 估计多半是你的程序编码有问题, 一般来说如果有别人HOOK过也没有关系。 但是就像DOS时代挂接中断一样。在UNLOAD时要有先后顺序, 如果这个顺序被搞乱的话那就会发生死机。 又如栈,先HOOK,必须先UNHOOKING, |
|
|
7楼#
发布于:2002-07-05 20:22
什么叫串接的方式? 我说的“串接”的方式就如:gjpland 斑竹说的\"就像DOS时代挂接中断一样。在UNLOAD时要有先后顺序, 如果这个顺序被搞乱的话那就会发生死机。 \" |
|
|
8楼#
发布于:2002-07-05 20:36
我在多台机器上试过,有的没问题,有的有问题,有一台机器一启动就会死机,我看了那台机器,只安装了一个Iris抓包软件!
我在我的机器上也装了一个,第一次的时候,先启动Iris,后启动我的东西,再退出我的东西,会造成死机! 刚才我又试了,Iris和我的东西一起跑,哪个先退出都没什么问题,我就呐闷儿了,怎么一台机器上的两个东东,不同时间跑的差别怎么就这么大捏 :) ??? |
|
9楼#
发布于:2002-07-05 20:40
文档已经发给你...... :o |
|
|
10楼#
发布于:2002-07-05 20:42
收到,谢谢 :)
|
|
11楼#
发布于:2002-07-05 21:37
哪位知道什么产品用的也是这种注册假协议的技术开发的,我想测测!
|
|
12楼#
发布于:2002-07-05 21:56
呵呵!估计是因为你处理上面的问题了!因为这个跟DOS里面的拦截INT不一样,你的这个应该尽量允许重入才好
|
|
13楼#
发布于:2002-07-06 09:42
那我如何将如何做可重入呢?
如果我进行了第一次hook,另一软件进行第二次hook, 当我退出的时候,是不是要检查当前系统的各handler是不是我自己的handler,如果不是,那就是又被hook了,那我将做何处理,是不是要功能先退出,然后做等待,做一个定时器,进行扫描,如果系统的handler变回了我自己的handler,再全部退出? 是这样吗? 如果其他软件先进行了hook,我再hook呢? 退出时还用做处理吗? 是不是只要退出的时候检测系统的handler是不是自己的就行了,如果是,那就全部退出,是吗? |
|
14楼#
发布于:2002-07-08 09:16
其实如果是你的先HOOK,那么你就不用怕了,因为肯定是你的驱动程序确定该数据包的处理方式的,如果是后来HOOK,那么你就需要把被替换的HANDLE都要恢复为自己的HANDLE,并且原来的值不能调用,因为很有可能是原来的会调用你的HANDLE
|
|