找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 191|回复: 0

对付TP的DbgkpSetProcessDebugObject和DbgkpQueueMessage的方法

[复制链接]

210

主题

371

回帖

0

积分

管理员

积分
0
发表于 2013-10-12 12:10:30 | 显示全部楼层 |阅读模式
过TP的DbgkpSetProcessDebugObject和DbgkpQueueMessage

我们在虚拟机里开一个计算器(用于调式测试)

此时,开启OD,先不要附加

先用WINDBG暂停虚拟机下 bp DbgkpQueueMessage ,然后G
OD附加calc.exe 此时WINDBG断下
以下是DbgkpQueueMessage 的调用堆栈
这个是附加的时候



图片:图片1.png

这个是DbgkpQueueMessage的调用堆栈 (这个函数被频繁调用),附加的时候只命中了这里

这个是DbgkpQueueMessage的调用堆栈 (这个函数被频繁调用),重新加载的时候命中这些地方



图片:图片2.png



图片:图片3.png



图片:图片4.png

综上所述
调试器间接调用了 DbgkpPostFakeThreadMessagesDbgkpSendApiMessage

DbgkpPostFakeModuleMessages

我们解析PDB就可以定位到DbgkpPostFakeThreadMessagesDbgkpSendApiMessage
通过R3层解析完,派遣传入R0层,直接使用即可绕过方法,和对付KiAttachProcess一样,要在外部函数绕过,TP对DbgkpQueueMessage有重启校验,直接恢复会重启
//===========================================================================
这个是DbgkpSetProcessDebugObject的调用堆栈 (这个函数只调用了一次)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 16:43 , Processed in 0.067258 second(s), 20 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

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