请教在 Linux 下使用 LD_PRELOAD 注入代码

2014-06-05 09:52:48 +08:00
 zungmou
LD_PRELOAD={共享库路径} {可执行程序路径}

问题发生在,共享库路径包含空格,已经用 \ 符号在空格前面进行转义,但 LD_PRELOAD 仍然不识别包含空格的路径,一遇到空格就认为路径到此结束了。

尝试过使用 ' 或 " 对路径进行包含,也无效。

但是后面的可执行程序路径是支持 \ 符号进行空格转义的。

求教...
4376 次点击
所在节点    程序员
2 条回复
Chewbacca
2014-06-05 10:50:32 +08:00
加引号啊, LD_PRELOAD="/usr/A B C/libd.so" exefile
zungmou
2014-06-05 11:42:00 +08:00
@Chewbacca 你好,引号是没有用的。

我找到了这篇帖子(http://ubuntuforums.org/showthread.php?t=1142062)

LD_PRELOAD 这个环境变量不支持空格分隔,为了与旧系统兼容,系统使用空格分隔 LD_PRELOAD 的参数,所以如果路径中包含有空格,就会被当作另一个 LD_PRELOAD 来使用。

解决方法是在 LD_LIBRARY_PATH 环境变量中添加路径,或者使用没有空格的符号链接。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/115877

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX