您的位置:首页 > 其它

180311 逆向-反调试技术(4)SystemKernelDebuggerInformation

2018-03-23 16:55 330 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: