哪位大神能来个NSudo提权dll库的使用说明?
看着蒙蔽啊,哪位大神来个简单的例子学习一下啊。NSudo:https://nsudo.m2team.org/zh-hans/
Const $TRUSTED_INSTALLER = 0x01
$nsudo = DllOpen("NSudoAPI.dll")
Local $aResult = DllCall($nsudo, "int64:cdecl", "NSudoCreateProcess", _
"UserModeType", $TRUSTED_INSTALLER, _
"PrivilegesModeType",0x01, _
"MandatoryLabelType",0x05, _
"ProcessPriorityClassType",0x02, _
"ShowWindowModeType",0x01, _
"WaitInterval",1000, _
"CreateNewConsole",true, _
"CommandLine",@ComSpec , _
"CurrentDirectory",@ScriptDir)
MsgBox(0,"",@error)
DllClose($nsudo)
好像运行失败,抱歉dllcall我不是很熟悉:face (11): Const $TRUSTED_INSTALLER = 0x01
$nsudo = DllOpen("NSudoAPI.dll")
Local $aResult = DllCall($nsudo, "int64:cdecl", "NSudoCreateProcess", _
"UserModeType", $TRUSTED_INSTALLER, _
"PrivilegesModeType",0x01, _
"MandatoryLabelType",0x05, _
"ProcessPriorityClassType",0x02, _
"ShowWindowModeType",0x01, _
"WaitInterval",1000, _
"CreateNewConsole",true, _
"CommandLine",@ComSpec , _
"CurrentDirectory",@ScriptDir)
MsgBox(0,"",@error)
DllClose($nsudo)
好像运行失败,抱歉dllcall我不是很熟悉:face (11): #include <File.au3>
#include <Array.au3>
#include <WinAPIRes.au3>
#RequireAdmin
;共享库
;~ using System;
;~ namespace M2.NSudo.Demo
;~ {
;~ class Program
;~ {
;~ static void Main(string[] args)
;~ {
;~ NSudoInstance instance = new NSudoInstance();
;~ instance.CreateProcess(
;~ NSUDO_USER_MODE_TYPE.TRUSTED_INSTALLER,
;~ NSUDO_PRIVILEGES_MODE_TYPE.ENABLE_ALL_PRIVILEGES,
;~ NSUDO_MANDATORY_LABEL_TYPE.SYSTEM,
;~ NSUDO_PROCESS_PRIORITY_CLASS_TYPE.NORMAL,
;~ NSUDO_SHOW_WINDOW_MODE_TYPE.DEFAULT,
;~ 0,
;~ true,
;~ "cmd",
;~ null);
;~ Console.ReadKey();
;~ }
;~ }
;~ }
Local $Result = DllCall(@ScriptDir & '\x64\NSudoAPI.dll', 'int', 'NSudoCreateProcess', _
'int', 1, _ ; NSUDO_USER_MODE_TYPE
'int', 1, _ ; NSUDO_PRIVILEGES_MODE_TYPE
'int', 5, _; NSUDO_MANDATORY_LABEL_TYPE
'int', 2, _; NSUDO_PROCESS_PRIORITY_CLASS_TYPE
'int', 1, _; NSUDO_SHOW_WINDOW_MODE_TYPE
'dword', 0, _; WaitInterval
'bool', True, _; CreateNewConsole
'wstr', 'cmd', _; CommandLine
'wstr', Null) ; CurrentDirectory
;恶魔模式
;~ using System;
;~ using System.IO;
;~ using System.Runtime.InteropServices;
;~ namespace Demo
;~ {
;~ class Program
;~ {
;~
;~ static extern IntPtr LoadLibrary(string lpLibFileName);
;~
;~
;~ static extern bool FreeLibrary(IntPtr hLibModule);
;~ static void Main(string[] args)
;~ {
;~ IntPtr NSudoDevilModeModuleHandle = LoadLibrary(
;~ @"E:\GitHub\M2Team\NSudo\Output\Release\x64\NSudoDevilMode.dll");
;~ {
;~ DirectoryInfo Folder = new DirectoryInfo(
;~ @"C:\System Volume Information");
;~ foreach (FileInfo File in Folder.GetFiles())
;~ {
;~ Console.WriteLine(File.FullName);
;~ }
;~ }
;~ FreeLibrary(NSudoDevilModeModuleHandle);
;~ {
;~ DirectoryInfo Folder = new DirectoryInfo(
;~ @"C:\System Volume Information");
;~ foreach (FileInfo File in Folder.GetFiles())
;~ {
;~ Console.WriteLine(File.FullName);
;~ }
;~ }
;~ Console.ReadKey();
;~ }
;~ }
;~ }
_FileListToArray('C:\System Volume Information')
MsgBox(0, '', @error)
Local $NSudoDevilModeModuleHandle = _WinAPI_LoadLibrary(@ScriptDir & '\x64\NSudoDM.dll')
_ArrayDisplay(_FileListToArray('C:\System Volume Information'))
_WinAPI_FreeLibrary($NSudoDevilModeModuleHandle)
谢谢大家。 本帖最后由 angelink 于 2021-12-10 21:23 编辑
繁星 发表于 2021-12-7 20:48
Local $NSudoDevilModeModuleHandle = _WinAPI_LoadLibrary(@ScriptDir & '\x64\NSudoDM.dll')
_ArrayDisplay(_FileListToArray('C:\System Volume Information'))
_WinAPI_FreeLibrary($NSudoDevilModeModuleHandle)
关于这个,如果我想启动一个外部程序,启动后用户权限是system ,好像不行,要怎么改动那? 4楼不是给你代码了...
Local $Result = DllCall(@ScriptDir & '\NSudo Shared Library\Win32\NSudoAPI.dll', 'int', 'NSudoCreateProcess', _
'int', 1, _ ; NSUDO_USER_MODE_TYPE
'int', 1, _ ; NSUDO_PRIVILEGES_MODE_TYPE
'int', 5, _; NSUDO_MANDATORY_LABEL_TYPE
'int', 2, _; NSUDO_PROCESS_PRIORITY_CLASS_TYPE
'int', 1, _; NSUDO_SHOW_WINDOW_MODE_TYPE
'dword', 0, _; WaitInterval
'bool', True, _; CreateNewConsole
'wstr', 'cmd', _; CommandLine
'wstr', 'C:\') ; CurrentDirectory tubaba 发表于 2021-12-20 11:00
4楼不是给你代码了...
Local $Result = DllCall(@ScriptDir & '\NSudo Shared Library\Win32\NSudoAPI.d ...
Local $Result = DllCall(@ScriptDir & '\x64\NSudoAPI.dll', 'int', 'NSudoCreateProcess', _
'int', 1, _ ; NSUDO_USER_MODE_TYPE
'int', 1, _ ; NSUDO_PRIVILEGES_MODE_TYPE
'int', 5, _; NSUDO_MANDATORY_LABEL_TYPE
'int', 2, _; NSUDO_PROCESS_PRIORITY_CLASS_TYPE
'int', 1, _; NSUDO_SHOW_WINDOW_MODE_TYPE
'dword', 0, _; WaitInterval
'bool', True, _; CreateNewConsole
'wstr', 'cmd', _; CommandLine
'wstr', Null) ; CurrentDirectory
人笨,这段没看懂,要怎么加入代码,难道要把cmd那里换代码? angelink 发表于 2021-12-26 19:22
人笨,这段没看懂,要怎么加入代码,难道要把cmd那里换代码?
C/C++ 函数原型
EXTERN_C HRESULT WINAPI NSudoCreateProcess(
_In_ NSUDO_USER_MODE_TYPE UserModeType,
_In_ NSUDO_PRIVILEGES_MODE_TYPE PrivilegesModeType,
_In_ NSUDO_MANDATORY_LABEL_TYPE MandatoryLabelType,
_In_ NSUDO_PROCESS_PRIORITY_CLASS_TYPE ProcessPriorityClassType,
_In_ NSUDO_SHOW_WINDOW_MODE_TYPE ShowWindowModeType,
_In_ DWORD WaitInterval,
_In_ BOOL CreateNewConsole,
_In_ LPCWSTR CommandLine,
_In_opt_ LPCWSTR CurrentDirectory);
UserModeType 参数
一个类型为 NSUDO_USER_MODE_TYPE 枚举类型的值, 用以表示用户类别。
typedef enum class _NSUDO_USER_MODE_TYPE
{
DEFAULT, ;0以当前用户的访问令牌运行程序,如果用户账户控制即 UAC 没有被禁用, 则该模式的权限与标准用户等价
TRUSTED_INSTALLER, ;1以 TrustedInstaller 访问令牌运行程序
SYSTEM, ;2以 System 访问令牌运行程序
CURRENT_USER, ;3以提升后的当前用户的访问令牌运行程序,该模式的权限与提升后的用户等价
CURRENT_PROCESS, ;4以当前进程的访问令牌运行程序,该模式的权限与提升后的用户等价
CURRENT_PROCESS_DROP_RIGHT ;5以当前进程 LUA 模式的访问令牌运行程序,该模式的权限与标准?户等价且该实现和 Internet Explorer 浏览器中的 iertutil.dll 中的对应实现一致
} NSUDO_USER_MODE_TYPE, *PNSUDO_USER_MODE_TYPE;
PrivilegesModeType 参数
一个类型为 NSUDO_PRIVILEGES_MODE_TYPE 枚举类型的值, 用以表示特权类型。
typedef enum class _NSUDO_PRIVILEGES_MODE_TYPE
{
DEFAULT, ;0默认特权
ENABLE_ALL_PRIVILEGES, ;1启用全部特权
DISABLE_ALL_PRIVILEGES ;2禁用所有特权
} NSUDO_PRIVILEGES_MODE_TYPE, *PNSUDO_PRIVILEGES_MODE_TYPE;
MandatoryLabelType 参数
一个类型为 NSUDO_MANDATORY_LABEL_TYPE 枚举类型的值, 用以表示完整性标签。
typedef enum class _NSUDO_MANDATORY_LABEL_TYPE
{
UNTRUSTED, ;0不信任的
LOW, ;1低
MEDIUM, ;2中
MEDIUM_PLUS, ;3中高
HIGH, 4高
SYSTEM, ;5系统
PROTECTED_PROCESS, ;6受保护进程
} NSUDO_MANDATORY_LABEL_TYPE, *PNSUDO_MANDATORY_LABEL_TYPE;
ProcessPriorityClassType 参数
一个类型为 NSUDO_PROCESS_PRIORITY_CLASS_TYPE 枚举类型的值, 用以表示进程优先级。
typedef enum class _NSUDO_PROCESS_PRIORITY_CLASS_TYPE
{
BELOW_NORMAL, ;0低于正常
NORMAL, ;1正常
ABOVE_NORMAL, ;2高于正常
HIGH, ;3高
REALTIME, ;4实时
} NSUDO_PROCESS_PRIORITY_CLASS_TYPE, *PNSUDO_PROCESS_PRIORITY_CLASS_TYPE;
ShowWindowModeType 参数
一个类型为 NSUDO_SHOW_WINDOW_MODE_TYPE 枚举类型的值, 用以表示显示窗口模式。
typedef enum class _NSUDO_SHOW_WINDOW_MODE_TYPE
{
DEFAULT, ;0默认
SHOW, ;1显示窗口
HIDE, ;2隐藏窗口
MAXIMIZE, ;3最大化
MINIMIZE, ;4最小化
} NSUDO_SHOW_WINDOW_MODE_TYPE, *PNSUDO_SHOW_WINDOW_MODE_TYPE;
WaitInterval 参数
等待创建的进程的时间 (毫秒)。
CreateNewConsole 参数
如果这个参数设为 TRUE, 新进程则在新的控制台窗口运行, 否则则直接在⽗进程对应的控 制台窗口运行 (默认设定)。
CommandLine 参数
要执行的命令行, 对应的字符串最大长度为 32k 即 32768 字符, 命令行所执行的应用的路径被限制为MAX_PATH 即 260 字符。
CurrentDirectory 参数
用来指定进程的当前⽬录, 需要使用完整路径。可以使用 UNC 路径。如果该参数为 nullptr, 新进程将使用调用该函数的进程所使用的当前路径。
tubaba 发表于 2021-12-27 12:12
C/C++ 函数原型
EXTERN_C HRESULT WINAPI NSudoCreateProcess(
_In_ NSUDO_USER_MODE_TYPE User ...
谢谢。感谢。
页:
[1]