Linux 和/或 OSX 中的挂钩函数?

逆向工程 拆卸 linux 动态分析 操作系统 符号
2021-07-05 04:06:17

我想从另一个进程挂接库(lib.solib.dylib中的函数我知道与 Windows 库不同,Linux 和 Mac 中的库仍然有它们的符号(函数名称和参数)。

API Monitor允许您从其他库中挂钩导出的函数,但仅适用于 Windows,这在某种程度上是我所需要的。

基本上我想在 Linux 或 mac 中挂钩某些函数并查看它们的参数和调用顺序。

任何帮助表示赞赏!

3个回答

在运行目标之前,您可以简单地导出指向(完整路径)库的环境变量LD_PRELOAD(在 Linux 上)或DYLD_INSERT_LIBRARIES(在 OS X 上),如下例所示:

https://stackoverflow.com/questions/6083337/overriding-malloc-using-the-ld-preload-mechanism

这是用于挂钩函数以执行您想要的任何操作(而不是监视函数调用)。

检查跟踪系列:

  • ltrace:库跟踪器

  • strace:内核调用(系统调用)跟踪器

  • ptrace:可编程跟踪器

并且:

对于 OS X,dtrace应该可以解决问题。dtrace 也应该存在于 Linux 中,尽管我不知道它的支持情况如何,而且我相信那里还有其他等效的工具。