在运行时我试图恢复一个函数的地址未出口但可以通过共享库的符号表获得,因此对调试器可见。
我正在研究需要捕获某些事件并操纵运行时的高级调试程序。其中一项操作需要了解私有函数的地址(仅地址),该地址在其他地方用作密钥。
我当前的解决方案在构建时计算该私有函数相对于已知导出函数的偏移量nm
。该解决方案限制了调试功能,因为它依赖于共享库的特定构建。
更好的解决方案应该能够在运行时恢复地址。
我希望从应用程序内与附加的调试器进行通信,但很难找到任何 API。
我有什么选择?
在运行时,我试图恢复未导出但可通过共享库的符号表获得的函数的地址,因此对调试器可见。
调试器不是神奇的独角兽。如果符号表可供调试器使用,那么它也可供您的应用程序使用。
我需要按名称恢复其地址使用调试器 ...
这是完全错误的做法。
不使用调试器,而是读取应用程序中库的符号表,并使用获得的信息来调用目标函数。
阅读 ELF 符号表非常容易。Example https://stackoverflow.com/a/48843218/50617。如果您不在 ELF 平台上,获取同等信息应该不会更困难。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)