用于保护IOS软件模块的设备和方法与流程

文档序号:12470884阅读:319来源:国知局
用于保护IOS软件模块的设备和方法与流程

本公开总体上涉及软件保护,具体地,涉及保护在iOS上运行的软件。



背景技术:

本部分是为了向读者介绍可能与下文所述的和/或所要求保护的本公开各个方面相关的现有技术的各方面。这样的讨论有助于向读者提供背景信息以便帮助更好地理解本公开的多个方面。因此,应当理解,这些陈述应以这种方式被解读,而不是作为对现有技术的承认。

通过从源到将安装iOS应用的iOS应用的加密分发来保护iOS应用不受逆向工程的侵害。一旦安装在iOS设备上,iOS本身就能使用隔离处理和分离特权来保护应用免遭动态分析。

然而,这种保护仅适用于没有越狱的iOS设备。容易使用GNU调试器(gdb)来从越狱设备倾卸应用的代码,如Jonathan Zdziarski在“Hacking and Securing iOS Applications”中所述。已经对越狱设备进行了修改,以获得在未越狱设备上不可用的增加的特权。

因此依赖于由iOS提供的保护是不够的。但是由于iOS不允许在已安装应用中进行任何代码修改,因此可以使用的软件保护机制只有完整性检查和控制流图(CFG)平坦化,这两者通常被一起使用。经常需要这些软件保护机制,因为由iOS提供的加密是弱的,并且应用易于受到使用静态分析的逆向工程的侵害。

再次地,CFG平坦化仅对静态攻击有效,而对动态攻击无效,并且Wurster等人已经示出了可以通过并行运行两个代码部分来规避完整性检查,如在“A Generic Attack on Checksumming-Based Software Tamper Resistance”中所述。

应认识到,需要具有一种克服与保护iOS应用相关的传统问题中的至少一部分问题的解决方案。本原理提供了这种解决方案。



技术实现要素:

在第一方面,本原理涉及一种用于保护要由执行设备执行的模块的应用提供方设备,其中所述执行设备具有操作系统并且是原装设备或越狱设备。该应用提供方设备包括处理单元,被配置为获得要在原装执行设备上执行的模块的第一版本,所述第一版本实施原装设备上的操作系统所允许的第一软件保护技术;获得要在越狱设备上执行的所述模块的第二版本,所述第二版本实施原装设备上的操作系统所不允许的第二软件保护技术;获得越狱检测函数,所述越狱检测函数被配置为确定所述执行设备是原装设备还是越狱设备,并且在所述执行设备是原装设备的情况下调用所述模块的第一版本,在所述执行设备是越狱设备的情况下调用所述模块的第二版本;以及产生应用包,所述应用包包括越狱检测函数、所述模块的第一版本以及所述模块的第二版本。所述应用提供方设备还包括被配置为输出应用包的接口。

第一方面的各种实施例包括:

所述处理单元还被配置为使用第一软件保护技术来保护所述模块的第一版本。第一软件保护技术可以包括以下项中的至少一个:控制流图平坦化和验证所述执行设备是原装设备。

所述处理单元还被配置为使用第二软件保护技术来保护所述模块的第二版本。第二软件保护技术可以是动态加密。

在第二方面,本原理涉及一种用于保护要由执行设备执行的模块的方法,其中所述执行设备具有操作系统并且是原装设备或越狱设备。所述方法包括在应用提供方设备处:由处理单元获得要在原装执行设备上执行的所述模块的第一版本,所述第一版本实施原装设备上的操作系统所允许的第一软件保护技术;由处理单元获得要在越狱设备上执行的所述模块的第二版本,所述第二版本实施原装设备上的操作系统所不允许的第二软件保护技术;

由处理单元获得越狱检测函数,所述越狱检测函数被配置为确定所述执行设备是原装设备还是越狱设备,并且在所述执行设备是原装设备的情况下调用所述模块的第一版本,在所述执行设备是越狱设备的情况下调用所述模块的第二版本;由处理单元产生应用包,所述应用包包括越狱检测函数、所述模块的第一版本以及所述模块的第二版本;以及由接口输出所述应用包。

第二方面的各种实施例包括:

所述处理单元还被配置为使用第一软件保护技术来保护所述模块的第一版本。第一软件保护技术可以包括以下项中的至少一个:控制流图平坦化和验证所述执行设备是原装设备。

所述处理单元还被配置为使用第二软件保护技术来保护所述模块的第二版本。第二软件保护技术可以是动态加密。

在第三方面,本原理涉及一种具有操作系统的执行设备,所述执行设备包括:存储器,存储要在原装执行设备上执行的模块的第一版本、要在越狱设备上执行的所述模块的第二版本、以及越狱检测函数,其中所述第一版本实施原装设备上的操作系统所允许的第一软件保护技术,所述第二版本实施原装设备上的操作系统所不允许的第二软件保护技术,并且所述越狱检测函数被配置为确定执行所述越狱函数的执行设备是原装设备还是越狱设备;以及处理单元,被配置为:执行所述越狱检测函数以确定所述执行设备是原装设备还是越狱设备,以及在所述执行设备被确定为原装设备的情况下调用所述模块的第一版本,在所述执行设备被确定为越狱设备的情况下调用所述模块的第二版本。

附图说明

作为非限制性示例,现在参考附图来描述本原理的优选特征,在附图中:

图1示出了实现本原理的系统100;

图2示出了根据本原理的产生受保护模块的方法;以及

图3示出了根据本原理的应用包。

具体实施方式

应理解的是,附图所示的元件可以以硬件、软件、或其组合的各种形式来实现。优选地,这些元件在一个或更多个适当编程的通用目的设备上实现为硬件和软件的组合,其中所述设备可以包括处理器、存储器和输入/输出接口。文中,词语“耦接”被定义为表示直接连接或通过一个或更多个中间组件间接连接。这种中间组件可以包括基于硬件和软件的组件二者。

本说明书示意了本公开的原理。因此,可以理解的是,本领域的技术人员将能够设计出虽然没有明确地描述或示出但体现了本发明的原理并包括在其范围之内的各种布置。

这里记载的所有示例和条件语言预期用于教导目的,以帮助读者理解本公开的原理和发明人为改进现有技术而贡献的构思,并且应解释为不限于这些具体记载的示例和条件。

此外,这里对本公开的原理、方面、实施例及其特定示例做出引述的所有声明意在包括本发明的结构和功能上的等同物。附加地,这种等同物旨在包括当前已知的等同物以及将来研发的等同物,即,为执行相同功能研发的任何元件,而无论其结构。

因此,本领域的技术人员可以理解,例如这里所表示的框图展示出体现本公开原理的示意性电路的概念图。类似地,将理解,任何流程、流程图、状态转移图、伪代码等表现出实质上可以在计算机可读介质上表现的、并且由计算机或处理器执行的各个过程,无论是否明确示出该计算机或处理器。

图中示出的各个元件的功能可以通过使用专用硬件以及能够与合适软件相关联执行软件的硬件来提供。当由处理器来提供时,这些功能可以由单个的专用处理器、单个的共享处理器、或多个单独的处理器来提供,其中一些可以是共享的。此外,对术语“处理器”或“控制器”的显式使用不应理解为专门指能够执行软件的硬件,而是可以非限制地包括数字信号处理器(DSP)硬件、用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)以及非易失性存储器。

还可以包括常规和/或定制的其它硬件。类似地,附图所示的任何开关都仅是概念性的。其功能可以通过程序逻辑的操作、专用逻辑、程序控制和专用逻辑的交互、或甚至是手动地实现,实施者可以选择的具体技术可以从上下文中得到明确的理解。

在权利要求中,被表达为用于执行指定功能的装置的任意元件意在包括执行该功能的任何方式,包括例如a)执行该功能的电路元件的组合,或b)任何形式的软件,因而包括固件、微代码等,其与适当的电路组合以运行该软件来执行该功能。由这种权利要求限定的本公开在于由各种记载的装置提供的功能以权利要求所要求的方式组合在一起。因此,将可以提供这些功能的任何装置认为是等同于本文所示的装置。

在说明书中,将对模块进行参考。该模块包括可执行代码,并且可以是共享库、可执行代码或库中的代码的一部分、或者甚至是整个应用。

本原理的方法和设备提供包括以下两种模块版本的应用包:一种版本在未越狱设备(这里称为“原装设备”)上执行,而一种版本在越狱设备上执行。每种版本实现相同功能,但是使用不同的软件保护机制来保护(但是应理解一些软件保护机制可以在两种版本间共享)。

图1示出实现本原理的系统100。系统100包括应用提供方110,被配置为产生iOS模块并直接或间接地将其提供给被配置为执行iOS模块的iOS设备120。应用提供方110和iOS设备120包括至少一个硬件处理单元(“处理器”)111、121;存储器112、122;以及至少一个通信接口113、123,配置为与其他设备进行通信。本领域技术人员将清楚,为了清楚的目的,示出的设备已被简化;因此,没有示出如内部连接或电源之类的特征。非暂时性存储介质130存储将在下文进一步描述的iOS模块。

图2示出了根据本原理的产生受保护模块的方法。在步骤S20,应用提供方获得要在原装设备上执行的模块的版本,并在步骤S21,获得要在越狱设备上执行的模块的版本。每种版本仅指代其自身(即,不指代另一版本),并且利用特定软件保护机制(取决于其要在越狱设备还是原装设备上执行)来保护。

在原装设备上,用户模块(即,由用户下载的模块)在非root(非根)模式下运行。操作系统会遭到调试攻击,操作系统应用默认加密,对应用进行隔离处理(沙盒化(sandboxing)),并禁止调试者附上非根应用。由于iOS提供针对动态攻击的保护,因此应用提供方110按照用于原装设备本身的代码版本提供针对静态分析的保护(例如使用CFG平坦化)就够了。此外,完整性检查可以用于保护模块。

在越狱设备上,iOS不会阻止调试或动态攻击,但是同时,iOS的修改的系统特权(例如由于越狱而造成的损坏的沙盒隔离)允许使用低级软件保护机制,如动态密码加密(自修改密码)和反调试。这使得应用提供方能够将这种软件保护机制包括在用于越狱设备的版本中。因此,可以使用例如动态加密和完整性检查来保护用于越狱设备的版本免遭动态攻击。

在步骤S22,应用提供方110将原装iOS允许的至少一个软件保护技术应用于针对原装设备的版本,以获得针对原装设备的受保护版本,并且在步骤S23,应用提供方110将越狱iOS特定的至少一个软件保护技术(被越狱iOS允许但是不被原装iOS允许)应用于针对越狱设备的版本,以获得针对越狱设备的受保护版本。以下情况也是可能的:在步骤S20和S21中获得的版本在获得这些版本时已经通过使用上述软件保护方法而受到保护。

应用提供方110之后在步骤S24产生越狱检测函数。越狱检测函数能够确定执行了该越狱检测函数的设备是原装设备还是越狱设备。由于原装设备上部允许分叉(forking),因此越狱检测函数可以例如使用fork(),并检查返回的进程id以查看其是否已经成功地分叉,在是的情况下,可以确定设备已越狱。类似地,调用具有空参数的system()也能够确定越狱:如果返回1则确定是越狱设备,如果返回0则确定是原装设备。Zdziarski在“Hacking and Securing iOS Applications”中还描述了其他越狱检测函数。优选越狱检测函数使用检测越狱的多种不同方法。

优选地,越狱检测函数还插入到针对原装设备的版本的代码中,从而在执行该版本期间也执行检测。在原装版本内的越狱检测函数优选通过完整性检查来保护,并且被配置为在确定执行设备已越狱的情况下改变执行流。当保护原装版本时,可以在此时或更早的时间将越狱检测函数插入到原装版本中。

应用提供方10之后在步骤S25产生应用包,所述应用包包括越狱检测函数、用于在原装设备上使用的版本以及用于在越狱设备上使用的版本,其中,所述越狱检测函数根据执行设备的越狱状态(即,是原装还是越狱)来调用正确的版本。在步骤S26,应用提供方110直接向iOS设备120输出应用包,或者向中间商店(未示出)输出应用包。

图3示出了根据本原理的应用包300,该应用包包括越狱检测函数310,被配置为确定执行设备的越狱状态,之后调用应用的原装版本320或越狱版本330。原装版本的代码包括多个越狱检测函数325,如上所述。

在图3中,应用包300被示出为具有三个模块:越狱检测函数310以及模块的两个版本320、330。将理解的是,这三个模块可以是单个应用的一部分,在执行期间,实现越狱检测函数310,从而确定执行哪个版本。

在变型中,应用包包括三个应用,其中每个应用包括越狱检测函数之一以及两个版本。包括越狱检测函数的应用被首先执行,并且其根据确定设备是否越狱的结果来调用其他两个应用之一。

将认识到,本原理提供用于对iOS软件模块进行软件保护的解决方案,其中所述解决方案至少在一些情况下可以改善传统保护方法。具体地,根据实施例,本原理可以将相同应用包分发给原装设备和越狱设备。

已经将本原理描述为用于iOS,并且相信本原理在iOS中能够提供最优的效果。然而应理解,本原理可以用于其它(安全)操作系统(如Android),尤其是在所述其它操作系统限制在存储器页中的写许可的情况下。

以上描述公开的各项特征、(适当的)权利要求和附图可以独立提供或以任何适当的形式结合。被描述为以硬件实现的特征还可以实现为软件,且反之亦然。权利要求书中出现的参照数字仅作为举例说明而不是限制权利要求的范围。

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