【技术实现步骤摘要】
一种在无编译环境下对项目的动态组件分析方法及系统
[0001]本专利技术涉及软件分析
,尤其涉及一种在无编译环境下对项目的动态组件分析方法及系统。
技术介绍
[0002]动态组件扫码理论上来说是一种通用的分析方法,可以对任何开发语言对象进行分析,Java、C/C++、Golang、Python、JavaScript等等,它对关注的对象是从文件层面的文件内容,以及文件与文件之间的关联关系以及彼此组合成目标的过程细节。从动态组件扫码分析的目标程序形式上分,既可以是源代码也可以是编译出来的各种类型的二进制文件,分析的数据对象对程序架构,编译方式都是不敏感的,比如:类名称、方法/函数名称、常量字符串等等,不管目标程序运行在x86平台还是ARM平台,不管是windows程序还是Linux程序,都是一样的,简而言之动态组件扫码是一种跨开发语言的应用程序分析技术。
[0003]动态组件分析类型主要分为4种类型:依赖匹配、文件目录匹配、代码片段匹配、二进制文件匹配,后3种匹配类型是从源代码文件中提取特征,再对特征进行识别和分析 ...
【技术保护点】
【技术特征摘要】
1.一种在无编译环境下对项目的动态组件分析方法,其特征在于:所述动态组件分析方法包括:拉取代码步骤:用户通过SCA扫描工具配置项目的代码仓库地址,并触发扫描,SCA扫描工具根据用户配置的代码仓库地址,拉取对应项目的源代码到SCA扫描工具所在服务器上;解析项目模型对象步骤:SCA工具扫描项目源代码中所有文件,将所有模型构建对象文件都循环遍历并根据解析规则进行解析得到直接依赖组件信息;漏洞查询步骤:SCA扫描工具将直接依赖组件的列表信息发送给SCA知识库,由SCA知识库通过图关系数据库查询直接依赖组件的漏洞信息,以及直接依赖组件对应的间接依赖组件的漏洞信息,然后形成一个项目依赖组件的漏洞信息列表,并返回给SCA扫描工具;漏洞展示步骤:SCA扫描工具获取所有直接依赖和间接依赖组件的漏洞信息,并通过页面展示给用户。2.根据权利要求1所述的一种在无编译环境下对项目的动态组件分析方法,其特征在于:所述动态组件分析方法还包括:数据准备步骤和环境搭建步骤;所述数据准备步骤:获取采集开源组件的源码、漏洞信息和组件信息、组件的直接和间接依赖关系数据,并采用图关系数据库存储,将关系型数据库的历史数据导出到CSV文件,然后将CSV文件导入到图关系数据库中;所述环境搭建步骤:搭建SCA知识库和SCA扫描工具。3.根据权利要求1所述的一种在无编译环境下对项目的动态组件分析方法,其特征在于:所述解析项目模型对象步骤具体包括:SCA工具循环遍历源代码中的所有目录,找到所有的模型构建对象文件,然后逐一对模型构建对象文件进行解析;提取模型构建对象文件中所有的依赖组件说明项标签对里的内容,然后将每对依赖组件说明项标签里的开源项目所属组织、开源项目或模块名称、开源项目版本的内容进行封装,形成一个组件列表,列表里的值为开源项目所属组织的值、开源项目或模块名称的值、开源项目版本的值,这些组件列表的组件即为项目的直接依赖组件信息。4.根据权利要求1所述的一种在无编译环境下对项目的动态组件分析方法,其特征在于:所述图关系数据库包括组件漏洞的图关系,所述组件漏洞图关系根据图关系模型分为组件信息节点和漏洞信息节点,组件信息节点之间的存在依赖关系,且同一个组件信息根据版本信息的不同分为不同...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。