Util\inject.go:20:50: undefined: syscall.PROCESS_CREATE_THREAD
Util\inject.go:20:114: undefined: syscall.PROCESS_VM_OPERATION
Util\inject.go:20:143: undefined: syscall.PROCESS_VM_WRITE
Util\inject.go:20:168: undefined: syscall.PROCESS_VM_READ
Util\inject.go:28:35: undefined: syscall.VirtualAllocEx
Util\inject.go:28:94: undefined: syscall.MEM_COMMIT
Util\inject.go:32:19: undefined: syscall.VirtualFreeEx
Util\inject.go:32:69: undefined: syscall.MEM_RELEASE
Util\inject.go:36:22: undefined: syscall.WriteProcessMemory
Util\inject.go:46:34: undefined: syscall.CreateRemoteThread
在Go语言中,PROCESS_CREATE_THREAD
常量定义在 golang.org/x/sys/windows
包中,而不是 syscall
包中。所以如果你在使用 syscall.PROCESS_CREATE_THREAD
时出现了 undefined
错误,可以尝试使用 windows.PROCESS_CREATE_THREAD
来替代。
你需要先安装 golang.org/x/sys
包,然后在代码中导入 windows
包:
import "golang.org/x/sys/windows"
然后就可以使用windows.PROCESS_CREATE_THREAD
等常量了。以下是一个使用windows.PROCESS_CREATE_THREAD
打开进程并获取其句柄的示例代码:
package main
import (
"fmt"
"golang.org/x/sys/windows"
)
func main() {
pid := 1234 // 目标进程PID
hProcess, err := windows.OpenProcess(windows.PROCESS_CREATE_THREAD|windows.PROCESS_QUERY_INFORMATION|windows.PROCESS_VM_OPERATION|windows.PROCESS_VM_WRITE|windows.PROCESS_VM_READ, false, uint32(pid))
if err != nil {
fmt.Println("打开进程失败:", err)
return
}
defer windows.CloseHandle(hProcess)
fmt.Println("进程句柄:", hProcess)
}