資料介紹
分享到:
使用Linux Kernel Module的一般目的就是擴展系統的功能,或者給某些特殊的設備提供驅動等等。其實利用Linux內核模塊我們還可以做一些比較“黑客”的事情,例如用來攔截系統調用,然后自己處理。嘿嘿,有意思的說。
下面給出一個簡單的例子,說明了其基本的工作過程。
#define MODULE
#define __KERNEL__
#include 《linux/module.h》
#include 《linux/kernel.h》
#include 《asm/unistd.h》
#include 《sys/syscall.h》
#include 《linux/types.h》
#include 《linux/dirent.h》
#include 《linux/string.h》
#include 《linux/fs.h》
#include 《linux/malloc.h》
extern void* sys_call_table[]; /*sys_call_table is exported, so we can access it*/
int (*orig_mkdir)(const char *path); /*the original systemcall*/
int hacked_mkdir(const char *path)
{
return 0; /*everything is ok, but he new systemcall
does nothing*/
}
int init_module(void) /*module setup*/
{
orig_mkdir=sys_call_table[SYS_mkdir];
sys_call_table[SYS_mkdir]=hacked_mkdir;
return 0;
}
void cleanup_module(void) /*module shutdown*/
{
sys_call_table[SYS_mkdir]=orig_mkdir; /*set mkdir syscall to the origal
one*/
}
大家看到前面的代碼了,非常簡單,我們就是替換了內核的系統調用數組中我們關心的指針的值,系統調用在內核中實際就是一個數組列表指針對應的函數列表。我們通過替換我們想“黑”的函數的指針,就可以達到我們特定的目的。這個例子中我們替換了“mkdir”這個函數。這樣,用戶的應用程序如果調用mkdir后,當內核響應的時候,實際上是調用我們“黑”了的函數,而我們實現的函數里面是什么都沒有干,所以這里會導致用戶運行“mkdir”得不到結果。這個例子很簡單,但是我們可以看出,如果我們想截獲一個系統調用,那么我們只需要做以下的事情:
1.查找出感興趣的系統調用在系統內核數組中的入口位置??梢詤⒖磇nclude/sys/ syscall.h文件。
2.將內核中原來的調用函數對應的指針sys_call_table[X]保留下來。
3.將我們新的偽造的系統函數指針給sys_call_table[X]。
?
使用Linux Kernel Module的一般目的就是擴展系統的功能,或者給某些特殊的設備提供驅動等等。其實利用Linux內核模塊我們還可以做一些比較“黑客”的事情,例如用來攔截系統調用,然后自己處理。嘿嘿,有意思的說。
下面給出一個簡單的例子,說明了其基本的工作過程。
#define MODULE
#define __KERNEL__
#include 《linux/module.h》
#include 《linux/kernel.h》
#include 《asm/unistd.h》
#include 《sys/syscall.h》
#include 《linux/types.h》
#include 《linux/dirent.h》
#include 《linux/string.h》
#include 《linux/fs.h》
#include 《linux/malloc.h》
extern void* sys_call_table[]; /*sys_call_table is exported, so we can access it*/
int (*orig_mkdir)(const char *path); /*the original systemcall*/
int hacked_mkdir(const char *path)
{
return 0; /*everything is ok, but he new systemcall
does nothing*/
}
int init_module(void) /*module setup*/
{
orig_mkdir=sys_call_table[SYS_mkdir];
sys_call_table[SYS_mkdir]=hacked_mkdir;
return 0;
}
void cleanup_module(void) /*module shutdown*/
{
sys_call_table[SYS_mkdir]=orig_mkdir; /*set mkdir syscall to the origal
one*/
}
大家看到前面的代碼了,非常簡單,我們就是替換了內核的系統調用數組中我們關心的指針的值,系統調用在內核中實際就是一個數組列表指針對應的函數列表。我們通過替換我們想“黑”的函數的指針,就可以達到我們特定的目的。這個例子中我們替換了“mkdir”這個函數。這樣,用戶的應用程序如果調用mkdir后,當內核響應的時候,實際上是調用我們“黑”了的函數,而我們實現的函數里面是什么都沒有干,所以這里會導致用戶運行“mkdir”得不到結果。這個例子很簡單,但是我們可以看出,如果我們想截獲一個系統調用,那么我們只需要做以下的事情:
1.查找出感興趣的系統調用在系統內核數組中的入口位置??梢詤⒖磇nclude/sys/ syscall.h文件。
2.將內核中原來的調用函數對應的指針sys_call_table[X]保留下來。
3.將我們新的偽造的系統函數指針給sys_call_table[X]。
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- Linux操作系統的CP命令源代碼匯總 4次下載
- LINUX操作系統的安裝與Linux常用文件命令 3次下載
- 從vista、UNIx和Linux說起全面講解操作系統 5次下載
- 怎么樣在Linux操作系統下設計軟PLC開發系統 10次下載
- Linux的Ubuntu操作系統的安裝教程 22次下載
- Linux操作系統基礎教程的詳細資料講解 4次下載
- Linux操作系統實用教程之如何Linux系統的遠程管理 0次下載
- Linux操作系統下C語言編程入門.pdf 95次下載
- Linux快速入門之安裝Linux操作系統及小結 0次下載
- Linux內核系統調用擴展研究 40次下載
- Linux操作系統分析 78次下載
- 嵌入式操作系統Linux 中的串口應用編程
- linux操作系統的安全性 0次下載
- Linux操作系統原理及應用 0次下載
- Linux操作系統 0次下載
- Linux操作系統中如何按下PCIe的復位鍵 1183次閱讀
- Linux是實時系統還是分時操作系統? 1414次閱讀
- linux操作系統基礎知識 5829次閱讀
- 淺談Linux美國服務器常見操作系統 2451次閱讀
- Linux操作系統知識講解:走進Linux 內存分配算法 5324次閱讀
- Linux操作系統知識講解:走進linux 內存地址空間 4903次閱讀
- Linux操作系統知識講解:走進內存 2255次閱讀
- Linux操作系統的目錄結構 3431次閱讀
- 基于Linux等不同操作系統實現異構系統的設計 2537次閱讀
- linux操作系統中如何截獲系統調用 1900次閱讀
- 關于Linux操作系統中LKM的優勢與不足研究與應用淺析 4016次閱讀
- 為什么選擇Linux操作系統?制約標準Linux操作系統實時性的因素 5364次閱讀
- 透了解系統調用助你成為Linux下編程高手 3351次閱讀
- 以Linux操作系統設計的掌上娛樂系統 2365次閱讀
- 基于Linux的嵌入式實時操作系統的研究 2298次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多