Go代码错误:kernel32.Addr 未定义,使用 kernel32.Handle() 获取DLL句柄
在第48行,代码使用了 'kernel32.Addr()',但是 'kernel32' 只是一个 'syscall.MustLoadDLL' 的返回值,它没有 'Addr()' 方法。应该使用 'kernel32.Handle()' 方法来获取 DLL 中函数的句柄。
以下是修改后的代码:
func writeMemory(data []byte, address uintptr) (int, error) {
var bytesWritten uintptr
ret, _, err := syscall.Syscall(
uintptr(kernel32.Handle()),
uintptr(unsafe.Pointer(&data[0])),
uintptr(len(data)),
uintptr(address),
uintptr(unsafe.Pointer(&bytesWritten)),
0,
)
if ret == 0 {
return 0, fmt.Errorf('failed to write memory: %v', err)
}
return int(bytesWritten), nil
}
原文地址: https://www.cveoy.top/t/topic/lNkO 著作权归作者所有。请勿转载和采集!