[发明专利]一种函数编译方法及装置有效
申请号: | 201711310868.1 | 申请日: | 2017-12-11 |
公开(公告)号: | CN107992307B | 公开(公告)日: | 2021-04-13 |
发明(设计)人: | 刘天;张建新 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F21/57 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 王玉双 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 函数 编译 方法 装置 | ||
本发明实施例提供一种函数编译方法及装置,所述函数编译方法包括:获得目标函数的源代码以及用于编译所述目标函数的源代码的编译指令;执行所述编译指令,从所述目标函数的源代码中,确定所述目标函数所使用的依赖内容,并获取所述依赖内容对应的声明语句,其中,所述依赖内容至少为被调用函数、变量或者宏中的一种或者多种;基于所述依赖内容对应的声明语句,按照预设策略,对所述目标函数的源代码进行预处理;编译预处理后的所述目标函数的源代码,获得实现所述目标函数功能的二进制文件。如此,通过对所述目标函数的源代码进行预处理,能够提高编译速度,获得最小实现目标函数功能的二进制文件。
技术领域
本发明涉及计算机领域,尤其涉及一种函数编译方法及装置。
背景技术
一份Linux内核源代码是由成百上千,甚至是由上万、上百万个函数构成的,这些函数所对应的源代码可能会分布在不同的文件中。对于某一源文件中的某一目标函数而言,它可能需要调用一些全局变量、其他函数、头文件中包含的宏定义和内联(inline)函数等依赖内容,才能实现对应的功能。
在现有技术中,当该目标函数调用依赖内容时,如果只是想要单独编译该某目标函数,为了让编译器能够找到这些依赖内容,往往只能通过整体编译内核源代码的方式来实现,编译速度非常慢。
可见,现有技术中并不存在一种单独编译函数源代码的方法。
发明内容
有鉴于此,本发明实施例提供一种函数编译方法及装置,主要目的在于在单独编译特定函数时,能够加快编译速度。
为达到上述目的,本发明实施例主要提供如下技术方案:
第一方面,本发明实施例提供一种函数编译方法,所述方法包括:获得目标函数的源代码以及用于编译所述目标函数的源代码的编译指令;执行所述编译指令,从所述目标函数的源代码中,确定所述目标函数所使用的依赖内容,并获取所述依赖内容对应的声明语句,其中,所述依赖内容至少为被调用函数、变量或者宏中的一种或者多种;基于所述依赖内容对应的声明语句,按照预设策略,对所述目标函数的源代码进行预处理;编译预处理后的所述目标函数的源代码,获得实现所述目标函数功能的二进制文件。
第二方面,本发明实施例提供一种漏洞检测方法,所述方法包括:在检测到内核漏洞时,获取触发所述内核漏洞的问题函数的源代码;从所述问题函数的源代码中,获取所述问题函数对应的输入参数;通过上述函数编译方法,对所述源代码进行编译,生成所述问题函数对应的内核模块;基于所述输入参数,运行所述内核模块,重新确认是否存在所述内核漏洞。
第三方面,本发明实施例提供一种函数编译装置,所述装置包括:获得单元、执行单元、预处理单元以及编译单元,其中,所述获得单元,用于获得目标函数的源代码以及用于编译所述目标函数的源代码的编译指令;所述执行单元,用于执行所述编译指令,从所述目标函数的源代码中,确定所述目标函数所使用的依赖内容,其中,所述依赖内容至少为被调用函数、变量或者宏中的一种或者多种;所述预处理单元,用于基于所述依赖内容的特征信息,按照预设策略,对所述目标函数的源代码进行预处理;所述编译单元,用于编译预处理后的所述目标函数的源代码,获得实现所述目标函数功能的二进制文件。
第四方面,本发明实施例提供一种漏洞检测装置,所述装置包括:第一获取单元、第二获取单元、生成单元以及确认单元,其中,所述第一获取单元,用于在检测到内核漏洞时,获取触发所述内核漏洞的问题函数的源代码;所述第二获取单元,用于从所述问题函数的源代码中,获取所述问题函数对应的输入参数;所述生成单元,用于通过上述函数编译方法,对所述源代码进行编译,生成所述问题函数对应的内核模块;所述确认单元,用于基于所述输入参数,运行所述内核模块,重新确认是否存在所述内核漏洞。
第五方面,本发明实施例提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711310868.1/2.html,转载请声明来源钻瓜专利网。