对抗debugport清零的另一种方法
前几天晚上看intel手册突然想到了一种另类的对抗debug port的方法,理论上蛮通用的,于是写了几百行代码实验了下
但是结果很悲催,IDT HOOK死活蓝屏,群里几个人帮我查那段代码错误,结果一致认为代码没错,说我RP不行
哎……好吧,我认了,我很久没扶老奶奶过马路了
我简单说下思路,如果你能搞定,请联系我,让我把这些代码close,谢了
前提:你必须知道目标驱动保护(简称213.sys)的哪个进程(简称213.exe),从而得到此进程的debugport地址
你必须确认213.sys是否创建了一个线程来不断清零这个debugport
好了,不卖关子了,嘿嘿,进入正题
1:先hook 掉NtGetContextThread,NtSetContextThread,如果目标驱动没对这两个函数做手脚,此步略过
2:IDT HOOK 一号向量
3:枚举系统线程,对每个线程下硬件写入断点,地址就是213.sys要保护的进程的debugport
理论流程是这样的,保护线程对debugport进程,触发断点->1号向量接管->进入我们的函数->简单的处理是把debugport改回来,复杂的处理是自动寻找213.sys清零213.exe的debugport的函数体内可以modify的位置,改掉它,使清零操作无效,我用XDE(一个反汇编引擎)试过,后来把这块代码去了,太浪费生命了
现在思路有了,写代码就简单了。但是我很悲催的没有完成……主啊,饶恕我吧,我以后一定好好做人……
贴代码会不会太多了……而且我写代码不习惯写很多注释。呃……将就着看吧
http://blog.sina.com.cn/s/blog_738b50740100q6zr.html用户系统信息:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.3.8.3000 Chrome/18.0.966.0 Safari/535.12