yhc 发表于 2011-8-7 13:09:28

一种另类的对抗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 *****

yq8308 发表于 2011-9-5 17:29:31

看看在说。。。。。。。。

waizl1986 发表于 2011-9-8 19:51:05

继续看。。。

wu0you123 发表于 2011-9-10 20:03:17

看看 谢谢楼在江湖

msn882 发表于 2011-12-3 17:22:01

谢谢分享谢谢分享

add3to6 发表于 2012-2-4 21:51:54

贴代码会不会太多了,有代码就行啦

kfc123 发表于 2012-2-26 00:44:07

回复 1# yhc

现代味儿 发表于 2012-11-20 22:05:56

谢谢分享,,,。

cloud210 发表于 2012-12-5 23:49:36

看看思路!

cooby 发表于 2013-9-28 11:30:07

希望大家帮我把这个帖发给你身边的人,谢谢!
页: [1] 2
查看完整版本: 一种另类的对抗debugport清零的方法(有点标题党了= 。=)