Executable

覆蓋執行檔中的硬編碼路徑

  • September 9, 2018

我想覆蓋一些儲存在預編譯執行檔(如“/usr/share/nmap/”)中的硬編碼路徑,並將它們重定向到另一個目錄。

我理想的解決方案不應該需要 root 權限,因此創建符號連結是不行的。

(也重新編譯它不是一個選項)

perl -pe 's:/usr/share/nmap/:/other/dir/nmap/:g
 ' /path/to/executable > new-executable

/other/dir/nmap長度應與 相同/usr/share/nmap/如果沒有,您可以使用字元填充:

perl -pe 's:/usr/share/nmap/:/other//////dir/:g
 ' /path/to/executable > new-executable

新的道路不能再長了。/tmp如果這是一個問題,您始終可以選擇在其中創建符號連結。

參考@slm的回答…

第三種方法可能是創建一個 chrooted 沙箱環境來執行執行檔,在該環境中,除了要重新映射的執行檔之外的所有內容都被定向到真實的東西。但這會很複雜。

但我建議獲取原始碼並重新編譯。(或者,如果這是專有程式碼,請支付供應商為您提供一些自定義執行檔……)

引用自:https://unix.stackexchange.com/questions/122189