I'm trying to hook the fork syscall in Linux using Go.
package main
/*
#include <unistd.h>
*/
import "C"
import (
"fmt"
"os"
"github.com/rainycape/dl"
)
func main() {}
//export fork
func fork() C.pid_t {
lib, err := dl.Open("libc", 0)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer lib.Close()
var old_fork func() C.pid_t
lib.Sym("fork", &old_fork)
return old_fork()
}
When I compile and run as LD_PRELOAD
, Panic occurs
panic: reflect.MakeFunc: value of type `int32` is not assignable to type main._Ctype_int
You should set some directives for running that. Please take a look at its official documentation. using cgo - Golang official doc
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.