github.com/ggreg80/ketos@v0.0.0-20171109040536-049616f51ddb/testdata/inject-libc/libc_fs.go (about) 1 // Based on article 2 // https://blog.gopheracademy.com/advent-2015/libc-hooking-go-shared-libraries/ 3 package main 4 5 import "C" 6 7 import ( 8 "fmt" 9 "log" 10 11 "github.com/rainycape/dl" 12 ) 13 14 //export strrchr 15 func strrchr(s *C.char, c C.int) *C.char { 16 17 lib, err := dl.Open("libc", 0) 18 if err != nil { 19 log.Fatalln(err) 20 } 21 defer lib.Close() 22 23 var old_strrchr func(s *C.char, c C.int) *C.char 24 err = lib.Sym("strrchr", &old_strrchr) 25 if err != nil { 26 log.Fatalln(err) 27 } 28 29 fmt.Printf("into golang hook of strrchr\n") 30 return old_strrchr(s, c) 31 } 32 33 func main() {}