1.通過kallsyms方式
基於linux 5.0/linux5.3 的x86-64系統.
1. 通過kallsyms_lookup_name查詢sys_call_table位址.
2. 關閉寫保護
3. 修改sys_call_table
linux5.0上直接呼叫write_cr0介面,能夠順利的修改cr0暫存器,而核心版本更新到linux5.3以後,發現對cr0的修改進行了保護,所以這裡需要自定義write_cr0的實現,直接從linux5.0中把相關**靜態編譯進入模組中.這樣也可以繞過對cr0的保護.
#include#include#include#include#include#include#include#include#include#include#include static unsigned long __lkm_order;
static inline unsigned long lkm_read_cr0(void)
static inline void lkm_write_cr0(unsigned long val)
long (*fake_ptr)(const struct pt_regs*);
long fake_close(const struct pt_regs* regs)
void disable_write_protection(void)
void
enable_write_protection(void)
void get_sys_call_table(void)
static int __init rootkits_lsm_init(void)
static void __exit root_kits_lsm_uninit(void)
module_init(rootkits_lsm_init);
module_exit(root_kits_lsm_uninit);
module_license("gpl");
Linux核心系統呼叫的新增
本文通過自身實踐,介紹了在linux下為核心新增系統呼叫的簡單例項。系統呼叫 作業系統為使用者態程序與硬體及核心資源進行互動提供的一組介面 系統呼叫可被看成是乙個核心與使用者空間程式互動的介面。優點 極大的提高了系統的安全性 使使用者程式具有可移植性。系統呼叫與核心函式 核心函式在形式上與普通函式一...
Linux嵌入式 核心 系統呼叫
1.系統呼叫 定義 linux核心中設定了一組用於實現各種系統功能的子程式,稱為系統呼叫。使用者可以通過系統呼叫命令在自己的應用程式中呼叫它們。系統呼叫和普通的函式呼叫非常相似,區別僅僅在於,系統呼叫由作業系統核心實現,執行於核心態 而普通的函式呼叫由函式庫或使用者自己提供,執行於使用者態。2.系統...
深入理解Linux核心 系統呼叫
系統呼叫 使用者態程序向核心發出的,實現使用者態程序呼叫硬體裝置的函式或者中斷 優點 使程式設計更容易,將使用者從學習硬體裝置的低階程式設計特性中解放 提高系統到安全性,核心在滿足請求之前可以做正確性檢查 提高可移植性 系統呼叫與api呼叫的區別 1 api呼叫是乙個函式定義 系統呼叫是通過軟中斷向...