RtlAdjustPrivilege() 这玩意是在 NTDLL.DLL 里的一个不为人知的函数,MS没有公开,原因就是这玩意实在是太NB了,以至于不需要任何其他函数的帮助,仅凭这一个函数就可以获得进程ACL的任意权限!

先来看看这个函数的定义(Winehq给出):
NTSTATUS RtlAdjustPrivilege
(
ULONG    Privilege,
BOOLEAN Enable,
BOOLEAN CurrentThread,
PBOOLEAN Enabled
)

参数的含义:
Privilege [In] Privilege index to change.                        
// 所需要的权限名称,可以到 MSDN 查找关于 Process Token & Privilege 内容可以查到

Enable [In] If TRUE, then enable the privilege otherwise disable.
// 如果为True 就是打开相应权限,如果为False 则是关闭相应权限

CurrentThread [In] If TRUE, then enable in calling thread, otherwise process.
// 如果为True 则仅提升当前线程权限,否则提升整个进程的权限

Enabled [Out] Whether privilege was previously enabled or disabled.
// 输出原来相应权限的状态(打开 | 关闭), 注意:该参数赋予空指针会出错,我测试过。

附上 Delphi 定义和例子,我测试过的:

function RtlAdjustPrivilege(Privilege:ULONG;
                        Enable:BOOL;
                        CurrentThread:BOOL;
                        var Enabled:BOOL):DWORD; stdcall; external 'ntdll';

const
    SE_BACKUP_PRIVILEGE = $11;
    SE_RESTORE_PRIVILEGE = $12;        
    SE_SHUTDOWN_PRIVILEGE = $13;     //关机权限
    SE_DEBUG_PRIVILEGE = $14;             //调试权限

Delphi 调用例子:

var
    Enabled:BOOL;
begin

if RtlAdjustPrivilege(SE_DEBUG_PRIVILEGE,true,false,Enabled)) = 0 then
      showmessage('ok');

end;

瞬间关机代码VC

#include <windows.h>

const unsigned int SE_SHUTDOWN_PRIVILEGE = 0x13;

int main()
{
HMODULE hDll = ::LoadLibrary("ntdll.dll");
typedef int (* type_RtlAdjustPrivilege)(int, bool, bool, int*);
typedef int (* type_ZwShutdownSystem)(int);
type_RtlAdjustPrivilege RtlAdjustPrivilege = (type_RtlAdjustPrivilege)GetProcAddress(hDll, "RtlAdjustPrivilege");
type_ZwShutdownSystem ZwShutdownSystem = (type_ZwShutdownSystem)GetProcAddress(hDll, "ZwShutdownSystem");
int nEn = 0;
int nResult = RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE, true, true, &nEn);
if(nResult == 0x0c000007c)
{
nResult = RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE, true, false, &nEn);
}
nResult = ZwShutdownSystem(2);
FreeLibrary(hDll);
return 0;

}

如果是c++ 需要主要调用约定问题 函数本身是C调用方式 C++是标准调用方式 所以在申明函数的时候要加上_stdcall

typedef int (_stdcall *axi)(int, bool, bool, int*);

typedef int (_stdcall * type_RtlAdjustPrivilege)(int, bool, bool, int*);

关于返回值也需要特别说明下: 实验了下 提权成功了 但是返回值还是NULL 如果这个时候验证返回值将不准确了 所以成功与否还是只能看后边的打开进程是否成功

提权函数之RtlAdjustPrivilege()相关推荐

  1. 软件安全之代码注入技术 向目标 PE 文件注入 DLL notepad lpk.dll 远程线程函数 提权函数 OpenProcess VirtualAllocEx

    实验 4 代码注入技术 引言 1.实验说明 代码注入是将用户代码注入到其他进程或者可执行文件中,实现拦截目标进程运行过程的关键信息.改变目标进程或可执行文件原本执行流程等目的 2.实验目的 本实验通过 ...

  2. RtlAdjustPrivilege() 提权函数

    RtlAdjustPrivilege(SE_DEBUG_NAME,1,0,NULL); 这玩意是在 NTDLL.DLL 里的一个不为人知的函数,MS没有公开,原因就是这玩意实在是太NB了,以至于不需要 ...

  3. 提权 调试权限 OpenProcess 拒绝访问的解决办法

    并不是说有了管理员权限就能为所欲为,有时还需要将进程权限提升为DEBUG. // 提权函数:提升为DEBUG权限 BOOL EnableDebugPrivilege() {HANDLE hToken; ...

  4. Windows核心编程_提权

    在Windows下编程有些涉及到硬件或者跨内存的API会发现失效了,原因是因为权限问题,这也是Windows出于安全的保护,但是事物都有两面性的,Windows又为我们提供了提权的API! 1.Adj ...

  5. (70)内核重载 xp sp3 x86 单核

    一.项目说明 这次项目是这样设计的,首先 inline hook NtTerminateProcess 函数,使其他进程不能关闭受保护的进程,这里选择记事本. 然后编写一个普通的程序,调用 Termi ...

  6. (38)编写 ShellCode

    补充:编写shellcode时visualstudio的典型设置 编写这篇博客的目的: 中级上项目 MessageBox 监视器需要编写 shellcode,三期没有讲,于是补充学习了这部分知识. 一 ...

  7. 进程间通信——DLL共享节

    DLL共享节技术可以让使用同一个DLL的多个进程共享一块内存(共享节),下面我通过一个项目来演示使用方法. 首先准备一个受害者程序,我选用了xp的扫雷,您也可以用任意喜欢的程序. 然后,编写DLL,D ...

  8. 隐藏模块(无模块注入)

    模块隐藏那节课要求完成两个作业,都是隐藏模块,本文介绍两种方法分别如何实现. 方法一:往自己的进程注入游戏主模块 这个题目的意思是将程序的基址设置成高地址,将0x400000空出来,然后将游戏主模块拉 ...

  9. 使用 ZwUnmapViewOfSection 卸载并替换内存镜像

    The ZwUnmapViewOfSection routine unmaps a view of a section from the virtual address space of a subj ...

最新文章

  1. 安智armeabi 和 armeabi-v7a 的库文件增加法则
  2. Linux 常用解压和压缩命令
  3. 在二元树中找出和为某一值的所有路径
  4. 拔刀剑服务器r87修复版,我的世界拔刀剑mod刀剑修复教程
  5. 小米10鸿蒙版,小米10青春版高清渲染图公布:轻薄得不像5G手机
  6. EJB3.0学习笔记---多接口的时,实现类处理方法:
  7. 绝地求生要java吗_绝地求生卡盟_【Java】几种典型的内存溢出案例,都在这儿了!...
  8. 2021年第十八届五一数学建模竞赛题目 C题 数据驱动的异常检测与预警问题 解题论文完整版
  9. 电路图符号科普、整流电路、稳压电路、放大电路及调幅与检波电路和常见的基本电路
  10. nginx通过url跳转到另外的一个url上
  11. Java四大元注解介绍
  12. Islands 架构原理和实践
  13. [实习心得]从百草园到三味书屋
  14. 深入理解什么是Beta分布
  15. LZW压缩算法(数据无损压缩)
  16. HTML网页设计与制作:电影网站设计——电影泰坦尼克号(4页) HTML+CSS+JavaScript
  17. P6 Vue双向绑定 v-model
  18. 一个 IT 人的自传,我在语雀开源人生
  19. UNR#2 梦中的题面 HDU6056
  20. 聚焦场景化应用 华为要做数字化转型的“赶路人”

热门文章

  1. Scala传名参数(By-Name)
  2. 测试openssl_encrypt
  3. Spring Boot 中的容器配置
  4. s5pv210运行裸机程序的方法之在SDRAM(DDR2)中运行
  5. JAVA I/O使用方法(转)
  6. Linux 内核开发特点
  7. 【Visual Studio 扩展工具】使用ComponentOne中的GroupDefinition和SortDefinition属性保存和还原布局...
  8. 11月1日数据结构讨论班 【杂】
  9. day16-Dom样式操作
  10. 初心大陆-----python宝典之以外学习对比去重