请检查
http://sourceforge.net/projects/html5remote/
在这个项目中,我使用了 patchElf、LD_PRELOAD 和 LD_LIBRARY_PATH。
有一些技巧可以使相对路径起作用。经过一些实验,我得出的结论是不需要修补目标二进制文件,因为 ld.so 可用于直接从命令行加载目标程序,例如:
$ /lib64/ld-linux-x86-64.so.2 [选项]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
在这种情况下,写入目标二进制文件的 elf 标头中的解释器将被忽略,例如:
$ ldd /usr/bin/mysql
linux-vdso.so.1 => (0x00007fff3fde0000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f72f89ea000)
libreadline.so.6 => /lib/x86_64-linux-gnu/libreadline.so.6 (0x00007f72f87a8000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f72f8590000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f72f838c000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f72f8090000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f72f7cd0000)
/original/path/to/ld.so (0x00007f72f9187000) ** ignored **
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f72f7aa9000)
选项:
--库路径
告诉 ld.so 加载器在哪里搜索共享库(例如:libc.so 等)
我希望这可以帮助:)