0

我有 java 和 python 的知识,但是任何名称中包含 C 的语言都很难理解和学习。最近我尝试使用 NtRaiseHardError 在 Windows 中创建 BSOD,在 c++ 中尝试几次(不成功)后,我转向了 c#。

使用这里的代码我能够制作一个程序并导致蓝屏死机。后来我试图完全理解代码,但我无法理解 RtlAdjustPrivilege 在做什么。

我看到这是某种特权更改,但是在程序运行时,尽管我使用的是用户帐户,但我没有看到管理员密码提示,因此我相信它不会升级为管理员特权。如果有人知道这个函数到底是做什么的或它是如何工作的,请解释一下。这是它的实现方式:

要导入它:

[DllImport("ntdll.dll")]
private static extern uint RtlAdjustPrivilege
(
    int Privilege,
    bool bEnablePrivilege,
    bool IsThreadPrivilege,
    out bool PreviousValue
);

稍后使用它:

RtlAdjustPrivilege(19, true, false, out bool previousValue);
4

1 回答 1

3

19SE_SHUTDOWN_PRIVILEGEwdm.h中声明。

RtlAdjustPrivilege打开当前进程(如果IsThreadPrivilege := false)或当前线程(如果IsThreadPrivilege := true)令牌,然后调用ZwAdjustPrivilegeTokenAdjustTokenPrivileges在此 api 上是薄壳)并最后关闭打开的令牌。

( ZwAdjustPrivilegeToken)AdjustTokenPrivileges函数启用或禁用指定访问令牌中的权限。但特权必须已经在令牌中

于 2018-06-27T12:26:41.190 回答