直接调用动态链接器时确定实际可执行文件

时间:2014-12-07 20:56:02

标签: c linux ld

我通过动态链接器直接运行可执行文件,使用动态链接器的路径调用execve()。但是,与直接执行二进制文件不同,/proc/self/exe是动态链接器的符号链接,而不是二进制文件的符号链接,这会破坏某些依赖于标准行为的应用程序(主要是OpenJDK)。有没有办法确定通过动态链接器执行的二进制文件的实际可执行路径?我可以阅读/proc中的其他文件以获取路径,然后对LD_PRELOAD进行hacky readlink()覆盖,将/proc/*/exe的访问转换为真实路径吗?< / p>

对于一些背景知识 - 我正在尝试使用适用于OpenJDK的自定义ELF加载程序参数来获取fakechroot。

1 个答案:

答案 0 :(得分:0)

这可能太容易了,你已经考虑过了,但是你不能简单地阅读/proc/*/cmdline并找到真正的可执行文件作为ld的参数吗?仅当您检测到/proc/*/exeld的符号链接时,当然。