ld_preload
函式劫持
2.3. ld_preload使用限制
這種方式雖然很酷,但卻有一些限制。比如對於靜態編譯的程式是無效的。因為靜態編譯的程式不需要連線動態庫的面的函式。而且,假如檔案的suid或sgid位被置1,載入的時候會忽略ld_preload(這是ld的開發者出於安全考慮做的)。
三.相關的隱匿技術
3.1 jynx-kit
3.2 檢查隱匿
參考文章:
linux c/c++除錯之一:利用ld_preload機制監控程式io操作
參考文章:
動態連線的訣竅:使用 ld_preload 去欺騙、注入特性和研究程式
參考文章:
如何避免被hook
(1).靜態鏈結,把**都靜態鏈結入可執行程式.
(2).通過設定執行檔案的setgid / setuid標誌.在有suid許可權的執行檔案,系統會忽略ld_preload環境變數.
(3).在程式的開始檢測ld_preload
linux環境變數生效篇
效果:應用程式設定環境變數,使其全域性生效,並且立即生效,應用程式解除安裝時,使其全域性失效,並且立即失效。
情況:1.多終端(多個xshell開啟,如何使其全部同時生失效)
2.沒有終端,在系統介面,如何使其立即生失效
export ld_preload=name指令在終端執行時,立即生效,但是放在指令碼中,或者是多個指令碼深度巢狀的環境中,不能夠改變當前終端的環境變數,
嘗試方法:
在生效時,根據系統啟動時的環境變數載入流程,逐項進行設定,然後使其生效,檢視效果
在失效時,根據系統啟動時的環境變數載入流程,逐項進行設定,然後使其失效,檢視效果
bug修改:
get_config_file_all和get_config_file函式中的perror一行去掉,不需要輸出
sent_study_process函式中增加判斷,增加標頭檔案unistd.h
centos-3.10.0-862.el7.x86_64-v1.0-1.8-t-20190515153527.bin這個程式是bin包,不能使用source或者. 去執行,只能使用./
利用LD PRELOAD給glibc庫函式加鉤子
通過getuid printf等函式講解了基本的加鉤子的方法 如果你希望的不僅僅是替換掉原有庫函式,而且還希望最終將函式邏輯傳遞到原有系統函式,那麼你可能需要用到rtld next。系統可能提示 rtld next未定義,這裡給出了解決方案 我的過程記錄 fork.c,最後編譯成fork.so in...
利用LD PRELOAD給glibc庫函式加鉤子
通過getuid printf等函式講解了基本的加鉤子的方法 如果你希望的不僅僅是替換掉原有庫函式,而且還希望最終將函式邏輯傳遞到原有系統函式,那麼你可能需要用到rtld next。系統可能提示 rtld next未定義,這裡給出了解決方案 我的過程記錄 fork.c,最後編譯成fork.so in...
學習LD PRELOAD之摘抄
一 ld preload是什麼 ld preload是linux系統的乙個環境變數,它可以影響程式的執行時的鏈結 runtime linker 它允許你定義在程式執行前優先載入的動態鏈結庫。這個功能主要就是用來有選擇性的載入不同動態鏈結庫中的相同函式。通過這個環境變數,我們可以再主程式和其動態鏈結庫...