好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

杀掉IceSword - Windows操作系统 - 自学php

Posted By Inking      

        此文为学习 《Rootkit...》 以及 SSDT Hook的妙用-对抗ring0 inline hook 后的成果。按照SSDT Hook的妙用-对抗ring0 inline hook 里说的,IceSword inline Hook 了 NtOpenProcess() 函数,但是当我自己写出代码的时候怎么也无法成功关闭IceSword,后来经过调试才发现我的 IceSword 在Hook了 NtOpenProcess() 函数的同时也 Hook 了 NtTerminateProcess() 函数,而且也是 inline Hook,不过由于在数 NtTerminateProcess() 在SSDT中的偏移的时候范了个错误,导致花了整整一天才得以发现,真是累人啊。

        代码基本上和 SSDT Hook的妙用-对抗ring0 inline hook 一文很相似,只是增加了 Hook NtTerminateProcess() 的部分。在写 Hook NtTerminateProcess() 时也碰到了个问题:不知道怎么得到 NtTerminateProcess() 的地址。我这里是保持 SSDT 的内容来实现的,但是这种方式并不是很好,要是之前 SSDT 的内容已经被修改过了怎么办呢?自己也找了相关资料,但是好像是通过扫描 NtTerminateProcess() 的特征码来实现的,不知道有没有更好的办法。

工程文件(包含我的IceSword版本,防止版本不一致导致的实验无法成功)请点击 这里 下载 ,由于没有写驱动加载和结束IceSword的代码,所以测试时请先用其它工具加载驱动,然后尝试在任务管理器里关闭IceSword。

查看更多关于杀掉IceSword - Windows操作系统 - 自学php的详细内容...

  阅读:250次