你好,
我正在編寫一個Linux模塊(基于名為“Ccontrol”的GitHub項目)來創建緩存分區(a.k.a頁面著色),以減輕定時側通道攻擊(用于防止Prime Probe等攻擊).
我已經使用LD_PRELOAD系統env變量來覆蓋所有malloc(),calloc()和free()調用,并用顏色感知調用替換它們.
現在我正在尋找顏色堆棧和數據段的顏色.
用于為新生進程分配內存的系統調用/庫是什么?
有沒有辦法使用LD_PRELOAD或任何其他方法覆蓋此調用(不重新編譯內核)?
謝謝大家,
加爾
解決方法:
有兩個內存分配系統調用:sbrk,它擴展(連續)堆段和mmap,用于將單獨的匿名內存段映射到調用進程的地址空間.
但是,您將無法使用LD_PRELOAD來覆蓋這些.
如果您覆蓋的代碼通過DSO導出的libc包裝器進行這些調用,您將只能執行此操作,這意味著您將無法通過未導出的包裝器覆蓋直接系統調用和系統調用(DSO-internal( __attribute __((visibility(“hidden”)))),大多數libc實現都使用了很多.你也無法覆蓋動態鏈接器所做的系統調用.
如果您需要一種強大的覆蓋調用方式,則需要轉向ptrace或修改內核.
標簽:linux,linux-kernel,linux-device-driver
來源: https://codeday.me/bug/20190705/1391242.html