//+build !windows package monkey import ( "syscall" ) // this function is super unsafe // aww yeah // It copies a slice to a raw memory location, disabling all memory protection before doing so. func copyToLocation(location uintptr, data []byte) { f := rawMemoryAccess(location, len(data)) page := rawMemoryAccess(pageStart(location), syscall.Getpagesize()) err := syscall.Mprotect(page, syscall.PROT_READ|syscall.PROT_WRITE|syscall.PROT_EXEC) if err != nil { panic(err) } copy(f, data[:]) err = syscall.Mprotect(page, syscall.PROT_READ|syscall.PROT_EXEC) if err != nil { panic(err) } }