我通过动态链接器直接运行可执行文件,使用动态链接器的路径调用execve()
。但是,与直接执行二进制文件不同,/proc/self/exe
是动态链接器的符号链接,而不是二进制文件的符号链接,这会破坏某些依赖于标准行为的应用程序(主要是OpenJDK)。有没有办法确定通过动态链接器执行的二进制文件的实际可执行路径?我可以阅读/proc
中的其他文件以获取路径,然后对LD_PRELOAD
进行hacky readlink()
覆盖,将/proc/*/exe
的访问转换为真实路径吗?< / p>
对于一些背景知识 - 我正在尝试使用适用于OpenJDK的自定义ELF加载程序参数来获取fakechroot。
答案 0 :(得分:0)
这可能太容易了,你已经考虑过了,但是你不能简单地阅读/proc/*/cmdline
并找到真正的可执行文件作为ld
的参数吗?仅当您检测到/proc/*/exe
是ld
的符号链接时,当然。