2014-12-07 39 views
1

我正在通過動態鏈接器直接運行可執行文件,並調用execve()以及動態鏈接器的路徑。然而,與直接執行二進制文件不同,/proc/self/exe是動態鏈接程序的符號鏈接,而不是二進制文件的符號鏈接,它破壞了依賴於標準行爲的某些應用程序(主要是OpenJDK)。有什麼方法可以確定通過動態鏈接器執行的二進制文件的真實可執行文件路徑嗎?是否有/proc中的另一個文件,我可以讀取它來獲取路徑,然後readlink()覆蓋LD_PRELOAD覆蓋,將/proc/*/exe的訪問轉換爲真實路徑?直接調用動態鏈接器時確定真正的可執行文件

對於一些背景 - 我試圖讓自定義ELF加載器參數爲OpenJDK工作fakechroot。

回答

0

這可能太簡單了,你已經考慮過了,但是你不能簡單地讀/proc/*/cmdline並找到真正的可執行文件作爲ld的參數嗎?當然,只有當您發現/proc/*/exe是符號鏈接ld時纔是。

+0

我一直希望避免那:)但看到它已經過了一個星期沒有其他答案,我想這是唯一的方法。 – Xenopathic 2014-12-17 22:06:52

相關問題