看流星社区

 找回密码
 注册账号
查看: 4441|回复: 10

一种另类的对抗debugport清零的方法(有点标题党了= 。=)

[复制链接]

该用户从未签到

发表于 2011-8-7 13:09:28 | 显示全部楼层 |阅读模式
前几天晚上看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,怎么说呢,有兴趣就读完我的垃圾代码吧,没兴趣,飘过吧~

贴代码会不会太多了……而且我写代码不习惯写很多注释。呃……将就着看吧
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

发表于 2011-9-5 17:29:31 | 显示全部楼层
看看在说。。。。。。。。

该用户从未签到

发表于 2011-9-8 19:51:05 | 显示全部楼层
继续看。。。

该用户从未签到

发表于 2011-9-10 20:03:17 | 显示全部楼层
看看 谢谢楼在江湖

该用户从未签到

发表于 2011-12-3 17:22:01 | 显示全部楼层
谢谢分享谢谢分享

该用户从未签到

发表于 2012-2-4 21:51:54 | 显示全部楼层
贴代码会不会太多了,有代码就行啦

该用户从未签到

发表于 2012-2-26 00:44:07 | 显示全部楼层
回复 1# yhc

该用户从未签到

发表于 2012-11-20 22:05:56 | 显示全部楼层
谢谢分享,,,。

该用户从未签到

发表于 2012-12-5 23:49:36 | 显示全部楼层
看看思路!

该用户从未签到

发表于 2013-9-28 11:30:07 | 显示全部楼层
希望大家帮我把这个帖发给你身边的人,谢谢!
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 16:19

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表