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