Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
536 views
in Technique[技术] by (71.8m points)

linux - using cgo to hook syscall "fork"

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
question from:https://stackoverflow.com/questions/65880192/using-cgo-to-hook-syscall-fork

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

Please log in or register to answer this question.

Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...