我直接通过动态链接器运行一个可执行文件,用动态链接器的路径调用execve()。但是,与直接执行二进制文件不同,/proc/self/exe是指向动态链接器的符号链接,而不是指向二进制文件的符号链接,这破坏了某些依赖于标准行为的应用程序(主要是OpenJDK)。是否有任何方法确定通过动态链接器执行的二进制文件的实际可执行路径?在/proc中是否还有我可以读取的文件来获取路径,然后对readlink()进行LD_PRELOAD重写,从而将对/proc/*/exe的访问转换为真正的路径?
为了了解一些背景情况,我正在尝试使用自定义ELF加载器参数来获取用于OpenJDK的fakechroot。
发布于 2014-12-16 21:29:50
这可能太简单了,您已经考虑过了,但是您不能简单地阅读/proc/*/cmdline并找到真正的可执行文件作为ld的一个参数吗?当然,只有当您检测到/proc/*/exe是指向ld的符号链接时,才会这样做。
https://stackoverflow.com/questions/27347718
复制相似问题