在做一个库,目的是想改变malloc的行为,从 stack 上预先分配好的一大段内存处获取、释放内存。因为想做到对于下游应用基本透明(不需要LD_PRELOAD等操作),所以需要劫持malloc。
我目前的做法是定义了一个jmp结构,存储了一系列的汇编代码,作用为跳转到我自己的fake_malloc处。如果下游程序要求劫持malloc,我就把malloc函数所在内存地址页属性更改为可写,将我的汇编代码覆盖到 glibc 的malloc地址处。
但是问题是除了我没别人能维护这段代码,搞得怨声载道。请问还有没有别的简单一点的方法来更改malloc的属性?并且能够恢复