来源:自学PHP网 时间:2015-04-17 18:33 作者: 阅读:次
[导读] Posted By Inking 此文为学习 《Rootkit...》 以及 SSDT Hook的妙用-对抗ring0 inline hook 后的成果。按照SSDT Hook的妙用-对抗ring0 inline hook...
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。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com