Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在创建进程通知例程中从内核驱动程序分配进程TLS索引安全吗_Windows_Multithreading_Windows Kernel - Fatal编程技术网

Windows 在创建进程通知例程中从内核驱动程序分配进程TLS索引安全吗

Windows 在创建进程通知例程中从内核驱动程序分配进程TLS索引安全吗,windows,multithreading,windows-kernel,Windows,Multithreading,Windows Kernel,安全吗?如果在CREATE_PROCESS_NOTIFY_例程中,我将使用RtlFindClearBitsAndSet分配TLSThread本地存储索引? 我看到,TlsAlloc的例行程序是这样做的: RtlAcquirePebLock RtlFindClearBitsAndSet-TIB->TEB->PEB->TLSBitmap RtlReleasePebLock 我已经在用户模式下对此进行了测试,目前计划将此过程提升到我的内核驱动程序中,而无需针对我的特定操作执行步骤1和步骤3 所以,基本

安全吗?如果在CREATE_PROCESS_NOTIFY_例程中,我将使用RtlFindClearBitsAndSet分配TLSThread本地存储索引? 我看到,TlsAlloc的例行程序是这样做的:

RtlAcquirePebLock

RtlFindClearBitsAndSet-TIB->TEB->PEB->TLSBitmap

RtlReleasePebLock

我已经在用户模式下对此进行了测试,目前计划将此过程提升到我的内核驱动程序中,而无需针对我的特定操作执行步骤1和步骤3


所以,基本上,我的问题是——安全吗?

创建进程时,进程通知例程在创建新进程的线程上下文中运行,然后新进程中的初始线程开始执行。此时,新工艺PEB未完全初始化。此时,PEB中的PEB.TlsBitmap成员为0。新进程中的ntdll.dll稍后将其指定为未导出的全局变量-ntdll.TlsBitmap。因此,质疑事件不安全/不安全。根本不可能

此时,TlsBitmap为0@RbMm,谢谢你的回答!TLSBitmap何时被填充?第一个线程何时生成?也许在创建线程通知例程中执行此操作更好?我会在图片填充时向您发布图片。内部LdriInitializeProcess。所以创建线程通知例程在这里没有帮助。若说真的话,创建进程通知例程在进程中创建第一个线程时准确调用。所以在某个时候,创建线程通知例程。对你来说太早了task@Kracken-不是,不是更好。在用户模式下开始执行线程之前调用CreateThreadNotify