Hotpatchso 動(dòng)態(tài)加載庫(kù)
Hotpatch 是一個(gè)允許正在運(yùn)行的進(jìn)程動(dòng)態(tài)加載一個(gè) so 庫(kù)的 C 庫(kù),類似于 Win32 上的 CreateRemoteThread() API。
和其他現(xiàn)有的動(dòng)態(tài)加載方案相比,Hotpatch 的優(yōu)點(diǎn)是在加載 so 庫(kù)之后將會(huì)恢復(fù)原先進(jìn)程的運(yùn)行狀態(tài)。
開發(fā)者可以利用 Hotpatch 實(shí)現(xiàn):
- 加載 so 庫(kù)到一個(gè)已經(jīng)運(yùn)行的進(jìn)程中。
- 調(diào)用該 so 庫(kù)中的自定義函數(shù)。
- 向該函數(shù)傳遞序列化的參數(shù)。
它包含三部分: hotpatch.h 頭文件,libhotpatch.so 庫(kù)和命令行輔助程序 hotpatcher。
目前的局限有:
- 用戶只能向擁有權(quán)限的進(jìn)程注入 so 庫(kù)(當(dāng)然 root 用戶可以向所有進(jìn)程注入)。
- 目前僅支持 64 位 Linux,32 位支持將在下一個(gè)版本中完成。
- 在編譯共享庫(kù)時(shí)需要加上連接器參數(shù)
-fPIC -nostartfiles。 - 對(duì)于一個(gè)正在運(yùn)行進(jìn)程僅能動(dòng)態(tài)加載一次 so 庫(kù)文件。
評(píng)論
圖片
表情
