180307 逆向-反调试技术(2)CheckRemoteDebuggerPresent

1625-5 王子昂 总结《2018年3月7日》 【连续第522天总结】
A. 反调试技术(2)
B.

CheckRemoteDebuggerPresent

BOOL CheckRemoteDebuggerPresent(
HANDL hProcess, 
PBOOL pbDebuggerPresent
);

这是另外一个MSDN上提供的检测调试器的函数,测试发现及时修改BeingDebugged标志也会被检测到

这个函数的核心代码只有一句话,就是对NtQueryInformationProcess的调用。
NtQueryInformationProcess不是Win32API,而是NativeAPI。
大多NativeAPI都是未文档化的,因此没有源码和使用说明。不过GaryNebbett写了一本参考手册《Windows NT 2000 Native API Reference》

手册中写着CheckRemoteDebuggerPresent调用了NtQueryInformationProcess的第7个值ProcessDebugPort
这个值是系统用来与调试器通信的端口句柄,若将其设为0,系统就不会向用户态调试器发送调试事件通知,调试器当然就无法工作了

到了这一步,自然想到通过NtSetInformationProcess函数将DebugPort设为0。不过可惜的是说明中写明了“调试端口仅能在初始状态(即为0)时设置”,因此无法在调试器启动进程后修改Port

ThreadHideFromDebugger

虽然NtSetInformationProcess这条路

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值