簡體   English   中英

在linux內核中攔截ELF加載程序:通過可加載內核模塊的fs / binfmt_elf.c文件

[英]Intercept ELF loader in linux kernel: fs/binfmt_elf.c file via loadable kernel module

我是內核編碼的新手,目前我正在處理ELF文件,為了安全起見,我已經修改了一些文件,我需要查看它的一些自定義部分標題,並從中提取唯一的代碼加密密鑰。 CPU解密修改后的ELF的內容。

目前上面的邏輯已經在內核源代碼樹的fs/binfmt_elf.c文件中的load_elf_binary函數中實現,但是我需要重新編譯整個內核只需要250行代碼更改,所以我正在尋找通過將其作為可加載內核模塊(LKM)實現來即興發揮此功能,以便每次加載ELF時它都會檢查是否修改了ELF,如果是,那么它會從相應的部分中獲取密鑰。

編輯:總結一下,我正在尋找一個可加載的內核模塊來讀取ELF的各個部分並獲取包含加密密鑰和相關元數據的自定義部分的內容,並在CPU寄存器中設置這些值。

是的,這是可能的 ,但絕對不容易。 甚至還有一個受支持的內核工具“kprobes”允許您從指定位置插入對自己代碼的調用(請參閱Documentation/kprobes.txt )。 如果插入對自己代碼的調用不足,我認為您需要使用與kprobe相同的機制:通過使用jmp s覆蓋指令來修補所需位置或call s call到您自己的代碼中。

我曾經在一家公司工作,該公司的安全產品通過運行時修補Windows內核來安裝它的鈎子。 這幾乎是一回事,但至少在Windows上,當時必須支持有限數量的版本。

所以,這絕對是可能的,但我不想嘗試。 它會非常脆弱; 你將實際上試圖擊中一個移動的目標。 每個內核安全補丁或版本升級都可能會破壞您的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM