windows内核

这篇文章的目的是介绍一种基于内核态内存的越界写入通用利用技术和相关工具复现。
本篇主要讲解了Critical Process/Thread是如何被设置的,Process又是如何导致蓝屏的,介绍了其中的一些重要结构和类型,最终解决了问题1和问题2,经过一些探索又对Critical Thread产生了疑问,下篇文章将为大家解答这些疑问。
蓝屏有它存在的理由,在遇到非常严重的严重错误时,为了避免更严重的错误,立马中止系统的所有操作,顺便给个提示,让你知道错误的原因,对于一个专业人员来说,这些机制确实是非常重要的。
本文借助IDA逆向分析该技术的实现原理并给出了关键数据结构及调用链,通过双机内核调试验证了该数据结构以及调用链的正确性。
这里主要讨论的计时API函数为QueryPerformanceCounter。
漏洞发生在win32k.sys模块的RGNMEMOBJ::vCreate函数中。通过对比打补丁前后可以发现在打补丁之后,在调用ExAllocatePoolWithTag之前添加了ULongAdd和ULongLongToULong这两个函数。