镜像软件的生成方法、装置及相应终端与流程

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

本发明涉及移动互联网技术领域,具体而言,本发明涉及一种镜像软件的生成方法、装置及相应终端。



背景技术:

近年来,apt(advancedpersistentthreat,高级持续性威胁)成为了信息安全圈人尽皆知的时髦名词,它已经成为了各级各类网络及终端设备所面临的主要安全威胁。它使得安全威胁从随机攻击变成有目的、有组织、有预谋的群体式攻击。

很难给apt一个准确的定义,美国国家标准与技术研究所给出的定义是:精通复杂技术的攻击者利用多种攻击向量(如网络,物理和欺诈),借助丰富资源创建机会实现自己目的。这些目的通常包括对目标企业的信息技术架构进行篡改从而盗取数据,执行或阻止一项任务、程序、又或是潜入对方架构中伺机进行偷取数据。

apt的核心是恶意攻击者通过细致的观察,精心的布局,使用各种各样的手段,悄然入侵,长期潜伏,搜索寻找机密数据、高价值数据、偷走数据而不触发任何警戒,让用户丢失了数据还毫无察觉。这使得传统基于规则、基于知识的防火墙、入侵检测和预防系统,很难被触发,被动的防御方法已经无法及时有效地发现apt的入侵威胁。

近年来的apt攻击的发展和曝光告诉我们,攻击者在持续不断地发现问题,持续不断地研发出攻击武器,也在持续不断地盯紧目标。确定性、相似性、静止性是现有软件系统及架构信息系统致命安全缺陷,这些缺陷导致当前的软件信息系统始终处于被动挨打的局面,招不尽的漏洞,打不完的补丁,一味追求防卫系统的强度。但是,事实一次又一次证明了,那么先进的防护技术,那么严密的防护软件和系统,也经不起攻击者长期的观察、分析和反复攻击,而且一旦被攻击者得手,就会引起大面积的攻击蔓延。

逆向工程是apt攻击的一种常用的基础手段,大部分的攻击都要以逆向工程为基础。逆向工程简单的讲就是根据二进制程序和运行实体,推导出程序的运行逻辑,或者是根据二进制程序的运性特点和规律通过篡改原始运行逻辑而达到攻击的目的。往往市场上发布的软件系统都是不公布源代码的,攻击者只能通过逆向工程加以攻击。逆向工程是一项复杂的技术,往往面对的都是编译链接,字节流,机器指令等底层技术。

在实现本发明的过程中,发明人意识到,亟需一种能够防御在apt攻击中使用逆向工程进行攻击的方法,以阻止或预防现有的apt攻击效果。



技术实现要素:

为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:

本发明提供一种镜像软件的生成方法,包括如下步骤:

将构成目标软件的各个源码文件分别编译成相应的二进制文件;

依据预设链接规则确定多个二进制文件的多种链接顺序;

根据任一链接顺序对多个二进制文件进行链接,生成所述目标软件的可执行文件。

可选地,所述预设链接规则包括依据多个二进制文件的排列组合方式进行链接。

进一步地,所述将构成目标软件的各个源码文件分别编译成相应的二进制文件的步骤,包括:

针对任一源码文件,确定该源码文件相关联的多个编译方式的编译参数;

根据任一编译方式的编译参数编译该源码文件,得到与该任一编译方式对应的二进制文件。

实际应用中,所述针对任一源码文件,确定该源码文件的多种编译方式分别对应的编译参数的步骤,包括:

确定该源码文件的优化级别;

根据所述优化级别获取对应的编译方式的编译参数。

进一步地,所述根据任一链接顺序对多个二进制文件进行链接,生成所述目标软件的可执行文件的步骤,包括:

在依据任一链接顺序排列的多个二进制文件的任意位置处插入至少一个冗余文件,链接成所述目标软件的可执行文件。

本发明还提供一种可执行文件的更新方法,包括:

当满足预定更新条件时,基于上述镜像软件的生成方法中的任一项方法生成的目标软件的任一可执行文件,更新所述目标软件的原始可执行文件。

本发明还提供一种镜像软件的生成装置,包括:

编译模块,用于将构成目标软件的各个源码文件分别编译成相应的二进制文件;

确定模块,用于依据预设链接规则确定多个二进制文件的多种链接顺序;

生成模块,用于根据任一链接顺序对多个二进制文件进行链接,生成所述目标软件的可执行文件。

进一步地,所述编译模块具体用于针对任一源码文件,确定该源码文件相关联的多个编译方式的编译参数;以及,

所述编译模块具体用于根据任一编译方式的编译参数编译该源码文件,得到与该任一编译方式对应的二进制文件。

进一步地,所述生成模块具体用于在依据任一链接顺序排列的多个二进制文件的任意位置处插入至少一个冗余文件,链接成所述目标软件的可执行文件。

本发明还提供一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的方法。

本发明提供的镜像软件的生成方法、装置及相应终端,通过将构成目标软件的各个源码文件分别编译成相应的二进制文件;依据预设链接规则确定多个二进制文件的多种链接顺序;根据任一链接顺序对多个二进制文件进行链接,生成目标软件的可执行文件;以此生成目标软件功能一致的多种版本的二进制镜像可执行文件,令apt攻击者难以寻找攻击规律而放弃,且即使apt攻击者获得某一二进制可执行文件并采用逆向工程进行攻破成功,针对同一目标软件的其他二进制可执行文件却不能进行参考,避免相同的攻击方法蔓延,有效增加逆向apt攻击难度,提高各级各类网络及终端设备的安全性。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明一个实施例提供的镜像软件的生成方法的流程示意图;

图2为本发明另一实施例提供的镜像软件的生成方法的流程示意图;

图3为本发明一个实施例提供的镜像软件的生成装置的框架示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

下面结合附图具体介绍本发明实施例的技术方案。

发明人发现,无论多么先进、严密的防护技术,也经不起apt攻击者长期的观察、分析和反复攻击,一旦被攻击者得手,就会引起大面积的攻击蔓延,为了应对apt的威胁,需要我们展开一种新的思维。

考虑到多数软件系统具有相似性架构,甚至是完全相同的软件版本。为了结束apt攻击中这种被动挨打,不对等的游戏规则局面,软件安全体系应该有新的变化,应该从确定性的、相似的、静止的现有体系结构及架构转变成一种变化的、令攻击者难以长期观察分析和研究的动态的系统。在传统防护方法的基础上,显而易见的攻击已经无法奏效,再加上动态变化的软件系统架构,可以大大提高软件信息系统的安全。

而大部分的apt攻击都要以逆向工程为基础,如果能杜绝逆向工程在apt攻击中的使用或加大逆向工程在apt攻击中的使用难度,则可以很显著地阻止或预防现有的apt攻击效果。

基于此,本发明实施例提供了一种镜像软件的生成方法,如图1所示,包括如下步骤:

步骤s110:将构成目标软件的各个源码文件分别编译成相应的二进制文件。

为生成一个目标软件,开发者采用汇编语言和高级语言按照一定的程序设计语言规范书写文本文件,其中包含一系列人类可读的计算机语言指令,只有经过编译才能产生可以被cpu直接识别的二进制代码。本发明实施例中,在编译时,分别对每个源码文件进行编译,得到他们的二进制文件,以便执行步骤s120。

作为示例地,目标软件由a.c、b.c、c.c、d.c四个源码文件构成,分别编译成二进制文件a.o、b.o、c.o、d.o:

#gcc–ca.c–oa.o

#gcc–cb.c–ob.o

#gcc–cc.c–oc.o

#gcc–cd.c–od.o

需要说明的是,本发明实施例适用于各种编程编译语言、模型和程序,包括但不限于java、basic、c、c++、c#、objective-c、.net、visualbasic、php等。

步骤s120:依据预设链接规则确定多个二进制文件的多种链接顺序。

传统的编译方法采用固定的次序链接二进制文件,例如,由上述四个二进制文件a.o、b.o、c.o、d.o依次连接而成一个可执行文件进行发布,所有用户使用的可执行文件无任何差别,一旦有一个用户的可执行文件被apt攻击者攻克,该攻克手段可以轻易复制,用于其他用户的可执行文件上,引起大面积的攻击蔓延。

本发明实施例中,预设链接规则定义了目标软件中的所有二进制文件的各种链接顺序,可以理解,具有多少种链接顺序就可以生成多少种可执行文件。因为都来自相同的源代码,每种可执行文件的运行逻辑和功能都相同,但是由于链接顺序不同,使得生成的完整二进制文件不同,内部的跳转地址、代码尺寸及指令执行顺序会有所差别。

可选地,预设链接规则包括依据多个二进制文件的排列组合方式进行链接。

接上例,预设链接规则可以规定:将目标软件的四个二进制文件a.o、b.o、c.o、d.o进行排列组合,则至少可以生成24种链接顺序,即对应24种可执行文件。

实际应用中,本领域技术人员可以根据实际情况对预设链接规则进行定义,在此不做限制。

本发明实施例中,为了方便管理,每种链接顺序对应有各自的标识,也就是每种可执行文件对应有各自的标识,便于后期管理时进行区分以采取相应的管理措施。

步骤s130:根据任一链接顺序对多个二进制文件进行链接,生成目标软件的可执行文件。

由于链接顺序的差异,会导致二进制文件的链接步骤有所不同。

本发明实施例中,对所有链接顺序排列的二进制文件分别进行连接。接上例,将目标软件排列组合的24种链接顺序对应的四个二进制文件a.o、b.o、c.o、d.o的分别进行连接:

#gcca.ob.oc.od.o–oapp01.exe

#gccb.oa.oc.od.o–oapp02.exe

#gcca.oc.ob.od.o–oapp03.exe

#gcca.ob.od.oc.o–oapp04.exe

……

#gccd.oc.ob.oa.o–oapp24.exe

发布产品时,目标软件的每种可执行文件会按照预定发布规则进入市场,这样市场上最终的目标软件就会有千差万别的镜像软件产品,从而令apt攻击者对目标软件进行攻克时感到迷惑和困惑,找不到规律,无法有效对比。即使apt攻击者对其中一种可执行文件逆向工程成功后篡改了一些指令达到了攻击的目的,却仍然不能对该目标软件的所有可执行文件适用同一种篡改策略。

其中,上述可执行文件的.exe文件类型仅作为示例,也可以是.sys文件、.com文件、.elf文件、.apk文件、.ipa文件等类型,在此不做限制。

本发明一个优选的实施例中,如图2所示,步骤s110可以具体包括:

步骤s111:针对任一源码文件,确定该源码文件的多种编译方式分别对应的编译参数。

采用不同的编译方法,可以使同一个源码文件内部的二进制结构也各有不同。本发明实施例中,针对任一源码文件,确定该源码文件的多种编译方式分别对应的编译参数,以便执行步骤s112,用以生成该源码文件的多种二进制文件版本。

可选地,不同的编译方法对应源码文件不同的优化级别。其中优化级别可以分别对应二进制结构的乱序程度,例如,优化级别越高的编译方法所需的编译参数越复杂,但可以使apt攻击者攻克的困难度越高。本领域技术人员可以根据实际情况针对不同领域或场景下的目标软件匹配合适的优化级别。

具体地,在制作镜像软件时,针对目标软件的任一源码文件,确定该源码文件的优化级别;根据优化级别获取对应的编译方式的编译参数,以便执行步骤s112。

步骤s112:根据任一编译方式的编译参数编译该源码文件,得到与该任一编译方式对应的二进制文件。

作为示例地,确定了源码文件a.c的4种编译方式,分别利用4种编译方式的编译参数对a.c进行编译:

#gcc–o1a.c–oa1.o

#gcc–o2a.c–oa2.o

#gcc–o3a.c–oa3.o

#gcc–o4a.c–oa4.o

实际应用中,结合预定链接规则可以制定不同的镜像目标软件生成方案,本发明实施例中,至少包括以下任意一种:

(1)预设链接规则可以只定义一种链接顺序,仅通过任一源码文件不同的编译方式来生成镜像目标软件,例如:

#gcca1.ob.oc.od.o–oapp01.exe

#gcca2.ob.oc.od.o–oapp02.exe

#gcca3.ob.oc.od.o–oapp03.exe

#gcca4.ob.oc.od.o–oapp04.exe

……

(2)预设链接规则可以只定义一种链接顺序,通过多个源码文件分别采用不同的编译方式来组合生成镜像目标软件,例如:

#gcca1.ob1.oc.od.o–oapp01.exe

#gcca1.ob2.oc.od.o–oapp02.exe

#gcca1.ob3.oc.od.o–oapp03.exe

#gcca2.ob1.oc.od.o–oapp04.exe

#gcca2.ob2.oc.od.o–oapp05.exe

#gcca2.ob3.oc.od.o–oapp06.exe

……

(3)预设链接规则定义多种链接顺序,但每个源码文件只采用一种编译方式来生成镜像目标软件,例如:

#gcca.ob.oc.od.o–oapp01.exe

#gccb.oa.oc.od.o–oapp02.exe

#gcca.oc.ob.od.o–oapp03.exe

#gcca.ob.od.oc.o–oapp04.exe

……

(4)预设链接规则定义多种链接顺序,且任一源码文件采用不同的编译方式来组合生成镜像目标软件,例如:

#gcca1.ob.oc.od.o–oapp01.exe

#gcca2.ob.oc.od.o–oapp02.exe

#gccb.oa1.oc.od.o–oapp03.exe

#gccb.oa2.oc.od.o–oapp04.exe

……

(5)预设链接规则定义多种链接顺序,且多个源码文件采用不同的编译方式来组合生成镜像目标软件,例如:

#gcca1.ob1.oc.od.o–oapp01.exe

#gcca1.ob2.oc.od.o–oapp02.exe

#gcca2.ob1.oc.od.o–oapp02.exe

……

#gccd.oc.ob2.oa2.o–oappn.exe

……

以上各种方案生成的镜像目标软件数量和内容各有不同,但都可以不同程度上令apt攻击者对目标软件进行攻克时感到迷惑和困惑,找不到规律,无法有效对比。即使apt攻击者对其中一种可执行文件逆向工程成功后篡改了一些指令达到了攻击的目的,却仍然不能对该目标软件的所有可执行文件适用同一种篡改策略。

本发明另一个优选的实施例中,还可以在链接时随机插入冗余文件,即步骤s130中,在依据任一链接顺序排列的多个二进制文件的任意位置处插入至少一个冗余文件,链接成目标软件的可执行文件。

作为示例地,在由二进制文件a.o、b.o、c.o、d.o依次排列一个可执行文件中插入冗余文件x.o并进行链接:

#gcca.ob.oc.ox.od.o–oapp.exe

其中,冗余文件不会被实际执行到,但是也起到了迷惑攻击者的目的。

具体地,冗余文件可以结合上述任一种镜像目标软件生成方案再衍生更多的目标软件可执行文件,具体的冗余文件插入方式包括但不限于设置冗余文件的数量、冗余文件的内容、冗余文件插入的位置等。

本发明实施例提供的镜像软件的生成方法,通过将构成目标软件的各个源码文件分别编译成相应的二进制文件;依据预设链接规则确定多个二进制文件的多种链接顺序;根据任一链接顺序对多个二进制文件进行链接,生成目标软件的可执行文件;以此生成目标软件功能一致的多种版本的二进制镜像可执行文件,令apt攻击者难以寻找攻击规律而放弃,且即使apt攻击者获得某一二进制可执行文件并采用逆向工程进行攻破成功,针对同一目标软件的其他二进制可执行文件却不能进行参考,避免相同的攻击方法蔓延,有效增加逆向apt攻击难度,提高各级各类网络及终端设备的安全性。

为了进一步加大apt攻击难度,本发明实施例还提供一种可执行文件的更新方法,包括:

当满足预定更新条件时,基于上述方法生成的目标软件的任一可执行文件,更新目标软件的原始可执行文件。

其中,预定更新条件包括:敏感时间窗口和/或预定时间周期。

利用apt攻击者短期内不能达到最终攻击目的,通过改变二进制结构(即使功能逻辑不变)来作废先前的部分攻击成果。

依照上述镜像软件的生成方法综合制定一个编译系统,该系统可以直接生成基于同源代码的多版本目标软件的二进制镜像,可以理解,这些二进制镜像是同一个目标软件,但属于不同的产品个体。根据预定更新条件更新升级,就会持续作废攻击者的部分攻击成果,最终达到阻碍逆向工程在apt攻击中的威胁,杜绝其严重性和危险性。

本发明实施例还一种镜像软件的生成装置,如图3所示,包括:

编译模块310,用于将构成目标软件的各个源码文件分别编译成相应的二进制文件;

确定模块320,用于依据预设链接规则确定多个二进制文件的多种链接顺序;

生成模块330,用于根据任一链接顺序对多个二进制文件进行链接,生成目标软件的可执行文件。

其中,预设链接规则包括依据多个二进制文件的排列组合方式进行链接。

进一步地,编译模块310具体用于针对任一源码文件,确定该源码文件相关联的多个编译方式的编译参数;

以及,编译模块310具体用于根据任一编译方式的编译参数编译该源码文件,得到与该任一编译方式对应的二进制文件。

可选地,编译模块310具体用于确定该源码文件的优化级别;

以及,编译模块310具体用于根据优化级别获取对应的编译方式的编译参数。

进一步地,生成模块330具体用于在依据任一链接顺序排列的多个二进制文件的任意位置处插入至少一个冗余文件,链接成目标软件的可执行文件。

本发明实施例还提供一种可执行文件的更新装置,包括:

更新模块,当满足预定更新条件时,基于上述方法生成的目标软件的任一可执行文件,更新目标软件的原始可执行文件。

本发明实施例所提供的装置可以为设备上的特定硬件或者加载于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容,在此不再赘述。

本发明实施例提供的镜像软件的生成装置,通过将构成目标软件的各个源码文件分别编译成相应的二进制文件;依据预设链接规则确定多个二进制文件的多种链接顺序;根据任一链接顺序对多个二进制文件进行链接,生成目标软件的可执行文件;以此生成目标软件功能一致的多种版本的二进制镜像可执行文件,令apt攻击者难以寻找攻击规律而放弃,且即使apt攻击者获得某一二进制可执行文件并采用逆向工程进行攻破成功,针对同一目标软件的其他二进制可执行文件却不能进行参考,避免相同的攻击方法蔓延,有效增加逆向apt攻击难度,提高各级各类网络及终端设备的安全性。

本发明实施例还提供一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的方法。

该终端可以为包括计算机、手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、pos(pointofsales,销售终端)、车载电脑等任意终端设备。

其中,存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

处理器是控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据,从而对终端进行整体监控。可选的,处理器可包括一个或多个处理单元;优选的,处理器可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器中。

本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。

本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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