首页 > 解决方案 > 如何从应用程序中执行调试器命令

问题描述

在运行时,我试图恢复未导出但可通过共享库的符号表获得的函数的地址,因此对调试器可见。

我正在研究需要捕获某些事件并操纵运行时的高级调试过程。其中一项操作需要知道在其他地方用作密钥的私有函数的地址(只是地址)。

我当前的解决方案在构建时使用nm. 此解决方案限制了调试功能,因为它依赖于共享库的特定构建。

优选的解决方案应该能够在运行时恢复地址。

我希望从应用程序中与附加的调试器进行通信,但很难找到任何 API。

我有哪些选择?

标签: cgdblldbmach-o

解决方案


在运行时,我试图恢复未导出但可通过共享库的符号表获得的函数的地址,因此对调试器可见。

调试器不是神奇的独角兽。如果符号表对调试器可用,那么它也对您的应用程序可用。

我需要使用调试器按名称恢复其地址...

那是完全错误的做法。

不要使用调试器,而是读取应用程序中库的符号表,并使用获得的信息来调用目标函数。

读取 ELF 符号表非常容易。例子。如果您不在 ELF 平台上,那么获取等效信息应该不会太难。


推荐阅读