我正在开发一个可以在windows中挂接一些功能的驱动程序(强化驱动程序,可以阻止一些操作)。问题是,我想记录试图运行这些操作的用户。
例如,我在ZwSetValueKey上放置了一个钩子,以便过滤注册表写入。
钩子工作得很好,但我不知道如何获取调用者的SID。我发现我可以使用ExGetPreviousMode确定调用者的模式(即用户模式或内核模式)。但是,如果调用者处于用户模式,我真的不确定如何确定SID。
谢谢。
发布于 2012-11-08 05:45:49
如果这是用户模式,您应该从GetCurrentProcess或GetCurrentThread开始,然后调用GetProcessToken或GetThreadToken。这将为您提供一个访问令牌,SID can be extracted将直接从该令牌访问。在内核模型中,有用于线程的PsGetCurrentProcess和ZwOpenProcessTokenEx等。
下面是用户空间的等效问题:How to get Calling-Process Windows User Access Token。
我还没有测试过它,但我希望它能帮助您入门。
发布于 2018-09-27 21:05:46
VOID SeCaptureSubjectContext(outntifs.h)可能是您正在寻找的内核模式PSECURITY_SUBJECT_CONTEXT,至少如果您有可用的ntifs.h的话。
https://stackoverflow.com/questions/13211970
复制相似问题