《一种移动应用的软件加固方法.pdf》由会员分享,可在线阅读,更多相关《一种移动应用的软件加固方法.pdf(7页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN103544046A43申请公布日20140129CN103544046A21申请号201310509543122申请日20131025G06F9/455200601G06F21/1420130171申请人苏州通付盾信息技术有限公司地址215125江苏省苏州市工业园区新平街388号腾飞创新园6号楼4F、5F72发明人汪德嘉宋超刘家郡74专利代理机构南京苏科专利代理有限责任公司32102代理人陈忠辉54发明名称一种移动应用的软件加固方法57摘要本发明揭示了一种移动应用的软件加固方法,包括步骤、按预设的安全要求定制DALVIK的微型虚拟机,将微型虚拟机整合到应用程序中,使微型虚拟。
2、机成为应用程序可运行组件的一部分且具有最高优先运行权,、在应用程序运行时先运行微型虚拟机,对应用程序整体进行安全性检查或验证,并在安全通过后再运行应用程序的功能模块。应用本发明软件加固方法,通过在应用程序中整合定制的微型虚拟机,并在应用程序中优先对应用程序本身及运行环境进行安全检测,能有效防止应用程序被非法破解或逆向,提高了ANDROID系统下应用程序的安全性,保护了用户的个人敏感数据,也保障了商业软件的机密性。51INTCL权利要求书1页说明书4页附图1页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书4页附图1页10申请公布号CN103544046ACN10354404。
3、6A1/1页21一种移动应用的软件加固方法,针对ANDROID系统中的应用程序做加固处理,其特征在于所述软件加固方法包括步骤、按预设的安全要求定制微型虚拟机,将微型虚拟机整合到应用程序中,使微型虚拟机成为应用程序可运行组件的一部分且具有最高优先运行权,、在应用程序运行时先运行微型虚拟机,对应用程序整体进行安全性检查或验证,并在安全通过后再运行应用程序的功能模块,所述预设的安全要求包括应用程序的签名验证,应用程序中无效指令、非法指令的去除以及加密信息的解密。2根据权利要求1所述移动应用的软件加固方法,其特征在于所述微型虚拟机的整合方式为采用NDK方式,在应用程序安装包中使用ANDROID原生编程。
4、套件并用C或C语言进行一体化定制,使微型虚拟机成为应用程序可运行组件的一部分。3根据权利要求1所述移动应用的软件加固方法,其特征在于所述微型虚拟机的整合方式为在应用程序首次运行前通过RPC技术从远端取回至本地,并动态加载成为应用程序可运行组件的一部分。4根据权利要求1所述移动应用的软件加固方法,其特征在于以微型虚拟机已整合在应用程序中为基础,所述微型虚拟机的运行对应于移动终端开机启动实时监听应用程序的执行中。5根据权利要求1所述移动应用的软件加固方法,其特征在于所述微型虚拟机执行应用程序的签名验证功能,在应用程序安装好后利用存放在远端服务器上的公钥进行验证,在验证无法通过的情况下终止程序运行或。
5、提示卸载。6根据权利要求1所述移动应用的软件加固方法,其特征在于所述微型虚拟机执行应用程序中无效指令、非法指令的清除功能,在应用程序被插入非法获取系统或用户信息的代码或指令情况下,微型虚拟机运行并删除该些代码或指令。7根据权利要求1所述移动应用的软件加固方法,其特征在于所述微型虚拟机执行加密信息的解密功能,在一个处理移动支付的应用中交易过程及交易信息的加密信息,由对应的微型虚拟机进行解密并与移动支付相关的服务器交互。权利要求书CN103544046A1/4页3一种移动应用的软件加固方法技术领域0001本发明涉及一种ANDROID系统上应用程序的保护技术,通过定制虚拟机技术来保障应用程序运行环境。
6、的安全,进而实现应用程序本身的安全,该方法可应用在ANDROID系统的应用程序开发流程中。背景技术0002DALVIK虚拟机是ANDROID中应用程序运行的基础。由ANDROID系统专用,并且是ANDROID系统的核心组成部分之一,其指令集基于寄存器架构,支持DEX格式的JAVA应用程序的运行。其中DEX文件是专为DALVIK虚拟机设计的一种压缩的文件格式,针对嵌入式系统进行了优化,共用了很多类名称、常量字符串,使它的体积比较小,运行效率也比较高。基于寄存器实现,使其在编译程序时可以提前优化代码而不是延迟到执行时。0003DALVIK虚拟机的核心是实现库LIBDVMSO,主要由C语言完成。其运。
7、行依赖于LINUX内核的线程机制和内存管理机制等部分功能,能高效使用内存,并以高性能在低速CPU上运行,因此适合内存和处理器速度有限的系统。DALVIK虚拟机经过优化后,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个DALVIK虚拟机作为一个独立的LINUX进程执行,可以防止在虚拟机崩溃的时候所有程序都被关闭。同时,每一个ANDROID应用在底层都会对应一个独立的DALVIK虚拟机实例,使其代码在虚拟机的解释下得以执行。0004然而归根结底,DALVIK也是一个定制的JAVA虚拟机,只不过实现了自己的一套指令集并且将虚拟机对嵌入式设备进行了一系列的优化,可以满足高效运行多种虚拟机实例。。
8、其中有一个特殊的虚拟机进程ZYGOTE,作为虚拟机实例的孵化器,它在系统启动的时候就会产生,它会完成虚拟机的初始化、库的加载和预制类库和初始化的操作。如果系统需要一个新的虚拟机实例,它会迅速复制自身,以最快的数据提供给系统。对于一些只读的系统库,所有虚拟机实例都和ZYGOTE共享一块内存区域。作为操作系统与应用程序之间的中间件,其安全问题与应用程序及操作系统的安全关系十分紧密。0005随着移动操作系统的不断发展,ANDROID占领了大部分的移动市场。但是由于ANDROID系统版本分支较多造成碎片化严重,而其本身在不同版本中又存在很多不同的漏洞,其实整个ANDROID系统的版本混乱,造成其系统之。
9、上运行的DALVIK虚拟机也十分不安全,运行在虚拟机中的应用程序安全性更无法得到保证。发明内容0006本发明的目的旨在提出一种移动应用的软件加固方法,对运行在移动操作系统中的应用程序进行保护。0007本发明的上述目的,其得以实现的技术解决方案为一种移动应用的软件加固方法,针对ANDROID系统中的应用程序做加固处理,其特征在于所述软件加固方法包括步骤、按预设的安全要求定制微型虚拟机,将微型虚拟机整合到应用程序中,使微型虚拟机成为应用程序可运行组件的一部分且具有最高优先运行权,、在应用程序运行时先运行说明书CN103544046A2/4页4微型虚拟机,对应用程序整体进行安全性检查或验证,并在安全。
10、性验证通过后再运行应用程序的功能模块,所述预设的安全要求包括应用程序的签名验证,应用程序中无效指令、非法指令的去除以及加密信息的解密。0008进一步地,所述微型虚拟机的整合方式为采用NDK方式,在应用程序安装包中使用ANDROID原生编程套件并用C或C语言进行一体化定制,使微型虚拟机成为应用程序可运行组件的一部分。0009进一步地,所述微型虚拟机的整合方式为在应用程序首次运行前通过RPC技术从远端取回至本地,并动态加载成为应用程序可运行组件的一部分。0010进一步地,以微型虚拟机已整合在应用程序中为基础,所述微型虚拟机的运行对应于移动终端开机启动实时监听应用程序的执行中。0011进一步地,所述。
11、微型虚拟机执行应用程序的签名验证功能,在应用程序安装好后利用存放在远端服务器上的公钥进行验证,在验证无法通过的情况下终止程序运行或提示卸载。0012进一步地,所述微型虚拟机执行应用程序中无效指令、非法指令的清除功能,在应用程序被插入非法获取系统或用户信息的代码或指令情况下,微型虚拟机运行并删除该些代码或指令。0013进一步地,所述微型虚拟机执行加密信息的解密功能,在一个处理移动支付的应用中交易过程及交易信息的加密信息,由对应的微型虚拟机进行解密并与移动支付相关的服务器交互。0014应用本发明软件加固的技术方案通过在应用程序中整合定制的微型虚拟机,并在应用程序中优先对应用程序本身及运行环境进行安。
12、全检测,能有效防止应用程序被非法破解或逆向,提高了ANDROID系统下应用程序的安全性,保护了用户的个人敏感数据,也保障了商业软件的机密性。附图说明0015图1为本发明移动应用的软件加固方法流程图。具体实施方式0016本发明为应对日益严重的移动操作系统的客户端安全,创新地提出了一种针对ANDROID系统中应用程序的保护技术。该技术方案能突破目前常见的、传统的基于其它应用程序的保护方案,借鉴ANDROID系统本身DALVIK虚拟机实现,针对应用程序定制微型虚拟机,是应用程序整个或者一部分运行在定制的虚拟机中,从而能有效地防止应用程序被非法破解或者逆向,提高了ANDROID系统上应用程序的安全性。。
13、0017从软件加固方法的概括来看,如图1所示,该软件加固方法包括步骤、按预设的安全要求定制微型虚拟机,将微型虚拟机整合到应用程序中,使微型虚拟机成为应用程序可运行组件的一部分且具有最高优先运行权,、在应用程序运行时先运行微型虚拟机,对应用程序整体进行安全性检查或验证,并在安全通过后再运行应用程序的功能模块,所述预设的安全要求包括应用程序的签名验证,应用程序中无效指令、非法指令的去除以及加密信息的解密,可以择一选取,也可以兼具所有。说明书CN103544046A3/4页50018上述方案进一步细化来看,其中微型虚拟机的整合方式可以采用NDK方式,即在应用程序安装包中使用ANDROID原生编程套件。
14、并用C或C语言进行一体化定制,使微型虚拟机成为应用程序可运行组件的一部分。也可以是在应用程序首次运行前通过RPC技术从远端取回至本地,并动态加载成为应用程序可运行组件的一部分。0019对于定制微型虚拟机,需要注意以下几方面的问题。00201,定制的微型虚拟机需要整合在应用程序里面,使运行定制虚拟机的应用程序实质上成为一个新的应用程序。应用程序由系统安装之后,定制虚拟机成为程序可运行组件的一部分,而且每次微型虚拟机都要在真正的程序运行之前运行,使程序始终能在自己附带的安全的环境中运行。0021对此,考虑到定制虚拟机需要与移动应用进行整合,因此可以将定制的微型虚拟机作为应用程序的一个功能组件,而且。
15、这个微型虚拟机需要先于程序运行之前运行,故将其放在开机启动实时监听应用程序的执行是比较好的选择,当然这是在微型虚拟机已经通过某种途径整合在应用程序中的情况下实现的。如果是第一次运行还需先去从远端或者本地获取定制的虚拟机。00222,微型虚拟机在执行应用程序时,要对应用程序做安全性检查。比如说再次验证应用程序的签名是否正确,进而决定是否在自己的虚拟机环境中运行该应用程序。0023对此,每一个应用程序拥有各自的签名,签名在应用开发者手中自己进行掌控,如果签名不泄露,那么应用程序的伪造就很容易鉴别。定制的虚拟机增加安全性检查,是在系统安装应用后对应用程序进行的又一次验证,可以把应用对应的公钥存放在远。
16、端服务器,与安装好的应用进行验证,若验证不通过则终止程序的运行或提示卸载,更好地保证了应用程序的合法性。00243,可以在虚拟机中增加自己定义的功能模块。比如在程序执行之前,由虚拟机对应用程序的DEX文件进行检查,过滤掉其中的无效指令或者是非法指令,借此提升程序的运行效率,调高程序的健壮性。0025对此,虚拟机中增加的功能模块可以根据不同应用程序的需要进行自定义。以下仅举例两个功能,仅供参考参考(1)如果一个应用程序插入了一些非法获取系统或者用户信息的代码或者指令,可以在定制虚拟机中增加一个模块用于删除这些非法指令,使应用程序尽可能地减少危害;(2)如果一个处理移动支付的应用程序需要将交易过程。
17、及交易期间的信息隐藏,可以在移动应用中将这些信息加密,只有经由定制虚拟机的处理才可以将这些数据进行解密并与服务器进行交互,保障了交易过程中的安全。00264,定制的虚拟机在应用程序中能有两种存在方式一种是在安装包中使用ANDROID原生编程套件用C/C语言进行实现;另一种是通过RPC技术放在远端服务器,在应用第一次运行之前取回本地,在运行时动态加载,其目的都是为了保护定制虚拟机本身不被逆向或者破解,自身安全才有可能保证其上运行的应用程序也是安全的。0027由图1可以看出,本发明定制的微型虚拟机与应用程序中的功能模块是并列存在于移动应用的,在移动应用真正运行之前启动定制的微型虚拟机,对应用程序进。
18、行安全性验证,以及一些自定义的功能模块,比如针对敏感数据的加解密或者是针对程序中非法指令的扫描等,在执行完这些虚拟机的自定义功能模块后,才可以启动应用程序,去执行程序本身的功能模块。增加了定制虚拟机的移动应用为这个程序本身运行创建了安全的运行环说明书CN103544046A4/4页6境,这个环境还与该程序进行交互,保护了应用程序的敏感数据。0028实施情境一当ANDROID系统某个漏洞被黑客攫取,黑客借由此漏洞可以对ANDROID系统的虚拟机本身发起攻击,进而影响虚拟机中的应用程序。但是如果该应用程序进行了定制虚拟机的话,就算黑客攻击了虚拟机,但是有一些应用程序的交互需要与虚拟机进行,当虚拟机。
19、环境不再安全时,应用程序会停止运行防止隐私数据泄露。0029实施情境二如果黑客拿到了经过定制虚拟机处理的应用程序安装包,想对该程序插入吸费或者木马代码后进行重新打包并发布。程序也许可以利用系统漏洞安装成功,但是在运行的时候定制的微型虚拟机会再次进行安全性检查并且应用程序一些数据的交互也要以密文形式与虚拟机进行,因此很大可能提高了客进行攻击的门槛。0030综上所述可见,应用本发明软件加固的技术方案,通过在应用程序中整合定制的微型虚拟机,并在应用程序中优先对应用程序本身及运行环境进行安全检测,能有效防止应用程序被非法破解或逆向,提高了ANDROID系统下应用程序的安全性,保护了用户的个人敏感数据,也保障了商业软件的机密性。说明书CN103544046A1/1页7图1说明书附图CN103544046A。