【技术实现步骤摘要】
基于循环分析和二进制相似代码分析的密码函数识别方法
[0001]本专利技术涉及的是一种信息安全领域的技术,具体是一种基于循环分析和二进制相似代码分析的密码函数识别方法。
技术介绍
[0002]系统中密码算法的具体实现方法,可能极大影响系统安全性,恶意代码甚至用其掩盖恶意行为。因此密码算法的识别与分析在信息安全领域中不可或缺。但软件固件以及恶意代码大都不开源,进而极大增加人为分析工作量,因此在二进制代码中自动化识别密码算法有着广泛的需求。
[0003]在大部分密码算法当中,循环结构往往包含算法核心语义。但由于代码运行架构、编译选项以及循环优化等因素的广泛存在,相同源码的循环结构在二进制代码层面也会出现巨大差异,因此这类问题成了密码算法识别的关键挑战。
技术实现思路
[0004]本专利技术针对现有技术在不同编译器、不同编译器版本以及不同优化选项下二进制文件循环结构差异性问题,提出一种基于循环分析和二进制相似代码分析的密码函数识别方法,在保证不同编译器版本和优化选项下密码算法识别准确性的同时,兼顾分析的高效性、可扩展性。提高标准密码算法识别在这类场景下的准确性的同时,减少分析过程的时间开销,并有着跨编译配置和跨不同架构的优势。
[0005]本专利技术是通过以下技术方案实现的:
[0006]本专利技术涉及一种基于循环分析和二进制相似代码分析的密码函数识别方法,对待分析的二进制函数代码进行模拟执行,提取其在模拟执行过程中的动态执行特征序列,通过计算其与特征库中密码函数特征的雅卡尔系数(J ...
【技术保护点】
【技术特征摘要】
1.一种基于循环分析和二进制相似代码分析的密码函数识别方法,其特征在于,对待分析的二进制函数代码进行模拟执行,提取其在模拟执行过程中的动态执行特征序列,通过计算其与特征库中密码函数特征的雅卡尔系数作为相似性分数,将与待分析函数相似性分数最高的特征库中密码函数作为识别结果;所述的函数代码,优先经过预处理,即将二进制代码文件Binary_File转换为反汇编文件ASM_File后将得到的反汇编文件ASM_File按照函数和代码块进行识别划分与提取,并提取ASM_File中的二进制代码基本信息;再对二进制函数进行静态分析,识别函数中存在的循环结构信息,并进一步提取所有函数的参数信息以及返回值信息。2.根据权利要求1所述的基于循环分析和二进制相似代码分析的密码函数识别方法,其特征是,所述的模拟执行是指:结合函数代码的参数信息、返回值信息,将划分好的函数块翻译到中间语言环境下进行插桩,并进行解释执行或翻译至分析工具所在机器架构环境下执行,进而提取得到函数块的动态执行特征序列。3.根据权利要求1所述的基于循环分析和二进制相似代码分析的密码函数识别方法,其特征是,所述的雅卡尔系数其中:|S1|和|S2|为特征序列S1和S2的序列长度;|S1∩S2|为两个特征序列的最长公共子序列(Longest Common Subsequence,LCS)的长度。4.根据权利要求1所述的基于循环分析和二进制相似代码分析的密码函数识别方法,其特征是,所述的二进制代码基本信息提取,具体包括:S21、根据ASM_File文件中的函数开始标识和结束标识,或结合各类汇编分析软件识别提取函数块信息;S22、根据函数块中分支指令信息,或结合各类汇编分析软件识别提取函数内的基本快信息;S23、提取并计算得到数据段(.data)、未初始化数据段(.bss)、只读数据段(.rodata)、库函数链接表段(.plt)以及代码段(.text)的起始地址偏移值和结束地址偏移值;S24、获取ASM_File整个文件的起始虚拟地址和结束虚拟地址;S25、获取所有基本块与其子基本块地址的对应关系。5.根据权利要求1所述的基于循环分析和二进制相似代码分析的密码函数识别方法,其特征是,所述的循环结构信息,具体通过以下方式得到:S31、识别所有基本块若处在循环结构中时可能的出口地址,若基本块存在超过一个子基本块,则其所有子基本块地址即为其出口地址;若基本块只有一个子基本块,则将其子基本块的出口地址作为该基本块的出口地址;S32、使用深度优先遍历算法,检查函数中存在的回边,以此识别所有函数中存在的循环结构;S33、在识别到的循环结构中,查找比较指令所在基本块;S34、在比较指令所在基本块中识别循环常数,记录常数次数循环结构中比较指令所在基本块与循环常数的映射信息。6.根据权利要求1所述的基于循环分析和二进制相似代码分析的密码函数识别方法,其特征是,所述的所有函数的参数信息以及返回值信息,具体通过以下方式得到:
S41、根据代码所属架构的调用约定,判断是否有参数寄存器在被赋值之前被使用,若有则被认为是传递了参数;S42、根据代码所属架构的调用约定,判断是否有当前栈帧以外的栈地址(非返回地址、栈保护参数和相关寄存器上下文信息)被读取使用,若有则被认为是传递了参数;S43、根据代码所属架构的调用约定,检查当前分析函数的被调用点之后的所有执行路径中,是否有在返回值寄存器被赋值前直接使用,若有则认为是当前分析函数存在返回值,否则认为返回值为void。7.根据权利要求1所述的基于循环分析和二进制相似代码分析的密码函数...
【专利技术属性】
技术研发人员:何弈拓,胡易坤,陆海宁,谷大武,
申请(专利权)人:上海交通大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。