我正在编写一个内存跟踪应用程序,它使用 IAT 修补机制挂钩对 HeapAlloc 的所有调用。这个想法是捕获对 HeapAlloc 的所有调用并获得一个调用堆栈。
但是,我目前面临使用 DBGHELP API 获取调用堆栈的问题。我发现 dbghelp dll 本身正在链接到 MSVCRT dll,并且这种依赖性会导致递归调用。当我尝试为来自目标应用程序的任何调用获取调用堆栈时,dbghelp 在内部调用来自 MSVCRT 的某些方法,该方法再次调用 HeapAlloc。由于我已经修补了 MSVCRT,它会导致无限循环。
有没有人遇到过这个问题并解决了?有没有办法摆脱这个僵局?