V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zungmou
V2EX  ›  程序员

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

  •  
  •   zungmou · Jun 5, 2014 · 4739 views
    This topic created in 4347 days ago, the information mentioned may be changed or developed.
    LD_PRELOAD={共享库路径} {可执行程序路径}

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

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

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

    求教...
    2 replies    2014-06-05 11:42:00 +08:00
    Chewbacca
        1
    Chewbacca  
       Jun 5, 2014
    加引号啊, LD_PRELOAD="/usr/A B C/libd.so" exefile
    zungmou
        2
    zungmou  
    OP
       Jun 5, 2014
    @Chewbacca 你好,引号是没有用的。

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

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

    解决方法是在 LD_LIBRARY_PATH 环境变量中添加路径,或者使用没有空格的符号链接。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5710 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 06:15 · PVG 14:15 · LAX 23:15 · JFK 02:15
    ♥ Do have faith in what you're doing.