180311 逆向-反调试技术(4)SystemKernelDebuggerInformation
2018-03-23 16:55
330 查看
1625-5 王子昂 总结《2018年3月11日》 【连续第526天总结】
A. 反调试技术(4)
B.
当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
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
相关文章推荐
- 180307 逆向-反调试技术(2)CheckRemoteDebuggerPresent
- 【摘录】嵌入式Linux之Kernel(裁减移植)启动调试技术
- 反调试技术- IsDebuggerPresent,原理 与 反反调试
- 动态调试与静态反汇编合一,运用虚拟机技术创建可逆向运行的调试器
- iOS高级调试&逆向技术-汇编寄存器调用
- iOS高级调试&逆向技术-汇编寄存器调用
- 嵌入式Linux系统内核Kernel(裁减移植)启动调试技术(回顾)
- <逆向工程核心原理> 静态反调试技术总结
- 嵌入式Linux之Kernel(裁减移植)启动调试技术
- 嵌入式Linux之Kernel(裁减移植)启动调试、打印技术 printascii(补充)、内核调试
- iOS高级调试&逆向技术-汇编寄存器调用约定教程
- 嵌入式Linux之Kernel(裁减移植)启动调试、打印技术 printascii(补充)、内核调试
- 调试逆向分为动态分析技术和静态分析技术(转)
- 嵌入式Linux之Kernel(裁减移植)启动调试、打印技术 printascii(补充)、内核调试
- <逆向工程核心原理> 动态反调试技术总结
- 180306 逆向-反调试技术(1)BeingDebugged
- linux-kernel调试技术大全<一>上海嵌入式索漫科技培训教材
- Windows Kernel Way 1:Windows内核调试技术
- Windows Kernel Way 1:Windows内核调试技术
- 180310 逆向-反调试技术(3)DebugObject