一种另类的对抗debugport清零的方法(有点标题党了= 。=)
前几天晚上看intel手册突然想到了一种另类的对抗debug port的方法,理论上蛮通用的,于是写了几百行代码实验了下但是结果很悲催,IDT HOOK死活蓝屏,群里几个人帮我查那段IDT HOOK的代码的错误,结果一致认为代码没错,说我RP不行
哎……好吧,我认了,我很久没扶老奶奶过马路了
我简单说下思路,如果你能搞定,请联系我habo.amy@gmail.com,让我把这些代码close,好睡个安稳觉,谢了
前提:你必须知道目标驱动保护(简称213.sys)的哪个进程(简称213.exe),从而得到此进程的debugport地址
你必须确认213.sys是否创建了一个线程来不断清零这个debugport
好了,不卖关子了,嘿嘿,进入正题
1:先hook 掉NtGetContextThread,NtSetContextThread,如果目标驱动没对这两个函数做手脚,此步略过
2:IDT HOOK 一号向量
3:枚举系统线程,对每个线程下硬件写入断点,地址就是213.sys要保护的进程的debugport
理论流程是这样的,保护线程对213.exe的debugport清零,触发断点-->1号向量接管-->进入我们的函数->简单的处理是把debugport改回来,复杂的处理是自动寻找213.sys清零213.exe的debugport的函数体内可以modify的位置,改掉它,使清零操作无效,我用XDE(一个反汇编引擎)试过,后来把这块代码去掉了,太浪费生命了……因为我觉得硬件断点速度很快,所以也就直接使用简单的办法,我承认我很懒,因为使用后者,又要多百多行代码,几千个字母,我手抽筋了
你们在后面的代码会看到我是针对TP做的,也许你们会说干掉TP有很多种方法,但是我要的不是结果,我要的过程……所以才有了这段尝试
现在思路有了,写代码就简单了。但是我很悲催的没有完成……我承认代码写的很烂很烂很烂,但是我第一次发帖,大家还是低调点给我找找错误吧,因为我的确不喜欢太傲的人,我会说他很213,怎么说呢,有兴趣就读完我的垃圾代码吧,没兴趣,飘过吧~
贴代码会不会太多了……而且我写代码不习惯写很多注释。呃……将就着看吧
**** Hidden Message ***** 看看在说。。。。。。。。 继续看。。。 看看 谢谢楼在江湖 谢谢分享谢谢分享 贴代码会不会太多了,有代码就行啦 回复 1# yhc 谢谢分享,,,。 看看思路! 希望大家帮我把这个帖发给你身边的人,谢谢!
页:
[1]
2