Executable
覆蓋執行檔中的硬編碼路徑
我想覆蓋一些儲存在預編譯執行檔(如“/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 沙箱環境來執行執行檔,在該環境中,除了要重新映射的執行檔之外的所有內容都被定向到真實的東西。但這會很複雜。
但我建議獲取原始碼並重新編譯。(或者,如果這是專有程式碼,請支付供應商為您提供一些自定義執行檔……)