1. 什么是golang替换运行时函数体?
func a() int { return 1 }func b() int { return 2 }val := a() // val返回2b()2. golang替换运行时函数体有什么用?
a()3. 如何替换运行时函数体?
了解了上述原理,每次自己去修改函数栈道指针地址,实在非常不友好,github搜了一下,果然有开源工具。
4. 介绍一个开源组件 - gohook
A funny library to hook golang function dynamically at runtime, enabling functionality like patching in dynamic language.
示例代码如下:
输出如下
非常简单好用,具体原理还得自行看下github官网。
参考文献: