func PatchByFullSymbolName(symbolName string, patchFunc interface{}) *PatchGuard {
	addr := symbolTable[symbolName]
	if addr == 0 {
		prompt := fmt.Sprintf(`The symbol is %v, and the patch target addr is 0, there may be 2 possible reasons:
  1. the function is inlined, please add  
  2. your input for symbolName or pkg/obj/method is wrong, check by using go tool nm {your_bin_file} %s`, symbolName, "\n")
		colorPrint(prompt, green)
		similarSymbols(symbolName)
		os.Exit(1)
	}
	return bouk.PatchSymbol(unsafe.Pointer(addr), patchFunc)
}
PatchByFullSymbolName needs user to provide the full symbol path
package supermonkey
import (
	"fmt"
	"os"
	"reflect"
	"strconv"
	"strings"
	"unsafe"
	"github.com/cch123/supermonkey/internal/bouk"
	"github.com/cch123/supermonkey/internal/nm"
)
type PatchGuard = bouk.PatchGuard
var (
	symbolTable = map[string]uintptr{}
)
func Patch(target, replacement interface{}) *PatchGuard {
	return bouk.Patch(target, replacement)
}
func PatchInstanceMethod(target reflect.Type, methodName string, replacement interface{}) *PatchGuard {
	return bouk.PatchInstanceMethod(target, methodName, replacement)
}