linux不同版本间驱动加载方法.doc

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux不同版本间驱动加载方法

WebZine Introduction ---------- by root Flashsky访谈 ---------- by flashsky Struts2框架安全缺陷 ---------- by kxlzx 重谈IP欺骗技术 ---------- by papaya Fuzz客户端存储对象,寻找client ddos ---------- by woyigui 应用软件缺陷利用的一点心得(Webkit篇) ---------- by wushi Bypassing Linux kernel module version check ---------- by wzt ACS - Active Content Signatures ---------- by Eduardo Vela Nava 卡巴虚拟机启发式查毒的绕过方法 ---------- by dangdang Bypassing Linux kernel module version check By wzt 1、 为什么要突破模块验证 2、 内核是怎么实现的 3、 怎样去突破 4、 总结 5、 参考 6、 附录 1、 为什么要突破模块验证 Linux内核版本很多,升级很快,2个小内核版本中内核函数的定义可能都不一样,为了确保不一致的驱动程序导致kernel oops, 开发者加入了模块验证机制。它在加载内核模块的时候对模块进行校验, 如果模块与主机的一些环境不一致,就会加载不成功。 看下面一个例子,它简单的输出当期系统中的模块列表: #include linux/kernel.h #include linux/module.h #include linux/init.h #include linux/version.h #include linux/string.h #include linux/list.h MODULE_LICENSE(GPL); MODULE_AUTHOR(wzt); struct module *m = __this_module; int print_module_test(void) { struct module *mod; list_for_each_entry(mod, m-list, list) { printk(%s\n, mod-name); } return NULL; } static int list_print_init(void) { printk(load list_print module.\n); print_module_test(); return 0; } static void list_print_exit(void) { printk(unload list_print module.\n); } module_init(list_print_init); module_exit(list_print_exit); 我们在centos5.3环境中编译一下: [root@localhost list]# uname -a Linux localhost.localdomain 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009 i686 i686 i386 GNU/Linux 然后拷贝到另一台主机centos5.1xen上: [root@localhost ~]# uname -a Linux localhost.localdomain 2.6.18-53.el5xen #1 SMP Mon Nov 12 03:26:12 EST 2007 i686 i686 i386 GNU/Linux 用insmod加载: [root@localhost ~]# insmod list.ko insmod: error inserting list.ko: -1 Invalid module format 报错了,在看下dmesg的信息: [root@localhost ~]# dmesg|tail -n 1 list: disagrees about version of symbol struct_module 先不管这是什么, 总之我们的模块在另一台2.6.18的主机中加载失败。 通常的做法是要在主机中对源代码进行编译, 然后才能加载成功, 但是如果主机中缺少内核编译环境的话, 我们的roo

文档评论(0)

peain + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档