在第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
}
Go代码错误:kernel32.Addr 未定义,使用 kernel32.Handle() 获取DLL句柄

原文地址: https://www.cveoy.top/t/topic/lNkO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录