请教一下Inline Hook之后有办法在stub函数中调用原函数执行吗?
wcventure opened this issue · 2 comments
wcventure commented
您好,
感谢您提供那么好用的开源库,我有个问题想请教一下您,希望您能解答一二。
我现在有个场景需要在Stub函数中调用原函数(例如下面的例子,malloc
函数已经被替换成malloc_hook函数
,malloc_hook
函数会额外维护一些关于分配的内存地址和内存大小等信息,并调用原函数“malloc”分配内存)。以下代码这种方式hook了malloc函数后,所以malloc_hook
内部的malloc
函数也会被hook,实际变成了递归函数,与预期不符。
有没有办法在执行了stub.set(malloc, malloc_hook)
;的情况下,仍有一种方式可以调用原来的malloc
函数?
void* malloc_hook(size_t size) {
printf("Malloc tries to allocate %ld size of memory\n", size);
//stub.reset(malloc); // 1. 性能影响; 2.多线程有锁和信号量等同步机制时会发生时序问题
void* = malloc(size);
//stub.set(malloc, malloc_stub);
return ret;
}
int main( ) {
Stub stub;
stub.set(malloc, malloc_hook);
A();
stub.reset(A);
return 0;
wcventure commented
感谢解答