找回密码
 加入
搜索
查看: 967|回复: 15

[原创] 创建SYSTEM权限进程

[复制链接]
发表于 2025-8-15 00:20:53 | 显示全部楼层 |阅读模式
dll使用说明:
第一个参数是exe路径,第二个参数是exe参数。exe运行后,可在任务管理器查看其用户组是否为system。
经测试win10,win11是可以的,其他系统没有测试。

#NoTrayIcon
#RequireAdmin
#PRE_UseX64=n 
Local $params = Null
DllCall('TokenRun.dll', 'bool', 'RunAsSystem', 'wstr', @ScriptDir & '\Demo.exe', 'wstr', $params)
Run(@ComSpec & ' /c taskmgr', '', @SW_HIDE) 







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +100 收起 理由
afan + 100 赞一个!

查看全部评分

发表于 2025-8-15 08:54:50 | 显示全部楼层
这个也让你搞出来了,厉害
发表于 2025-8-15 12:02:11 | 显示全部楼层
这个等于上帝模式?!
发表于 2025-8-15 17:03:49 | 显示全部楼层
不明脚力~ tubaba 好像喜欢研究这类~
 楼主| 发表于 2025-8-15 21:12:25 | 显示全部楼层
afan 发表于 2025-8-15 17:03
不明脚力~ tubaba 好像喜欢研究这类~

那就再多打几个字,丰富一下说明
发表于 2025-8-17 00:17:55 | 显示全部楼层
本帖最后由 3131210 于 2025-8-17 00:20 编辑

能不能从内存中调用

测了 WIN11好像没用
发表于 2025-8-17 01:00:36 | 显示全部楼层
啊?这个这么猛的嘛??
发表于 2025-8-17 01:05:31 | 显示全部楼层
可以用,但是需要#RequireAdmin
发表于 2025-8-17 08:51:21 | 显示全部楼层
win11 lstc版,没有成功,请问是否需要特定程序才能成功?
 楼主| 发表于 2025-8-17 13:18:26 | 显示全部楼层
anythinging 发表于 2025-8-17 08:51
win11 lstc版,没有成功,请问是否需要特定程序才能成功?

加上 #RequireAdmin 试试
 楼主| 发表于 2025-8-17 13:41:45 | 显示全部楼层
anythinging 发表于 2025-8-17 08:51
win11 lstc版,没有成功,请问是否需要特定程序才能成功?

1#上图了,可以使用
 楼主| 发表于 2025-8-17 13:42:24 | 显示全部楼层
3131210 发表于 2025-8-17 00:17
能不能从内存中调用

测了 WIN11好像没用

1#上图了,win11有效。什么叫从内存调用?
发表于 2025-8-17 14:26:53 | 显示全部楼层
本帖最后由 3131210 于 2025-8-17 14:36 编辑
haijie1223 发表于 2025-8-17 13:42
1#上图了,win11有效。什么叫从内存调用?

可以了 昨天的示例好像没有 #RequireAdmin 我以为普通权限直接可以提权那就牛逼了

内存调用就是把dll的二进制文件导出来,然后从内存执行dllcall      (测试了  可以)

#NoTrayIcon
#RequireAdmin
#PRE_UseX64=n
Local $params = Null

#include "MemoryDll.au3"

Local $hFileOpen = FileOpen('TokenRun.dll', 16)
Local $DllBinary = FileRead($hFileOpen)
FileClose($hFileOpen)

MemoryDllInit()

MemoryDllCall($DllBinary, 'bool', 'RunAsSystem', 'wstr', "C:\Windows\System32\cmd.exe", 'wstr', $params)
Run(@ComSpec & ' /c taskmgr', '', @SW_HIDE)

MemoryDllExit()

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +40 收起 理由
yuantian + 40 很给力!

查看全部评分

发表于 2025-8-22 13:48:09 | 显示全部楼层
#include "TaskScheduler.au3" ; 需安装 TaskScheduler UDF 库
#RequireAdmin



; 示例 1:启动记事本(不等待)
Local $iPid = _RunAsSystem("C:\Windows\System32\notepad.exe")
If @error Then
    MsgBox(16, "错误", "启动失败!错误代码: " & @error)
Else
    MsgBox(64, "成功", "记事本 PID: " & $iPid)
EndIf

; 示例 2:运行 CMD 命令并等待结束
_RunAsSystem("cmd.exe /c echo Hello SYSTEM > C:\system_test.txt", True)
If @error Then MsgBox(16, "错误", "命令执行失败")


; #FUNCTION# ==================================================================
; 名称: _RunAsSystem
; 描述: 以 SYSTEM 权限运行指定程序
; 参数:
;   $sExePath: 目标程序完整路径(需存在)
;   $bWait: 是否等待进程结束 [可选,默认 False]
; 返回: 成功返回进程 PID,失败返回 0 并设置 @error
; =============================================================================
Func _RunAsSystem($sExePath, $bWait = False)
    ; 验证目标程序是否存在
    If Not FileExists($sExePath) Then Return SetError(1, 0, 0)

    ; 生成唯一任务名(避免冲突)
    Local $sTaskName = "AutoItSystemTask_" & String(Hex(Random(1, 1000000, 1)))

    ; 创建任务计划(以 SYSTEM 身份运行)
    Local $iResult = RunWait( _
        'schtasks /Create /TN "' & $sTaskName & '" ' & _
        '/SC ONCE /ST 00:00 /RU SYSTEM /TR "' & $sExePath & '" /F', "", @SW_SHOW)
    
    ; 检查任务是否创建成功
    If $iResult <> 0 Then Return SetError(2, $iResult, 0)

    ; 立即执行任务
    $iResult = RunWait('schtasks /Run /TN "' & $sTaskName & '"', "", @SW_SHOW)
    If $iResult <> 0 Then Return SetError(3, $iResult, 0)

    ; 获取进程 PID(通过进程名)
    Local $sProcessName = StringRegExpReplace($sExePath, ".*\", "")
    Local $iPID = ProcessWait($sProcessName, 5) ; 最多等待 5 秒
    If $iPID = 0 Then Return SetError(4, 0, 0)

    ; 可选:等待进程结束
    If $bWait Then ProcessWaitClose($iPID)

    ; 清理任务(避免残留)
    RunWait('schtasks /Delete /TN "' & $sTaskName & '" /F', "", @SW_HIDE)

    Return $iPID
EndFunc
发表于 2025-9-6 18:57:29 | 显示全部楼层
看着很厉害的样子
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2026-4-24 14:59 , Processed in 0.082988 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表