概述
1625-5 王子昂 总结《2018年3月11日》 【连续第526天总结】
A. 反调试技术(4)
B.
SystemKernelDebuggerInformation
NativeAPI中还有一个函数ZwQuerySystemInformation
当SystemInformation = SystemKernelDebuggerInformation的时候可以判断是否有系统调试器存在
这个API跟ZwQueryProcessInformation没有多大区别,但是从检测目标可以看出来,它针对的是Kernel,即内核级别的调试器
调试器分为硬件调试器和软件调试器,前者暂不讨论,后者还分为用户态R3调试器和内核态R0调试器
- 用户态调试器
VC和OllyDbg是使用DebugAPI来开发的,自身也只是一个Ring3级应用程序,因此只是用户态调试器,只能调试应用程序,无法中断内核,自然也就无法调试驱动。 - WinDbg
WinDbg是一个比较奇特的调试器,即可以在用户模式下以R3级别调试,也可以使用Kernel模式进入R0模式调试,还可以调试Dump文件。 - 内核态调试器
当它以R0级别双机调试时(因为内核中断时系统都被中断,单机上的程序自然也会被中断,因此无法单机调试)即处于内核态调试器。
值得一提的是,SoftICE这个神奇的程序可以单机调试内核,但它不会被KernelDebugger的API探测到
这跟它们的实现原理有关:
WinDbg在双机调试时,只是通过端口传输了一些数据给系统,真正的内核调试机制是被Windows集成在内核中的。因此当使用调试方式启动系统时,系统会自己标识一些记号,导致KernelDebugger的API可以发现
而SoftICE是自己实现的调试功能,不需要太多操作系统的支持,因此不会被该API发现
可惜的是,SoftICE仅支持到DOS和WIN2000系统,之后就停止开发了。
C. 明日计划
NativeAPI
最后
以上就是粗犷白昼为你收集整理的180311 逆向-反调试技术(4)SystemKernelDebuggerInformation的全部内容,希望文章能够帮你解决180311 逆向-反调试技术(4)SystemKernelDebuggerInformation所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复