我想向共享 ( .so) 库中的某些函数添加日志记录。(ARM、Android,混合了 Arm 和 Thumb 模式;C++,一些函数是虚拟的,因此是无名的,通过 VFT 调用。)
有没有人已经有代码可以做到这一点或几乎做到这一点?(向现有函数添加日志记录。)
(我正在考虑在运行时(即时)打补丁,但你可能会建议一些静态的东西。)
这些过程通常以PUSH/STM指令开始,但很难将分支置于一条指令中,至少在拇指模式下是这样。
如何修改现有程序?
另一个问题是检测驻留在 PLT 中的代码。 如何检测 PLT 中的代码,如何“取消引用” plt 条目?
相关信息:
缓存问题在这里讨论: 在运行时修补 ARM7 代码(但目前没有代码)。
Qt 特定的东西:http : //www.ntcore.com/files/qtrev.htm或(相同的)http://www.codeproject.com/Articles/31330/Qt-Internals-Reversing和关于 Qt 信号和插槽。
关于打印出 RTTI(当然,当它可用时)。