文件修复方法及装置与流程

文档序号:12600557阅读:来源:国知局

技术特征:

1.一种文件修复方法,其特征在于,包括:

获取待检测的目标文件;

在确定所述待检测的目标文件是具有预定格式的可执行文件的情况下,从所述待检测的目标文件中提取延迟符号表,其中,所述延迟符号表中包含函数符号名以及索引号;

依据所述延迟符号表中的索引号,获取与所述索引号对应的原始符号名;

比对所述函数符号名和所述原始符号名是否相同;

在所述函数符号名和所述原始符号名不相同的情况下,修正所述函数符号名,得到修复后的所述待检测的目标文件。

2.根据权利要求1所述的方法,其特征在于,所述比对所述函数符号名和所述原始符号名是否相同;在所述函数符号名和所述原始符号名不相同的情况下,修正所述函数符号名,包括:

重复执行以下操作,直到遍历完所有函数符号名:将第i个函数符号名与第i个原始符号名进行比较;若所述第i个函数符号名与所述第i个原始符号名不相同,则将所述第i个函数符号名修改为所述第i个原始符号名,其中,i为自然数。

3.根据权利要求1所述的方法,其特征在于,所述确定所述待检测的目标文件是所述具有预定格式的可执行文件,包括:

读取所述待检测的目标文件的前n个字节中的字符,n为大于0的整数;

判断所述字符是否为所述具有预定格式的可执行文件对应的魔数,其中,所述魔数用于指示文件类型;

若所述字符为所述魔数,则确定所述待检测的目标文件是所述具有预定格式的可执行文件。

4.根据权利要求1所述的方法,其特征在于,所述从所述待检测的目标文件中提取延迟符号表,包括:

对所述待检测的目标文件进行解析,确定所述延迟符号表在所述待检测的目 标文件中的偏移量;

基于所述偏移量提取所述延迟符号表。

5.根据权利要求4所述的方法,其特征在于,所述待检测的目标文件包括加载命令区、数据区以及具有第一长度的文件头;

其中,所述对所述待检测的目标文件进行解析,确定所述延迟符号表在所述待检测的目标文件中的偏移量,包括:

依据所述具有第一长度的文件头遍历所述加载命令区,在所述数据区中确定所述延迟符号表的偏移量。

6.根据权利要求5所述的方法,其特征在于,所述依据所述具有第一长度的文件头遍历所述加载命令区,在所述数据区中确定所述延迟符号表的偏移量,包括:

将距离所述待检测的目标文件的起始位置所述第一长度处确定为第一个加载命令区的起始位置;

根据所述具有第一长度的文件头中的ncmds字段,确定所述加载命令区的个数;

根据第一个加载命令区的起始位置以及加载命令区的个数,确定所述数据区的起始位置;

从所述数据区的头结构中获取所述延迟符号表的偏移量以及所述延迟符号表的字节数;

在距离所述数据区的起始位置的所述偏移量处,确定所述延迟符号表的起始位置;

其中,所述基于所述偏移量提取所述延迟符号表,包括:

根据所述延迟符号表的起始位置以及所述延迟符号表的字节数,提取所述延迟符号表。

7.根据权利要求2所述的方法,其特征在于,还包括:

若所述第i个函数符号名与所述第i个原始符号名不相同,则确定所述待检测的目标文件被混淆;

输出提示消息,所述提示消息用于指示所述待检测的目标文件被混淆。

8.根据权利要求1至7中任一项所述的方法,其特征在于,所述获取待检测的目标 文件包括:

接收请求装置发送应用程序包;

对所述应用程序包进行解压缩,得到所述待检测的目标文件;

其中,在所述待检测的目标文件是所述具有预定格式的可执行文件的情况下,所述待检测的目标文件为可执行文件,所述请求装置为基于iOS系统的设备或基于Mac OS系统的设备,所述具有预定格式的可执行文件为MACH-O文件,所述魔数为0xFEEDFACE或者0xFEEDFACF。

9.一种文件修复装置,其特征在于,包括:

第一获取单元,用于获取待检测的目标文件;

提取单元,用于在确定所述待检测的目标文件是具有预定格式的可执行文件的情况下,从所述待检测的目标文件中提取延迟符号表,其中,所述延迟符号表中包含函数符号名以及索引号;

第二获取单元,用于依据所述延迟符号表中的索引号,获取与所述索引号对应的原始符号名;

处理单元,用于比对所述函数符号名和所述原始符号名是否相同,以及在所述函数符号名和所述原始符号名不相同的情况下,修正所述函数符号名,得到修复后的所述待检测的目标文件。

10.根据权利要求9所述的装置,其特征在于,所述处理单元用于执行以下步骤比对所述函数符号名和所述原始符号名是否相同,以及在所述函数符号名和所述原始符号名不相同的情况下,修正所述函数符号名:

重复执行以下操作,直到遍历完所有函数符号名:将第i个函数符号名与第i个原始符号名进行比较;若所述第i个函数符号名与所述第i个原始符号名不相同,则将所述第i个函数符号名修改为所述第i个原始符号名,其中,i为自然数。

11.根据权利要求9所述的装置,其特征在于,还包括确定单元,其中,所述确定单元用于执行以下步骤确定所述待检测的目标文件是所述具有预定格式的可执行文件:

读取所述待检测的目标文件的前n个字节中的字符,n为大于0的整数;

判断所述字符是否为所述具有预定格式的可执行文件对应的魔数,其中,所 述魔数用于指示文件类型;

若所述字符为所述魔数,则确定所述待检测的目标文件是所述具有预定格式的可执行文件。

12.根据权利要求9所述的装置,其特征在于,所述提取单元包括:

解析模块,用于对所述待检测的目标文件进行解析,确定所述延迟符号表在所述待检测的目标文件中的偏移量;

提取模块,用于基于所述偏移量提取所述延迟符号表。

13.根据权利要求12所述的装置,其特征在于,所述待检测的目标文件包括加载命令区、数据区以及具有第一长度的文件头;

其中,所述解析模块用于执行以下步骤对所述待检测的目标文件进行解析,确定所述延迟符号表在所述待检测的目标文件中的偏移量:

依据所述具有第一长度的文件头遍历所述加载命令区,在所述数据区中确定所述延迟符号表的偏移量。

14.根据权利要求13所述的装置,其特征在于,所述解析模块用于执行以下步骤依据所述具有第一长度的文件头遍历所述加载命令区,在所述数据区中确定所述延迟符号表的偏移量:

将距离所述待检测的目标文件的起始位置所述第一长度处确定为第一个加载命令区的起始位置;

根据所述具有第一长度的文件头中的ncmds字段,确定所述加载命令区的个数;

根据第一个加载命令区的起始位置以及加载命令区的个数,确定所述数据区的起始位置;

从所述数据区的头结构中获取所述延迟符号表的偏移量以及所述延迟符号表的字节数;

在距离所述数据区的起始位置的所述偏移量处,确定所述延迟符号表的起始位置;

其中,所述提取模块用于执行以下步骤基于所述偏移量提取所述延迟符号表:

根据所述延迟符号表的起始位置以及所述延迟符号表的字节数,提取所述延 迟符号表。

15.根据权利要求10所述的装置,其特征在于,所述处理单元,还用于若所述第i个函数符号名与所述第i个原始符号名不相同,则确定所述待检测的目标文件被混淆;

所述装置还包括:

输出单元,用于输出提示消息,所述提示消息用于指示所述待检测的目标文件被混淆。

16.根据权利要求9至15中任一项所述的装置,其特征在于,所述第一获取单元包括:

接收模块,用于接收请求装置发送的应用程序包;

解压缩模块,用于对所述应用程序包进行解压缩,得到所述待检测的目标文件;

其中,在所述待检测的目标文件是所述具有预定格式的可执行文件的情况下,所述待检测的目标文件为可执行文件,所述请求装置为基于iOS系统的设备或基于Mac OS系统的设备,所述具有预定格式的可执行文件为MACH-O文件,所述魔数为0xFEEDFACE或者0xFEEDFACF。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1