目前我正在开发一些用C ++编写的应用程序插件 - 在Windows上我将dll注入进程,捕获接口并完成我的工作 - 但我的问题是 - 如何在linux上做类似的事情?我更喜欢这样做而不编辑可执行代码注入到运行进程。
答案 0 :(得分:1)
如果您可以控制流程的启动,只需使用LD_PRELOAD
强制加载库和可执行文件,可能会遮蔽其他库中的符号(链接到二进制文件中):
LD_PRELOAD=/path/to/libfoo.so myapplication
以下是通过拦截ioctl
来向v4l1应用程序添加v4l2支持层的实际用例:
LD_PRELOAD=/usr/local/lib/libv4l/v4l1compat.so camorama
要将符号注入已经运行的流程,请结帐this answer。