抵御反汇编的花指令混淆信息安全控制方法、系统及装置与流程

文档序号:23261673发布日期:2020-12-11 18:50阅读:235来源:国知局
抵御反汇编的花指令混淆信息安全控制方法、系统及装置与流程

本发明涉及信息安全、软件保护、软件领域,尤其涉及一种抵御反汇编的花指令混淆信息安全控制方法及系统。



背景技术:

随着嵌入式技术的发展,arm处理器因其体积小、功耗低和性能高等特点很快占领了移动通信市场,如安卓智能手机和平板等移动设备,大都采用arm处理器。于此同时,针对arm处理器的程序攻击日益突出,如arm指令反汇编、控制流分析和动态调试等。因此,如何保护基于arm处理器的程序安全,成为软件保护研究的热点。目前,针对底层机器码到汇编指令的反汇编恶意分析主要进行指令混淆保护,常用混淆技术有等价指令替换,指令乱序和指令重叠等。但是这些指令混淆算法是针对变长指令的x86架构,并不适用于定长指令的arm架构。此外,目前针对跳转花指令混淆的大部分研究仍停留在jmp和bf直接跳转阶段,其采用直接寻址方式,且跳转地址固定,容易被识别,无法对抗递归扫描反汇编。

为了解决以上技术缺陷,本发明在保持程序语义不变的情况下,充分利用跳转指令的相对寻址,不但实现判断、循环和子程序调用等控制流,还可以提供程序控制流变换和处理器状态切换,对提升arm架构程序安全性有很大作用。因此,在对arm指令集中的跳转指令进行分析的同时,结合多核arm体系结构特征,提出基于寄存器间接寻址跳转的arm汇编花指令混淆算法,包括等价变形计算花指令和不可执行的垃圾花指令等混淆构造方法,使得应用程序中重要算法指令的安全性在arm架构上有显著的提升。



技术实现要素:

1、本发明的目的

本发明所要解决的技术问题是在arm架构上抵御恶意反汇编和逆向攻击。

本发明的目的是抵御arm反汇编。

2、本发明所采用的技术方案

本发明公开了一种抵御反汇编的花指令混淆信息安全控制方法,包括如下步骤:

首先,在arm汇编代码中插入寄存器间接寻址的跳转花指令序列,构造分支信息并通过间接寻址隐藏分支信息;

其次,设置计算花指令序列对寄存器间接寻址计算复杂化进一步隐藏分支信息;

最后,利用元数据添加不可执行的垃圾花指令序列,抵御线性扫描反汇编的延迟重同步机制。

优选的,按照如下步骤进行:

步骤1、通过跳转花指令序列构造分支信息;

步骤2、利用寄存器间接寻址隐藏分支信息;

步骤3、使寄存器间接寻址复杂化;

所述的分支路径移动目标位是寄存器的间接选址地址,其赋值通过计算花指令序列计算产生;通过随机插入不可执行的垃圾花指令序列构建另一条分支路径。

优选的,对不可执行的垃圾花指令的地址入口构造反汇编的花指令序列,从而将反汇编的花指令序列与其后的代码结合在一起。

优选的,所述的步骤1中分支指令作为保护的目标指令具体为:

步骤101、根据保护的目标指令,选定一个分割位置;

步骤102、设定分割位置后的指令序列为待移动指令序列即分支指令序列;

优选的,所述的步骤2中利用寄存器间接寻址隐藏分支信息具体为:选定一处可用的寄存器作为间接跳转寻址的寄存器。

优选的,所述的步骤3中使寄存器间接寻址复杂化,具体为:

步骤301、通过adr指令给寄存器赋值;

步骤302、设定adr指令之后的位置为当前位置。

步骤303、预留计算花指令序列和垃圾花指令序列位置;

步骤304、标记新的跳转位置,即新的跳转位置为当前位置和寄存器、跳转花指令序列、垃圾花指令序列的长度相加;跳转花指令序列、垃圾花指令序列的长度为动态值,即跳转花指令序列相对位置不固定。

步骤305、移动指令序列至新的跳转位置;

步骤306、选取一个或多个当前可用的寄存器,基于间接化构造计算花指令序列,满足寄存器的值为新的跳转位置,并将计算花指令序列插入到寄存器之后;

步骤307、在计算花指令序列之后添加寄存器寻址间接跳转指令。

步骤308、根据元数据随机构造不可执行的垃圾花指令序列,并在跳转指令之后添加垃圾花指令序列。

本发明提出了一种抵御反汇编的花指令混淆系统,存储有权利要求1-7任一所述的程序,被处理器执行时实现上述方法。

本发明提出了一种抵御反汇编的花指令混淆装置,包括:

存储器;

一个或多个处理器,以及

一个或多个程序,存储在存储器中,并被配置成由所述一个或多个处理器执行,所述程序被所述处理器执行时实现所述的权利要求1-7任一所述的花指令混淆信息安全控制方法。

3、本发明所采用的有益效果

该发明构建的用于隐藏待保护指令的花指令除了可以迷惑反汇编器的递归扫描之外,通过结合跳转花指令和垃圾花指令还可以抵御反汇编器的线性扫描和攻击者的动态跟踪调试。

附图说明

图1为本发明的指令序列和现有技术对比图。

图2为本发明的流程图。

图3为本发明的实施例的流程图。

图4为本发明更进一步的实施例的流程图。

图5为本发明的设定分支流程图。

图6为本发明的寄存器的间接选址及添加垃圾花指令流程图。

具体实施方式

下面结合本发明实例中的附图,对本发明实例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

下面将结合附图对本发明实例作进一步地详细描述。

实施例1

如图1-2所示,本发明提出了一种抵御反汇编的花指令混淆信息安全控制方法,具体为:

首先,在arm汇编代码中插入寄存器间接寻址的跳转花指令序列,构造分支信息并隐藏;

其次,在跳转花指令序列后面构建垃圾花指令序列;

最后,通过跳转花指令序列对间接寻址寄存器进行混淆,具体为:

预留计算花指令序列、跳转花指令序列和垃圾花指令序列位置;

标记新的跳转位置由设定的位置、间接寄存器位置、花指令序列和垃圾花指令序列位置综合得到,花指令序列和垃圾花指令序列为动态值,跳转指令序列相对位置也为动态值。

如图3,步骤1、通过跳转花指令构造分支信息;

步骤2、通过移动指令序列构建一条分支路径;

由于rx的值是通过计算花指令序列m计算产生,反汇编器在进行反汇编时无法确定寄存器rx的值,因此无法识别分支路径s的入口信息,引起递归扫描反汇编出错。

步骤3、分支路径移动目标位是寄存器的间接选址,其赋值通过花指令序列计算产生;通过随机插入不可执行的垃圾花指令序列构建另一条分支路径。

由于不可执行的垃圾花指令n处的地址是合法的目的地址,而且添加的bxrx是合法的跳转指令,所以反汇编器对不可执行的垃圾花指令的地址入口构造反汇编的花指令序列,从而将反汇编的花指令序列与其后的代码结合在一起,使线性扫描反汇编结果出错。

实施例2

如图4,步骤1、通过bx跳转指令(arm指令系统中的跳转花指令)构造分支信息,使程序的控制流复杂化;

步骤2、利用rx寄存器间接寻址隐藏分支信息,并导致在递归扫描反汇编中遗漏可达的分支流程或者误解析不可达的分支流程;

步骤3、利用计算花指令序列m对寄存器进行间接计算,使寄存器间接寻址复杂化,进一步隐藏分支路径信息,花指令有可能利用各种指令:jmp,call,ret的一些堆栈技巧,位置运算,等等;通过在程序构造的伪分支中,利用元数据添加不可执行的垃圾花指令n,来抵御线性扫描反汇编的延迟重同步机制,达到迷惑反汇编器的目的。

步骤1中分支指令作为保护的目标指令具体为:

如图5,步骤101、根据保护的目标指令,选定一个分割位置p;

步骤102、设定分割位置后的指令序列s为待移动指令序列即分支指令序列;

步骤2中利用rx寄存器间接寻址隐藏分支信息具体为:选定p处可用的寄存器rx作为间接跳转寻址的寄存器。

如图6,步骤3中使寄存器间接寻址复杂化,具体为:

步骤301、通过adr指令给rx寄存器赋值;

步骤302、设定adr指令之后的位置为currs。

步骤303、通过在程序构造的伪分支中,利用元数据添加不可执行的垃圾花指令n,来抵御线性扫描反汇编的延迟重同步机制,达到迷惑反汇编器的目的。

步骤304、预留计算花指令序列m和垃圾花指令序列n位置;

步骤305、标记新的跳转位置offsets,即offsets=currs+len(bx)+len(m)+len(n);由于len(m)和len(n)是一个动态值,因此跳转指令序列相对位置不固定;

步骤306、移动指令序列s至新的位置offsets;

步骤307、选取一个或多个当前可用的寄存器rx,基于间接化构造跳转花指令序列m,满足rx=offsets,并将计算花指令序列m插入到p点之后。

步骤308、在计算花指令序列m之后添加寄存器寻址间接跳转指令,即bxrx。

步骤309、根据元数据随机构造不可执行垃圾花指令序列n,并在跳转指令之后添加垃圾花指令序列n。

在以上算法中,分支使用bx指令来进行构造。其中,通过移动指令序列s构建一条分支路径。由于s处的地址是寄存器rx间接选址。而rx的值是通过计算花指令序列m计算产生,反汇编器在进行反汇编时无法确定rx的值,因此无法识别分支路径s的入口信息,引起递归扫描反汇编出错。

此外,通过随机插入不可执行垃圾花指令序列n构建另一条分支路径。由于不可执行垃圾花指令n处的地址是合法的目的地址,而且添加的bxrx是合法的跳转指令,所以反汇编器一定要反汇编n处的花指令,从而将花指令n与其后的代码s结合在一起,使线性扫描反汇编结果出错。

首先在arm汇编代码中插入寄存器间接寻址的跳转花指令序列,构造分支信息并隐藏,并在跳转指令后面构建垃圾花指令,然后通过跳转花指令序列对间接寻址寄存器进行混淆。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

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