V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zungmou
V2EX  ›  程序员

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

  •  
  •   zungmou · 2014-06-05 09:52:48 +08:00 · 4362 次点击
    这是一个创建于 3826 天前的主题,其中的信息可能已经有所发展或是发生改变。
    LD_PRELOAD={共享库路径} {可执行程序路径}

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

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

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

    求教...
    2 条回复    2014-06-05 11:42:00 +08:00
    Chewbacca
        1
    Chewbacca  
       2014-06-05 10:50:32 +08:00
    加引号啊, LD_PRELOAD="/usr/A B C/libd.so" exefile
    zungmou
        2
    zungmou  
    OP
       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 环境变量中添加路径,或者使用没有空格的符号链接。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4592 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 10:11 · PVG 18:11 · LAX 02:11 · JFK 05:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.