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官网。

参考文献: