一种应用程序保护系统和方法

文档序号:8259295阅读:431来源:国知局
一种应用程序保护系统和方法
【技术领域】
[0001]本发明涉及计算机安全领域,特别涉及对Android应用程序进行保护的系统和方法。
[0002]
【背景技术】
[0003]随着智能手机的推广和普及,手机安全问题更为突出,各种各样恶意软件不断涌现,对一些安全应用程序进行恶意操作,导致应用程序不可用或者遭到篡改。
[0004]为了保护应用程序,在专利文献I (CN201110057866.2)提出了一种应用程序保全保护方法以及数字版权保护保护系统。专利文献I提出的应用程序版权保护方法及数字版权保护系统主要是通过在应用中增加鉴权模块,通过与服务器进行鉴权来进行保护。
[0005]在专利文献2 (CN200580047317.X)中也提出了一种用于保护软件应用防止盗版的方法和系统。专利文献2提出的用于保护软件应用防止盗版的方法和系统主要是通过将程序的一部分放到服务器执行来进行保护,通过执行在服务器的部分程序对软件应用进行保护。
[0006]以上两种方案的缺点是如果通过对程序进行反编译,将鉴权模块进行修改或者屏蔽,则无法保护应用程序。
[0007]Android应用程序APK的全称是Android Package, APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到可执行代码Dex部分,即Android Dalvik执行程序。Android可执行代码是由Java语言编写的程序编译和转化而成的Dalvik字节码。这种字节码一般非常容易反编译。恶意软件和攻击者通过反编译APK文件进行汇编级的代码分析,并修改或插入自己的代码,重新签名打包为APK文件,以达到改变程序原有行为的目的。
[0008]已有的APK保护技术主要是通过代码混淆来保护代码。ProGuard当前主流的混淆Java字节码文件的免费的工具,它可以删除无用的类、字段、方法和属性。可以删除没用的注释,最大限度地优化字节码文件。它还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。
[0009]同样,ProGuard的方式并不能阻止攻击者反编译后,对Android应用程序进行攻击。
[0010]

【发明内容】

[0011]鉴于上述问题,本发明旨在提供一种能够有效防止攻击者通过对应用程序反编译进行攻击并且能够抵御动态注入、动态调试等攻击Android应用程序的系统以及方法。
[0012]本发明的应用程序保护系统,其特征在于,具备:
混淆器,用于对应用程序中的指令进行指令集置换;以及 Token生成器,用于生成Token,其中所述Token包括用于解释经过指令集置换的应用程序的解释器和用于安装经置换的应用程序的系统补丁。
[0013]优选地,所述混淆器使用置换矩阵对应用程序中的指令进行指令集置换,所述解释器使用与所述混淆器一一对应的置换矩阵对经过指令集置换的应用程序中的指令进行解释。
[0014]优选地,所述混淆器使用随机置换矩阵对应用程序中的指令进行指令集置换。
[0015]优选地,所述混淆器对应用程序中的每一条指令进行指令集置换,所述解释器对经过指令集置换的应用程序中的每一条指令进行解释。
[0016]优选地,所述混淆器对应用程序中指令进行指令集置换以使得保留原指令的所有操作数而变换原指令的操作码。
[0017]本发明的应用程序保护方法,其特征在于,包括下述步骤:
置换矩阵生成步骤,对于设备A生成置换矩阵M ;
Token生成步骤,根据所述置换矩阵M生成对应设备A的Token,其中,所述Token至少包括用于解释经过指令集置换的应用程序的解释器;
指令集置换步骤,根据所述矩阵M对待保护的应用程序进行指令集置换生成保护后的应用程序;
Token发布步骤,将Token发布给设备A的持有者;
应用程序发放步骤,将保护后的应用程序分发给设备A的持有者;以及应用程序安装步骤,以所述Token中的所述解释器对保护后的应用程序执行安装。
[0018]优选地,在所述置换矩阵生成步骤中,随机产生所述置换矩阵。
[0019]优选地,在所述Token生成步骤中,生成的所述Token还包括用于安装经置换的应用程序的系统补丁。
[0020]优选地,所述指令集置换步骤包括下述子步骤:
根据所述置换矩阵M,对待保护的应用程序进行静态的代码反编译并获取一个应用程序的所有字节码,其中所述置换矩阵M指定i到j的置换关系,其中i,j为自然数;
将待保护的应用程序子节码从Xi置换到Xj。
[0021]优选地,在所述Token发布步骤中,通过OTA方式向将Token发布给设备A的持有者。
[0022]
【附图说明】
[0023]图1是表示本发明一实施方式的应用程序保护系统的示意图。
[0024]图2是表示利用本发明中的混淆器进行指令集置换的示意图。
[0025]图3是表示本发明一实施方式的应用程序保护方法的流程图。
[0026]
【具体实施方式】
[0027]下面介绍的是本发明的多个实施例中的一些,旨在提供对本发明的基本了解。并不旨在确认本发明的关键或决定性的要素或限定所要保护的范围。
[0028]图1是表示本发明一实施方式的应用程序保护系统的示意图。下面参照图1对于本发明一实施方式的应用程序保护系统进行说明。
[0029]本发明的应用程序保护系统是一种适用于移动智能终端的应用程序保护系统,具体地,采用了基于指令集置换思想的混淆技术,主要的用途是协助Android app发行商对自己开发的App进行数字版权保护,同时该系统也能够抵御动态注入、动态调试等来自系统底层的攻击。
[0030]如图1所示,本发明的应用程序保护系统,具备用于对应用程序111中的指令进行指令集置换混淆器100 ;以及用于使用矩阵生成Token的Token生成器200。
[0031]混淆器100对应用程序的dex文件中的指令进行混淆,也就是所谓的指令集置换。混淆器100会依据应用程序的dex文件进行解析,通过类一方法一指令的层次来对整个dex文件中的每一条指令来进行遍历,在遍历的过程中,混淆器100会使用规定的置换矩阵(例如,随机挑选)对每一条指令进行置换,经过置换后的指令保留原指令的所有操作数,但是用于识别指令的操作码已经改变。
[0032]图2是表示利用本发明中的混淆器进行指令集置换的示意图。
[0033]如图2所示,原指令的字节码为:“1301 300”,其中操作码是“13”,操作数是“013000”。经过指令集置换后,原来的操作数“01 3000”没有改变,操作码从“ 13”按照置换矩阵置换成“23”,这样,置换后的指令的字节码为:“2301 300”。
[0034]由于经过置换后,操作码已经改变,因此,在不具有置换矩阵的情况下,普通的dex逆向工具将无法还原dex文件中的任何指令。
[0035]另外,完成对指令的混淆之后,混淆器100还会在dex文件的头部添加一些必要的信息,这些信息将在APK的安装和执行过程中帮助执行环境分辨普通app和混淆过的app。
[0036]经过混淆的dex文件将会被重打包成一个经过混淆的APK文件,由不同置换矩阵生成的混淆APK属于不同的系列,每一个系列的混淆APK只能在对应的执行环境中才能被安装和执行,这一点进一步保证了置换矩阵的安全性以及混淆后的APK能够抵御动态分析。
[0037]Token生成器200是使用置换矩阵来生成Token的工具。在本发明中,Token必须携带解释执行混淆后app所必须的解释器,使用不同置换矩阵所生成的Token中携带的解释器也不相同,经过混淆器100混淆后的app只能在由同一个置换矩阵所生成的解释器中才能执行。
[0038]如图2所示,经过混淆后的app中每一条指令的操作码已经和原本的指令不同,要正确的执行每一条指令就需要对这些操作码进行还原,否则混淆过的应用程序并不能被通用的Android系统正常执行。所以当特定的终端需要运行被混淆过的应用程序时,需要先加载对
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1