一种解决内核mmap调用失败的系统和方法

文档序号:6441038阅读:1725来源:国知局
专利名称:一种解决内核mmap调用失败的系统和方法
技术领域
本发明属于网络安全领域,具体涉及一种解决内核mmap调用失败的系统和方法。
背景技术
随着Linux内核的不断更新发展,它对系统安全方面做了更多方面的考虑。为了防止用户在用户态对内核态的蓄意恶意破坏,从2. 6. 28内核开始,内核已经限制了用户对 mmap的无限制使用。但mmap对许多的用户程序来说是最基本的功能,尤其是利用mmap对内核态和用户态共享内存时,内核对mmap的限制将直接导致用户程序无法在新内核上运行。专利号CN201010622299. 6(在Linux内核中实现仿Windows系统调用机制的方法)公开了一种在Linux内核中实现仿Windows系统调用机制的方法,1)修改Linux内核的代码,保留从0x20-0x2f范围中的中断向量,使Linux内核不会将中断向量OUe分配用于外部中断;2)将ReactOS中所实现仿Windows系统调用机制的代码移植到Linux内核中, 根据需要再加以必要的修改。本发明有益的效果是本发明提供了一种方法,使得可以在 Linux内核中实现基于“int 0x2e”指令的仿Windows系统调用机制,解决了使Linux内核支持Windows应用的首要条件。专利号CN200710039207. X(Linux操作系统的内核调试方法)公开了一种Linux 操作系统的内核调试方法,首先,将需要修改和调试的内核部分以内核模块的方式编译成临时内核;然后利用内核装载工具将所述的临时内核加载到内核的用户空间,并在被替换的原始内核的函数的入口放置函数跳转表,截获所有对原始内核的函数的调用,当调用原始内核的函数时自动跳转至临时内核的替换函数处;进行临时内核的调试;当调试过程完成后,利用内核卸载工具将临时内核从修改过的内核中卸载下来,恢复内核的原始状态。本发明的内核编译过程仅限于指定的相关函数,无需重新启动内核,可避免内核调试过程中的重新编译、重新链接、下载时间以及内核启动时间;缩短操作系统的开发与调试时间,提高操作系统的开发与调试效率。目前,最常见的解决方案是打开.conf ig文件中的C0NFIG_STRICT_DEVMEM和 C0NFIG_X86_PAT,然后重新编译内核,解除内核对mmap的限制使用。第二中方案是采用第三方提供的库。这两种方案对用户来说改动都比较大,尤其是第一种。而且在某些情况下, 客户是不能允许重新编译内核的。第二种方案的可控性也不好。

发明内容
本发明克服现有技术不足,能够在用户程序做最小改动的情况下,实现用户程序在最新内核上对mmap的无限制使用。本发明提供了一种解除内核对mmap的限制使用的方法,其在内核态中通过驱动程序创建私有的内存设备,所有的内存映射、数据共享都在该私有设备上来操作,从而实现各个内核版本上用户态和内核态数据的共享。
本发明提供的解除内核对mmap的限制使用的方法,驱动程序提供mmap方法供用户态的应用程序使用。本发明提供的解除内核对mmap的限制使用的方法,驱动程序提供operurelease、 read, write供用户态的应用程序使用。本发明提供的解除内核对mmap的限制使用的方法,用户态的应用程序通过驱动程序提供的mmap方法来映射私有内存设备到用户空间,通过operurelease打开关闭设备, 通过read、write来读写设备。本发明还提供了一种解除内核对mmap的限制使用的系统,其包括内核态中通过驱动程序创建私有的内存设备,所有的内存映射、数据共享都在该私有设备上来操作,从而实现各个内核版本上用户态和内核态数据的共享。本发明提供的解除内核对mmap的限制使用的系统,驱动程序提供mmap方法供用户态的应用程序使用。本发明提供的解除内核对mmap的限制使用的系统,驱动程序提供operurelease、 read, write供用户态的应用程序使用。本发明提供的解除内核对mmap的限制使用的系统,用户态的应用程序通过驱动程序提供的mmap方法来映射私有内存设备到用户空间,通过operurelease打开关闭设备, 通过read、write来读写设备。与现有技术相比,本发明的有益效果在于采用该方案,首先,兼容性大大提高。只需要编写一个规模不大的驱动程序就能摆脱mmap对内核的依赖,实现对各种系统内核版本的兼容。其次,可控性大大增强。仅仅通过编写一个驱动,就能够实现用户态应用程序和底层设备的任意访问控制。如果不采用该方案,或者通过重新编译内核,或者通过采用第三方软件,兼容性和可控性都会大受折扣。


图1是本发明的结构示意图。
具体实施例方式为了解决这个问题,本发明单独创建了一个私有设备,所有的内存映射、数据共享都在自己的私有设备上来操作。这样就避开了新内核对其自己私有设备的保护,这样mmap 就可以不受限制地在各个内核版本上运行,实现用户态和内核态数据的共享。具体操作如附图1所示。驱动程序负责生成一个私有的内存设备,驱动提供open、release、read、Write 以及mmap方法供用户态的应用程序使用。这样用户态的应用程序就可以通过驱动提供的 mmap方法来映射私有内存设备到用户空间,通过open、release打开关闭设备,通过read、 write来读写设备。本发明的方案通过驱动程序来能摆脱mmap对内核的依赖,实现对各种系统内核版本的兼容,而且能够实现用户态应用程序和底层设备的任意访问控制。以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所述领域的普通技术人员应当理解依然可以对本发明的具体实施方式
进行修改或者同等替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种解除内核对rnmap的限制使用的方法,其在内核态中通过驱动程序创建私有的内存设备,所有的内存映射、数据共享都在该私有设备上来操作,从而实现各个内核版本上用户态和内核态数据的共享。
2.权利要求1的方法,其特征在于,驱动程序提供mmap方法供用户态的应用程序使用。
3.权利要求1-2的方法,其特征在于,驱动程序提供open、release,read, write供用户态的应用程序使用。
4.权利要求1-2的方法,其特征在于,用户态的应用程序通过驱动程序提供的mmap方法来映射私有内存设备到用户空间,通过operurelease打开关闭设备,通过reacUwrite来读写设备。
5.一种解除内核对mmap的限制使用的系统,其包括内核态中通过驱动程序创建私有的内存设备,所有的内存映射、数据共享都在该私有设备上来操作,从而实现各个内核版本上用户态和内核态数据的共享。
6.权利要求5的系统,其特征在于,驱动程序提供mmap方法供用户态的应用程序使用。
7.权利要求5-6的系统,其特征在于,驱动程序提供open、release,read, write供用户态的应用程序使用。
8.权利要求5-7的系统,其特征在于,用户态的应用程序通过驱动程序提供的mmap方法来映射私有内存设备到用户空间,通过operurelease打开关闭设备,通过reacUwrite来读写设备。
全文摘要
本发明提供一种解决内核mmap调用失败的系统和方法,其在内核态中通过驱动程序创建私有的内存设备,所有的内存映射、数据共享都在该私有设备上来操作,从而实现各个内核版本上用户态和内核态数据的共享。本发明的一种解决内核mmap调用失败的系统和方法,首先,兼容性大大提高。只需要编写一个规模不大的驱动程序就能摆脱mmap对内核的依赖,实现对各种系统内核版本的兼容。其次,可控性大大增强。仅仅通过编写一个驱动,就能够实现用户态应用程序和底层设备的任意访问控制。如果不采用该方案,或者通过重新编译内核,或者通过采用第三方软件,兼容性和可控性都会大受折扣。
文档编号G06F9/45GK102567068SQ201110415128
公开日2012年7月11日 申请日期2011年12月13日 优先权日2011年12月13日
发明者刘朝辉, 刘灿, 李锋伟, 纪奎, 邵宗有 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1