Inv*_*tic 7 windows driver wdk
当我编译驱动程序时,当我以Windows 8.1为目标时,会发生一些非常奇怪的事情.
一旦加载,它就会与bugcheck崩溃KERNEL_SECURITY_CHECK_FAILURE,第一个参数6,意思是" The stack cookie security cookie was not properly initialized by the loader".
这可能是由于构建驱动程序仅在Windows 8上运行并尝试在早期版本的Windows上加载驱动程序映像引起的.要避免此问题,您必须构建驱动程序以在早期版本的Windows上运行". 当我以Windows 7为目标时,不会发生此错误.
我能够找到这个错误发生的确切位置.它发生在__security_init_cookie被调用的函数中GsDriverEntry.
INIT:000000014000C1B4 __security_init_cookie proc near ; CODE XREF: GsDriverEntry+10p
INIT:000000014000C1B4 mov rax, cs:__security_cookie
INIT:000000014000C1BB test rax, rax
INIT:000000014000C1BE jz short loc_14000C1DA
INIT:000000014000C1C0 mov rcx, 2B992DDFA232h
INIT:000000014000C1CA cmp rax, rcx
INIT:000000014000C1CD jz short loc_14000C1DA
INIT:000000014000C1CF not rax
INIT:000000014000C1D2 mov cs:__security_cookie_complement, rax
INIT:000000014000C1D9 retn
INIT:000000014000C1DA ; ---------------------------------------------------------------------------
INIT:000000014000C1DA
INIT:000000014000C1DA loc_14000C1DA: ; CODE XREF: __security_init_cookie+Aj
INIT:000000014000C1DA ; __security_init_cookie+19j
INIT:000000014000C1DA mov ecx, 6
INIT:000000014000C1DF int 29h ; Win8: RtlFailFast(ecx)
Run Code Online (Sandbox Code Playgroud)
从这个反汇编中我们可以看到它执行了2次检查.
The first check checks if rax (__security_cookie) is zero and the
second check compares it to 2B992DDFA232h.
Run Code Online (Sandbox Code Playgroud)
但是,__security_cookie在我的二进制文件中声明为2B992DDFA232h,因此永远不应该调用中断,但不知何故它是.
小智 5
Windows 8+ 能够为加载的可执行映像生成安全 cookie。安全 cookie 的位置存储在标题中的LoadConfig数据目录中,PE以便 Windows 加载程序可以轻松替换它。
原因是操作系统应该能够以安全的方式生成 cookie(例如,使用RDRAND可用的指令和/或其他随机熵源)。也不需要将 cookie 初始化代码复制到每个驱动程序。
如果您的驱动程序面向 Windows 8(和更新版本),它希望操作系统初始化 cookie。因此,BSOD如果 cookie 没有改变,它就会引发。
另一方面,如果您的驱动程序面向较旧的操作系统(Windows 7),则编译器必须生成初始化 cookie 的代码(如果操作系统尚未初始化)。这样,驱动程序与所有 Windows 版本兼容。
我还没有找到有关此 Windows 8 功能的任何官方描述,但这里有一篇描述它的文章:
Reversing Windows8: Interesting Features of Kernel Security
在加载内核驱动程序时,Windows 8 调用 MiProcessLoadConfigForDriver 生成安全 cookie,在 PE 中定位旧的安全 cookie 并替换它。
新的 Windows8 内核驱动程序将检查其安全 cookie 是否已被替换。
| 归档时间: |
|
| 查看次数: |
1953 次 |
| 最近记录: |