【技术实现步骤摘要】
跳转指令数据采集方法、装置、电子设备及存储介质
[0001]本专利技术涉及软件逆向工程
,尤其涉及一种跳转指令数据采集方法、装置、电子设备及存储介质。
技术介绍
[0002]软件逆向工程(Software Reverse Engineering)又称软件反向工程,是指从可运行的程序系统出发,运用解密、反汇编、系统分析、程序理解等多种计算机技术,对软件的结构、流程、算法、代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等。通常,人们把对软件进行反向分析的整个过程统称为软件逆向工程,把在这个过程中所采用的技术都统称为软件逆向工程技术。
[0003]现有的软件逆向工程技术,在获取反汇编跳转指令数据时存在诸多困难,无法较为方便地获取反汇编跳转指令。
技术实现思路
[0004]针对现有技术中的问题,本专利技术实施例提供一种跳转指令数据采集方法、装置、电子设备及存储介质。
[0005]具体地,本专利技术实施例提供了以下技术方案:
[0006]第一方面,本专利技术实施例提供了一种跳转指令数据采集方法,包括:
[0007]获取操作系统的内核模块文件;
[0008]基于交互式反汇编器IDA对所述内核模块文件进行反汇编处理,得到反汇编处理结果;
[0009]基于所述IDA自带的IDApython工具提供的函数接口对所述反汇编处理结果进行处理,确定与所述内核模块文件对应的跳转指令数据集合;其中,所述跳转指令数据集合包括 ...
【技术保护点】
【技术特征摘要】
1.一种跳转指令数据采集方法,其特征在于,包括:获取操作系统的内核模块文件;基于交互式反汇编器IDA对所述内核模块文件进行反汇编处理,得到反汇编处理结果;基于所述IDA自带的IDApython工具提供的函数接口对所述反汇编处理结果进行处理,确定与所述内核模块文件对应的跳转指令数据集合;其中,所述跳转指令数据集合包括指令执行顺序流记录、模块内跳转指令多层次记录以及模块间指令跳转记录中的一种或多种。2.根据权利要求1所述的跳转指令数据采集方法,其特征在于,基于交互式反汇编器IDA对所述内核模块文件进行反汇编处理,得到反汇编处理结果,包括:获取与所述内核模块文件对应的反汇编修复文件;基于IDA以及所述反汇编修复文件,对所述内核模块文件进行反汇编处理,得到反汇编处理结果。3.根据权利要求2所述的跳转指令数据采集方法,其特征在于,获取与所述内核模块文件对应的反汇编修复文件,包括:若所述操作系统为Linux操作系统,则获取与所述内核模块文件对应的反汇编修复文件为system.map文件;若所述操作系统为Windows操作系统,则获取与所述内核模块文件对应的反汇编修复文件为PDB符号文件。4.根据权利要求3所述的跳转指令数据采集方法,其特征在于,若所述操作系统为Linux操作系统且所述反汇编修复文件为system.map文件,则所述基于IDA以及所述反汇编修复文件,对所述内核模块文件进行反汇编处理,得到反汇编处理结果,包括:地址确定步骤,基于system.map文件,确定内核函数的起始地址;第一转换步骤,根据内核函数的起始地址在idat.exe中使用idc.MakeFunction函数将所述内核模块文件中的代码转换为函数;第二转换步骤,确定通过转换生成的函数之间的间隔,若函数之间的间隔大于预设值,则使用idc.MakeCode将对应的函数强制转换为代码,并再次使用idc.MakeFunction函数将转换后的代码转换为函数;重复所述第一转换步骤和所述第二转换步骤,直至生成的函数的总数量不再增加。5.根据权利要求1所述的跳转指令数据采集方法,其特征在于,当所述跳转指令数据集合中包含有指令执行顺序流记录时,基于所述IDA自带的IDApython工具提供的函数接口对所述反汇编处理结果进行处理,确定与所述内核模块文件对应的跳转指令数据集合,包括:基于所述IDA自带的IDApython工具提供的函数接口对所述反汇编处理结果进行处理,确定所述反汇编处理结果中各函数中包含的跳转指令的起始偏移地址以及所述跳转指令下一条的可能指令的起始偏移地址;根据所述反汇编处理结果中各函数中包含的跳转指令的起始偏移地址以及所述跳转指令下一条的可能指令的起始偏移地址,确定所述内核模块文件的指令执行顺序流记录。6.根据权利要求5所述的跳转指令数据采集方法,其特征在于,所述指令执行顺序流记录采用有向无环图DAG进行记录。7.根据权利要求1所述的跳转指令数据采集方法,其特征在于,当所述跳转指令数据集
合中包含有模块内跳转指令多层次记录时,基于所述IDA自带的IDApython工具提供的函数接口对所述反汇编处理结果进行处理,确定与所述内核模块文件对应的跳转指令数据集合,包括:根据所述内核模块文件生成导出表;其中,所述导出表中记录有所述内核模块文件的所有函数;基于所述IDA自带的IDApython工具提供的函数接口对所述反汇编处理结果进行处理,确定所述反汇编处理结果中各函数中包含的call跳转指令数据采集指令的目的地址;其中,所述call指令的目的地址=当前call指令地址+操作数数值+call指令长度;判断所述call指令的目的地址是否在所述导出表中,若否,则进...
【专利技术属性】
技术研发人员:杨晓东,李奇峰,罗世谦,曹志龙,
申请(专利权)人:奇安信科技集团股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。