科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux系统可卸载内核模块完全指南(上) (2)

Linux系统可卸载内核模块完全指南(上) (2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

只有在第四部分会给大家一些不需要LKM支持的源代码。本文的绝大多数想法一样可以在Linux2.2.x上实现(也许你会需要一些小小的改动)。

作者:IHH 来源:Silversand.net 2007年11月6日

关键字: 模块 内核 卸载 Linux

  • 评论
  • 分享微博
  • 分享邮件
只有在第四部分会给大家一些不需要LKM支持的源代码。本文的绝大多数想法一样可以在Linux2.2.x上实现(也许你会需要一些小小的改动)。

这篇文章会有一个特别的章节来帮助系统管理员进行系统安全防护。你(作为一名Hacker)也必须仔细阅读这些章节。你必须要知道所有系统管理员知道的,甚至更多。你也会从中发现很多优秀的想法。这也会对你开发高级的入侵系统的LKMs有所帮助。

因此,通读这篇文章吧。

第一部分. 基础知识

1.1 什么是LKMs

LKMs就是可卸载的内核模块(Loadable Kernel Modules)。这些模块本来是Linux系统用于扩展他的功能的。使用LKMs的优点有:他们可以被动态的加载,而且不需要重新编译内核。由于这些优点,他们常常被特殊的设备(或者文件系统),例如声卡等使用。

每个LKM至少由两个基本的函数组成:

int init_module(void) /*用于初始化所有的数据*/
{
...
}
void cleanup_module(void) /*用于清除数据从而能有一个安全的退出*/
{
...
}

加载一个模块(常常只限于root能够使用)的命令是:

# insmod module.o

这个命令让系统进行了如下工作:

加载可执行的目标文件(在这儿是module.o)

调用 create_module这个系统调用(至于什么叫系统调用,见1.2)来分配内存。

不能解决的引用由系统调用get_kernel_syms进行查找引用。

在此之后系统调用init_module将会被调用用来初始化LKM->执行 int inti_module(void) 等等

(内核符号将会在1.3节中内核符号表中解释)

    • 评论
    • 分享微博
    • 分享邮件
    闂傚倷绶¢崣搴ㄥ窗閺囩偐鏋庨柕蹇嬪灪婵ジ鏌曡箛瀣偓鏍綖閿燂拷

    濠电姷顣介埀顒€鍟块埀顒€缍婇幃妯诲緞閹邦剛鐣洪梺闈浥堥弲婊勬叏濠婂牊鍋ㄦい鏍ㄧ〒閹藉啴鏌熼悜鈺傛珚鐎规洘宀稿畷鍫曞煛閸屾粍娈搁梻浣筋嚃閸ㄤ即宕㈤弽顐ュС闁挎稑瀚崰鍡樸亜閵堝懎濮┑鈽嗗亝濠㈡ê螞濡ゅ懏鍋傛繛鍡樻尭鐎氬鏌嶈閸撶喎顕i渚婄矗濞撴埃鍋撻柣娑欐崌閺屾稑鈹戦崨顕呮▊缂備焦顨呴惌鍌炵嵁鎼淬劌鐒垫い鎺戝鐎氬銇勯弽銊ф噥缂佽妫濋弻鐔碱敇瑜嶉悘鑼磼鏉堛劎绠為柡灞芥喘閺佹劙宕熼鐘虫緰闂佽崵濮抽梽宥夊垂閽樺)锝夊礋椤栨稑娈滈梺纭呮硾椤洟鍩€椤掆偓閿曪妇妲愰弮鍫濈闁绘劕寮Δ鍛厸闁割偒鍋勯悘锕傛煕鐎n偆澧紒鍌涘笧閹瑰嫰鎼圭憴鍕靛晥闂備礁鎼€氱兘宕归柆宥呯;鐎广儱顦伴崕宥夋煕閺囥劌澧ù鐘趁湁闁挎繂妫楅埢鏇㈡煃瑜滈崜姘跺蓟閵娧勵偨闁绘劕顕埢鏇㈡倵閿濆倹娅囨い蹇涗憾閺屾洟宕遍鐔奉伓

    重磅专题
    往期文章
    最新文章