|

分享源码
界面截图: |
- |
是否带模块: |
- |
备注说明: |
- |
VX_Mutex_互斥体独占方式多开_精易论坛
感谢大佬提供e代码,转go语言代码。
[e=0]package main
import (
"fmt"
"syscall"
"unsafe"
)
var (
advapi32 = syscall.NewLazyDLL("advapi32.dll")
kernel32 = syscall.NewLazyDLL("kernel32.dll")
createMutexW = kernel32.NewProc("CreateMutexW")
allocateAndInitializeSid = advapi32.NewProc("AllocateAndInitializeSid")
initializeAcl = advapi32.NewProc("InitializeAcl")
addAccessDeniedAce = advapi32.NewProc("AddAccessDeniedAce")
setSecurityInfo = advapi32.NewProc("SetSecurityInfo")
)
func utf16Ptr(s string) *uint16 {
ptr, _ := syscall.UTF16PtrFromString(s)
return ptr
}
func main() {
mutexName := "_WeChat_App_Instance_Identity_Mutex_Name"
// 创建互斥体
hMutex, _, err := createMutexW.Call(
0,
0,
uintptr(unsafe.Pointer(utf16Ptr(mutexName))),
)
if hMutex == 0 {
fmt.Println("❌ 创建互斥体失败:", err)
return
}
fmt.Println("✅ 已创建互斥体")
// 设置Everyone SID
var sidAuthWorld = [6]byte{0, 0, 0, 0, 0, 1} // SECURITY_WORLD_SID_AUTHORITY
var pEveryoneSID uintptr
r1, _, _ := allocateAndInitializeSid.Call(
uintptr(unsafe.Pointer(&sidAuthWorld)),
1,
0, 0, 0, 0, 0, 0, 0, 0,
uintptr(unsafe.Pointer(&pEveryoneSID)),
)
if r1 == 0 {
fmt.Println("❌ AllocateAndInitializeSid 失败")
return
}
// 创建ACL缓冲区
const ACL_BUFFER_SIZE = 4096
var aclBuffer [ACL_BUFFER_SIZE]byte
pAcl := uintptr(unsafe.Pointer(&aclBuffer[0]))
// 初始化ACL
r1, _, _ = initializeAcl.Call(
pAcl,
uintptr(ACL_BUFFER_SIZE),
2, // ACL_REVISION
)
if r1 == 0 {
fmt.Println("❌ InitializeAcl 失败")
return
}
// 添加拒绝 Everyone 的 ACE
r1, _, _ = addAccessDeniedAce.Call(
pAcl,
2, // ACL_REVISION
1, // GENERIC_ALL
pEveryoneSID,
)
if r1 == 0 {
fmt.Println("❌ AddAccessDeniedAce 失败")
return
}
// 设置 ACL 到互斥体上(DACL)
SE_KERNEL_OBJECT := uintptr(6)
DACL_SECURITY_INFORMATION := uintptr(0x00000004)
r1, _, _ = setSecurityInfo.Call(
hMutex,
SE_KERNEL_OBJECT,
DACL_SECURITY_INFORMATION,
0, 0,
pAcl,
0,
)
if r1 != 0 {
fmt.Println("❌ SetSecurityInfo 失败")
return
}
fmt.Println("✅ 已成功设置 ACL,VX可多开(独占方式)")
fmt.Println(" |
|