Files
goodlink/netstack/sudo_windows.go
kony c7bc4b9c4f u
2025-03-28 17:23:38 +08:00

43 lines
1.0 KiB
Go

//go:build windows
package netstack
import (
"fmt"
"golang.org/x/sys/windows"
)
func Sudo() {
// 获取当前进程的令牌
var token windows.Token
err := windows.OpenProcessToken(windows.CurrentProcess(), windows.TOKEN_ADJUST_PRIVILEGES|windows.TOKEN_QUERY, &token)
if err != nil {
fmt.Println("Failed to open process token:", err)
return
}
// 定义LUID结构体
var luid windows.LUID
err = windows.LookupPrivilegeValue(nil, windows.StringToUTF16Ptr("SeDebugPrivilege"), &luid)
if err != nil {
fmt.Println("Failed to lookup privilege value:", err)
return
}
// 创建TOKEN_PRIVILEGES结构体
var tp windows.Tokenprivileges
tp.PrivilegeCount = 1
tp.Privileges[0].Luid = luid
tp.Privileges[0].Attributes = windows.SE_PRIVILEGE_ENABLED
// 提升权限
err = windows.AdjustTokenPrivileges(token, false, &tp, 0, nil, nil)
if err != nil {
fmt.Println("Failed to adjust token privileges:", err)
return
}
fmt.Println("Privilege escalation successful")
}