如何从 ELF 文件中挂接 c 函数,该文件在 Linux 中使用库 .so?
How can I hook c function from ELF file, that uses library .so in Linux ?
我有可执行的 ELF 文件,它使用库 lib.so,这个 ELF 从 lib.so
调用函数 Func1
我需要 hook 这个函数,所以它会被我的函数替换,做别的事情。如何在不更改此可执行文件的情况下执行此操作?
看看LD_PRELOAD。该环境变量可以设置为一个 elf 共享对象,它将被注入到您的可执行文件的地址 space 中。该预加载对象中的函数可以替换其他对象中的函数。在您的情况下,只要未构建 lib.so -Bsymbolic
,这就可以工作。符号 linker 选项解析 link 传递中的内部调用。因此,如果 lib.so 包含并调用 func1
并构建 -Bsymbolic
,那么替换该调用非常棘手,您可能最终不得不更改 lib.so.
我有可执行的 ELF 文件,它使用库 lib.so,这个 ELF 从 lib.so
调用函数 Func1我需要 hook 这个函数,所以它会被我的函数替换,做别的事情。如何在不更改此可执行文件的情况下执行此操作?
看看LD_PRELOAD。该环境变量可以设置为一个 elf 共享对象,它将被注入到您的可执行文件的地址 space 中。该预加载对象中的函数可以替换其他对象中的函数。在您的情况下,只要未构建 lib.so -Bsymbolic
,这就可以工作。符号 linker 选项解析 link 传递中的内部调用。因此,如果 lib.so 包含并调用 func1
并构建 -Bsymbolic
,那么替换该调用非常棘手,您可能最终不得不更改 lib.so.