System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及信息安全,尤其涉及一种花指令去除方法及装置。
技术介绍
1、近年来随着科技的发展,移动设备使用率大大提高,不同移动操作系统应用程序的数量呈现指数级增长。目前,市面出现了一些应用程序,主要通过违规方式获取用户的个人信息,以进行出售,且这些应用程序为了避免被逆向分析,往往加强了很多防护。
2、在对上述应用程序进行安全分析环节,对静态代码的可读性要求非常高,通常需要查看二进制反编译的代码生成,但恶意应用程序为了避免被逆向分析,添加了花指令,使得逆向分析只能看到汇编代码,而无法静态分析代码的真正意图,甚至有些代码的执行情况只能在应用运行时才能获取,增加了安全分析的难度,使得在安全分析二进制时,安全分析人员需要耗费较多的时间与精力进行代码取证。
技术实现思路
1、本专利技术提供一种花指令去除方法及装置,用以解决现有技术中恶意应用添加花指令以致逆向分析无法直接静态分析代码意图的缺陷,增强了恶意软件安全分析的效率和准确性。
2、本专利技术提供一种花指令去除方法,包括:对待分析二进制程序进行反汇编,并识别反汇编得到的汇编代码中的前驱节点和后继节点,得到指令码块;判断反汇编是否出现堆栈错误提示,以及判断反汇编是否出现跳转失败记录,以确定是否存在花指令;基于出现堆栈错误提示,确定存在堆栈花指令,根据所述前驱节点和所述后继节点,遍历所述指令码块,判断每个函数的堆栈信息是否符合正常编译程序特征,并记录不符合所述正常编译程序特征的堆栈花指令;基于出现跳转失败记录,确定存
3、根据本专利技术提供的一种花指令去除方法,判断每个函数的堆栈信息是否符合正常编译程序特征,包括:根据每个函数的堆栈信息,确定开辟堆栈和回收堆栈;判断各函数的开辟堆栈和回收堆栈是否匹配,若匹配,则符合正常编译程序特征。
4、根据本专利技术提供的一种花指令去除方法,所述不符合所述正常编译程序特征的堆栈花指令包括不匹配的开辟堆栈和回收堆栈,所述根据记录的不符合所述正常编译程序特征的堆栈花指令,对对应函数进行修正,包括:根据所述不匹配的开辟堆栈和回收堆栈,保留函数栈头的开辟堆栈,以及保留函数栈尾的回收堆栈,将其余记录的开辟堆栈和/或回收堆栈清除,以修正对应函数,去除所述函数中的堆栈花指令。
5、根据本专利技术提供的一种花指令去除方法,根据所述前驱节点和所述后继节点,遍历所述指令码块,确定跳转花指令和非跳转指令,并根据所述跳转花指令和非跳转指令,得到跳转花指令的目标地址,包括:根据所述前驱节点和所述后继节点,遍历所述指令码块,确定跳转花指令和非跳转指令;根据跳转花指令的前驱节点以及在先跳转花指令的后继节点,得到所述跳转花指令的目标地址。
6、根据本专利技术提供的一种花指令去除方法,根据所述跳转花指令的目标地址修正跳转指向,包括:根据所述跳转花指令的目标地址,将所述跳转花指令转换为目标跳转指令,以修正跳转指向。
7、根据本专利技术提供的一种花指令去除方法,在根据记录的不符合所述正常编译程序特征的堆栈花指令,对对应函数进行修正;和/或,根据所述跳转花指令的目标地址修正跳转指向之前,还包括:执行所述指令码块,得到代码执行路径;根据所述代码执行路径,确定具有分叉指令且没有被执行到的代码指令块;
8、在根据记录的不符合所述正常编译程序特征的堆栈花指令,对对应函数进行修正;和/或,根据所述跳转花指令的目标地址修正跳转指向时,还包括:根据所述具有分叉指令且没有被执行到的代码指令块,对所述汇编代码进行相应删除。
9、根据本专利技术提供的一种花指令去除方法,所述对待分析二进制程序进行反汇编,并识别反汇编得到的汇编代码中的前驱节点和后继节点,得到指令码块,包括:对待分析二进制程序进行反汇编,得到汇编代码;将所述汇编代码转换为微码;识别所述微码中的前驱节点和后继节点,并存储为指令码块。
10、本专利技术还提供一种花指令去除装置,包括:反汇编模块,对待分析二进制程序进行反汇编,并识别反汇编得到的汇编代码中的前驱节点和后继节点,得到指令码块;花指令判断模块,判断反汇编是否出现堆栈错误提示,以及判断反汇编是否出现跳转失败记录,以确定是否存在花指令;堆栈判断模块,基于出现堆栈错误提示,确定存在堆栈花指令,根据所述前驱节点和所述后继节点,遍历所述指令码块,判断每个函数的堆栈信息是否符合正常编译程序特征,并记录不符合所述正常编译程序特征的堆栈花指令;地址确定模块,基于出现跳转失败记录,确定存在跳转花指令,根据所述前驱节点和所述后继节点,遍历所述指令码块,确定跳转花指令和非跳转指令,并根据所述跳转花指令和非跳转指令,得到所述跳转花指令的目标地址;花指令修正模块,根据记录的不符合所述正常编译程序特征的堆栈花指令,对对应函数进行修正;和/或,根据所述跳转花指令的目标地址修正跳转指向。
11、本专利技术还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述花指令去除方法的步骤。
12、本专利技术还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述花指令去除方法的步骤。
13、本专利技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述花指令去除方法的步骤。
14、本专利技术提供的花指令去除方法及装置,通过对二进制程序进行反汇编,以便于后续通过判断反汇编是否出现堆栈错误提示,以确定是否存在堆栈花指令,并在确定存在堆栈花指令的情况下,基于遍历指令码块,确定函数的堆栈信息是否符合正常编译程序特征,以便于记录不符合正常编译程序特征的堆栈花指令,便于后续对函数进行修正以去除堆栈花指令;以及通过判断是否出现跳转失败记录,以确定是否存在跳转花指令,并在存在跳转花指令的情况下,基于遍历指令码块,确定跳转花指令和非跳转指令,从而确定跳转花指令的目标地址,便于后续对跳转指向进行修正以去除跳转花指令,从而实现静态分析中的花指令去除,更为便捷的确定二进制代码的执行逻辑,加快安全分析恶意应用或代码检测的速率,方便检测人员分析其算法及其功能。
本文档来自技高网...【技术保护点】
1.一种花指令去除方法,其特征在于,包括:
2.根据权利要求1所述的花指令去除方法,其特征在于,判断每个函数的堆栈信息是否符合正常编译程序特征,包括:
3.根据权利要求2所述的花指令去除方法,其特征在于,所述不符合所述正常编译程序特征的堆栈花指令包括不匹配的开辟堆栈和回收堆栈,所述根据记录的不符合所述正常编译程序特征的堆栈花指令,对对应函数进行修正,包括:
4.根据权利要求1所述的花指令去除方法,其特征在于,根据所述前驱节点和所述后继节点,遍历所述指令码块,确定跳转花指令和非跳转指令,并根据所述跳转花指令和非跳转指令,得到跳转花指令的目标地址,包括:
5.根据权利要求4所述的花指令去除方法,其特征在于,根据所述跳转花指令的目标地址修正跳转指向,包括:
6.根据权利要求1所述的花指令去除方法,其特征在于,在根据记录的不符合所述正常编译程序特征的堆栈花指令,对对应函数进行修正;和/或,根据所述跳转花指令的目标地址修正跳转指向之前,还包括:
7.根据权利要求1所述的花指令去除方法,其特征在于,所述对待分析二进制程序
8.一种花指令去除装置,其特征在于,包括:
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述花指令去除方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述花指令去除方法的步骤。
...【技术特征摘要】
1.一种花指令去除方法,其特征在于,包括:
2.根据权利要求1所述的花指令去除方法,其特征在于,判断每个函数的堆栈信息是否符合正常编译程序特征,包括:
3.根据权利要求2所述的花指令去除方法,其特征在于,所述不符合所述正常编译程序特征的堆栈花指令包括不匹配的开辟堆栈和回收堆栈,所述根据记录的不符合所述正常编译程序特征的堆栈花指令,对对应函数进行修正,包括:
4.根据权利要求1所述的花指令去除方法,其特征在于,根据所述前驱节点和所述后继节点,遍历所述指令码块,确定跳转花指令和非跳转指令,并根据所述跳转花指令和非跳转指令,得到跳转花指令的目标地址,包括:
5.根据权利要求4所述的花指令去除方法,其特征在于,根据所述跳转花指令的目标地址修正跳转指向,包括:
6.根据权利要求1所述的花...
【专利技术属性】
技术研发人员:杜壮昌,张大健,夏立宁,姚寅峰,
申请(专利权)人:中金金融认证中心有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。