第一范文网 - 专业文章范例文档资料分享平台

从管理员身份获得SYSTEM-权限的四种方法

来源:用户分享 时间:2025/5/16 3:58:10 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

从管理员身份获得SYSTEM-权限的四种方法

1. 以服务方式运行

因为以服务方式运行程序时,相当于运行程序的是系统进程,所以, 被指定运行的程序自然而然的继承了系统进程的权限,也就是 SYSTEM 权限。

;@echo off ;goto make

;====================================================================================

; 以 SYSTEM 权限运行程序 - GetSys1 ; 采用以服务方式运行的方法

;==================================================================================== .386

.model flat, stdcall option casemap :none

include c:\\masm32\\include\\windows.inc include c:\\masm32\\include\\kernel32.inc include c:\\masm32\\include\\advapi32.inc include c:\\masm32\\include\\masm32.inc

includelib c:\\masm32\\lib\\kernel32.lib includelib c:\\masm32\\lib\\advapi32.lib

1 / 33

从管理员身份获得SYSTEM-权限的四种方法

includelib c:\\masm32\\lib\\masm32.lib

_ReLaunch proto

CTXT MACRO text local lbl .const lbl db text,0 .code exitm ENDM .code start proc

LOCAL stStartupInfo : STARTUPINFO LOCAL procinfo : PROCESS_INFORMATION

invoke CreateMutex, NULL, TRUE, CTXT(\ invoke GetLastError

.if eax==ERROR_ALREADY_EXISTS

invoke RtlZeroMemory, addr stStartupInfo, sizeof stStartupInfo mov stStartupInfo.cb, sizeof stStartupInfo

invoke CreateProcess, 0, CTXT(\ addr stStartupInfo, addr procinfo

invoke CloseHandle, procinfo.hProcess

2 / 33

从管理员身份获得SYSTEM-权限的四种方法

invoke CloseHandle, procinfo.hThread .else

invoke _ReLaunch .endif

invoke ExitProcess, NULL start endp

_ReLaunch proc

LOCAL hSCManager LOCAL hService

LOCAL szName[MAX_PATH] : byte

invoke OpenSCManager, NULL, NULL, SC_MANAGER_CREATE_SERVICE .if eax!=0

mov hSCManager, eax

invoke OpenService, hSCManager, CTXT(\ .if eax!=0 push eax

invoke DeleteService, eax call CloseServiceHandle .endif

invoke GetModuleFileName, NULL, addr szName, MAX_PATH

3 / 33

从管理员身份获得SYSTEM-权限的四种方法

invoke CreateService, hSCManager, CTXT(\CTXT(\Temp Service\

SERVICE_START + SERVICE_QUERY_STATUS + DELETE, \\

SERVICE_WIN32_OWN_PROCESS

+

SERVICE_INTERACTIVE_PROCESS, SERVICE_DEMAND_START, \\

SERVICE_ERROR_IGNORE, addr szName, NULL, NULL, NULL, NULL, NULL

.if eax!=0

mov hService, eax

invoke StartService, hService, 0, NULL invoke DeleteService, hService invoke CloseServiceHandle, hService .endif

invoke CloseServiceHandle, hSCManager .endif ret _ReLaunch endp end start :make

set path=%path%;c:\\masm32\\bin set appname=GetSys1

4 / 33

从管理员身份获得SYSTEM-权限的四种方法

ml /nologo /c /coff %appname%.bat

link /nologo /subsystem:windows %appname%.obj del %appname%.obj echo. pause

GetSys1(第一次运行的这个进程 GetSys1 我们称为 A) 开始运行时先创建一个互斥量,

接着以服务的方式重新启动自己

(又一次运行的进程 GetSys1 我们称为 B),重新运行后的 B 已经具有了 SYSTEM 权限。

B 再通过 CreateProcess 函数运行 regedit.exe 程序,

因为 B 具有 SYSTEM 权限,所以 regedit.exe 从中继承了 SYSTEM 权限。 运行完了 regedit.exe 后 B 结束运行,

然后 A 中的 StartService 函数返回,A 结束运行。就是因为 StartService 函数不会直接返回,

所以不能够直接通过服务的方式运行 regedit.exe。

2. 添加 ACL 的方法

主要思想是调用 CreateProcessAsUser 函数来运行程序,CreateProcessAsUser 函数的第一个参数是特定用户的令牌,

把这个参数设为具有 SYSTEM 权限的令牌即可。

;@echo off ;goto make

5 / 33

从管理员身份获得SYSTEM-权限的四种方法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2o2ot57dam38gut0xsx29kcek7hm3l0140h_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top