一种android应用程序防盗版的方法及系统技术方案

技术编号:9490221 阅读:148 留言:0更新日期:2013-12-26 00:00
本发明专利技术提出了一种android应用程序防盗版的方法及系统,包括将android应用程序程序分成两部分:关键程序和不完整的部分应用程序,两者结合才能正常运行。将两部分都上传至服务器,服务器对关键代码进行加密处理,用户下载了不完整的部分程序后,首次运行需向服务器申请关键程序。获得服务器认证后方可下载关键程序,然后在客户端解密关键程序并存储到安全空间,经判断为合法权限后方可加载关键程序,以正常运行应用程序。首次运行之后,关键程序存储在安全空间,每次运行无需再从服务器下载。本发明专利技术不增加开发者的工作量,能过有效的防止应用程序被逆向工程和盗版。

【技术实现步骤摘要】
【专利摘要】本专利技术提出了一种android应用程序防盗版的方法及系统,包括将android应用程序程序分成两部分:关键程序和不完整的部分应用程序,两者结合才能正常运行。将两部分都上传至服务器,服务器对关键代码进行加密处理,用户下载了不完整的部分程序后,首次运行需向服务器申请关键程序。获得服务器认证后方可下载关键程序,然后在客户端解密关键程序并存储到安全空间,经判断为合法权限后方可加载关键程序,以正常运行应用程序。首次运行之后,关键程序存储在安全空间,每次运行无需再从服务器下载。本专利技术不增加开发者的工作量,能过有效的防止应用程序被逆向工程和盗版。【专利说明】一种android应用程序防盗版的方法及系统
本专利技术涉及移动终端
,尤其涉及一种android应用程序防盗版的方法及系统。
技术介绍
随着移动互联网的飞速发展,移动终端操作系统已经形成ios与android两大主阵营。基于android操作系统的应用程序采用主流编程语言Java。Java程序编译后生成字节码,运行在虚拟机上。对于android系统,采用Java编写的应用程序经编译后运行在Dalvik VM上的DEX字节码,应用程序所有的字节码文件打包成APK文件安装到android系统。当前,Java编程语言工具并没有对Java字节码采取有效保护措施,同时Java字节码文件的结构本身特点使其易于被逆向工程,从而存在源码安全问题。因此,在目前的市场上,android应用程序正面临严重的盗版问题,被盗版的应用程序可能被植入病毒、广告,还可能被二次打包以及篡改,这些都严重损害了应用程序的开发者以及消费者的权益。针对这一情况,移动互联网的各个产业链都在做一些努力,来保护android应用程序的安全。目前,普遍采用的加密技术手段有:代码混淆、加密、水印等,但采用这些技术手段都给开发者带来了 一定的工作量,而且即使采用了这些技术,应用程序仍然可以被逆向。Google曾经有提供LVL的反盗版机制,但很快就被破解了。因此,目前android应用市场上的盗版行为仍然十分盛行。
技术实现思路
为解决上述问题,本专利技术提出了一种android应用程序防盗版的方法及系统,该方法不增加开发者的工作量,能过有效的防止应用程序被逆向工程和盗版。为实现上述目的,本专利技术的技术方案为: 一种android应用程序防盗版的方法,包括如下步骤: SlO:将android应用程序拆分成两部分代码:代码一中加入一个桩类(Stub, java)代码后编译成生成文件一;代码二编译生成文件二,上传所述两部分文件至服务器; S20:客户端下载运行所述android应用程序的文件一,其中桩(Stub)首先运行判断该客户端是否是第一次运行该应用程序,如果是则继续以下步骤,否则执行步骤S60 ; S30:客户端向服务器申请认证和下载文件二,服务器对所述申请进行认证,认证通过则继续,否则终止程序运行; S40:服务器对应用程序对应的文件二进行加密并发送给客户端; S50:客户端所述应用程序文件一的桩(Stub)解密文件二并将其存入到安全空间; S60:客户端启动可加载内核模块(LKM)程序判断应用程序桩(Stub)是否有权限访问安全空间的文件二,如果判断通过,则加载文件二,应用程序运行,否则终止程序运行。其中,所述代码二为应用程序的的启动代码或者核心算法,所述代码一为应用程序除代码二以外的其它代码。其中,所述文件一为APK文件,文件二为JAR文件。进一步的,所述安全空间是在客户端的应用程序存储空间内开辟的一块存储区域。进一步的,所述步骤S60包括:可加载内核模块程序(LKM)判断应用程序进程ID号是否与安全空间中对应的文件二提供的ID号一致,如果一致则加载运行,否则终止应用程序运行。此外,本专利技术还提供了一种采用上述方法的android应用程序防盗版系统,包括服务器端和客户端,其中所述服务器端包括: 存储模块:用于存储程序发布者上传的android应用程序的文件一和文件二 ;其中:所述文件一由android应用程序被拆分成两部分后的代码一加入一个桩类(Stub, java)代码后编译成生成,所述文件二由应用程序的另一部分代码二编译生成; 认证模块:对客户端的申请进行认证,认证通过则启动加密模块,否则终止程序运行; 加密模块:对文件二进行加密并将加密后的文件二发送给客户端; 所述客户端包括: 判断模块:判断下载的android应用程序的文件一是否是第一次在该客户端运行,如果是则向服务器端申请认证和下载文件二,否则启动可加载内核模块程序(LKM); 安全空间:设置于客户端的应用程序存储空间内的一块存储区域,只有获得授权的应用程序进程可以访问所述安全空间; 解密模块:对从服务器端收到的文件二进行解密并将其存入安全空间; 可加载内核模块(LKM):判断应用程序桩(Stub)是否有权限访问安全空间的文件二,如果判断通过,则加载文件二,应用程序运行,否则终止程序运行。进一步的,所述代码二为应用程序的的启动代码或者核心算法,所述代码一为应用程序除代码二以外的其它代码。进一步的,所述文件一为APK文件,文件二为JAR文件。进一步的,所述可加载内核模块程序(LKM)用于判断应用程序进程ID号是否与安全空间中对应的文件二提供的ID号一致,如果一致则加载运行,否则终止应用程序运行。本专利技术的技术构思是:程序开发者将自己开发的程序分成两部分,一部分为关键程序,一部分为不完整的部分应用程序,两者结合才能正常运行。将两部分都上传到android应用程序市场服务器上。应用程序市场服务器对关键代码进行加密处理,用户下载了不完整的部分程序后,首次运行需向服务器申请关键程序。获得服务器认证后方可下载关键程序,然后在客户端解密关键程序并存储到安全空间,经判断为合法权限后方可动态加载关键程序,从而可以正常运行应用程序。首次运行之后,关键程序存储在安全空间,每次运行不再需要从服务器下载。非法拷贝的不完整部分应用程序由于不能获得关键程序,将无法运行。与现有技术相比,本专利技术至少具有以下优点:(I)相比于目前一些主要的Android应用软件商店提供的版权保护措施,该方案不仅能保护Android应用软件的版权,由于盗版拷贝缺少应用软件的关键程序部分,将不能逆向获得应用软件的源码,因此还能对Android应用软件的源代码起到很好的保护作用。(2)由于本专利技术方法通过只针对应用软件中的开发者提供的关键程序加密,而不是针对应用程序完整的APK加密,大大提高了加密和解密的执行效率。【专利附图】【附图说明】图1是本专利技术的方法流程示意图。图2是本专利技术实施例中的android应用程序配置图。图3是本专利技术实施例中android应用程序防盗版系统服务器端原理框图。图4是本专利技术实施例中android应用程序防盗版系统客户端原理框图。【具体实施方式】为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。如图1所示,一种android应用程序防盗版的方法,包括如下步骤: SlO:将android应用程序拆分成两部本文档来自技高网
...

【技术保护点】
一种android应用程序防盗版的方法,其特性在于,包括如下步骤:S10:将android应用程序拆分成两部分代码:代码一中加入一个桩类(Stub.java)代码后编译成生成文件一;代码二编译生成文件二,上传所述两部分文件至服务器;S20:客户端下载运行所述android应用程序的文件一,其中桩(Stub)首先运行判断该客户端是否是第一次运行该应用程序,如果是则继续以下步骤,否则执行步骤S60;S30:客户端向服务器申请认证和下载文件二,服务器对所述申请进行认证,认证通过则继续,否则终止程序运行;S40:服务器对应用程序对应的文件二进行加密并发送给客户端;S50:客户端所述应用程序文件一的桩(Stub)解密文件二并将其存入到安全空间;S60:客户端启动可加载内核模块(LKM)程序判断应用程序桩(Stub)是否有权限访问安全空间的文件二,如果判断通过,则加载文件二,应用程序运行,否则终止程序运行。

【技术特征摘要】

【专利技术属性】
技术研发人员:霍梅梅吴明晖蔡建平吴剑钟孙霖王云武
申请(专利权)人:浙江大学城市学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1