dl icon indicating copy to clipboard operation
dl copied to clipboard

dl load "fork" failed

Open james-li opened this issue 4 years ago • 0 comments

compile a LD_PRELOAD so using following code

//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()
}

run command

# LD_PRELOAD=`pwd`/libshellhook.so bash 
panic: reflect.MakeFunc: value of type int32 is not assignable to type main._Ctype_int

goroutine 17 [running, locked to thread]:
reflect.Value.assignTo(0x7f61b5cfda60, 0xc00001808c, 0x85, 0x7f61b5ac9ec4, 0x10, 0x7f61b5cfdc60, 0xc000042df0, 0x7f61b5a8ac25, 0x7f61b5ac7a20, 0xc000042cf8)
	/usr/local/go/src/reflect/value.go:2435 +0x405
reflect.callReflect(0xc00006a2d0, 0xc000042df0, 0xc000042dd8)
	/usr/local/go/src/reflect/value.go:600 +0x4b9
reflect.makeFuncStub(0xc000046280, 0x7f61b5ac7f3b, 0x4, 0x7f61b5cf9180, 0xc000010030, 0x0, 0x0, 0x0, 0x0, 0xc000046280, ...)
	/usr/local/go/src/reflect/asm_amd64.s:20 +0x44
main.fork(0x0)
	/work/golib/main.go:83 +0x149
main._cgoexpwrap_032d238aa31d_fork(0x77c3a0)
	_cgo_gotypes.go:85 +0x25

james-li avatar Jan 25 '21 01:01 james-li