一种ANDROID应用程序防盗版的方法及系统.pdf

上传人:Y948****062 文档编号:1492847 上传时间:2018-06-18 格式:PDF 页数:10 大小:592.93KB
返回 下载 相关 举报
摘要
申请专利号:

CN201310426325.1

申请日:

2013.09.18

公开号:

CN103473488A

公开日:

2013.12.25

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 21/14申请日:20130918|||公开

IPC分类号:

G06F21/14(2013.01)I

主分类号:

G06F21/14

申请人:

浙江大学城市学院

发明人:

霍梅梅; 吴明晖; 蔡建平; 吴剑钟; 孙霖; 王云武

地址:

310015 浙江省杭州市拱墅区湖州街51号

优先权:

专利代理机构:

杭州宇信知识产权代理事务所(普通合伙) 33231

代理人:

张宇娟

PDF下载: PDF下载
内容摘要

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

权利要求书

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

2.  根据权利要求1所述的android应用程序防盗版的方法,其特征在于,所述代码二为应用程序的的启动代码或者核心算法,所述代码一为应用程序除代码二以外的其它代码。

3.  根据权利要求2所述的android应用程序防盗版的方法,其特征在于,所述文件一为APK文件,文件二为JAR文件。

4.  根据权利要求1所述的android应用程序防盗版的方法,其特征在于,所述安全空间是在客户端的应用程序存储空间内开辟的一块存储区域。

5.  根据权利要求1至4中任一项所述的android应用程序防盗版的方法,其特征在于,所述步骤S60包括:可加载内核模块程序(LKM)判断应用程序进程ID号是否与安全空间中对应的文件二提供的ID号一致,如果一致则加载运行,否则终止应用程序运行。

6.  一种采用权利要求1所述方法的android应用程序防盗版系统,其特性在于,包括服务器端和客户端,其中所述服务器端包括:
存储模块:用于存储程序发布者上传的android应用程序的文件一和文件二;其中:所述文件一由android应用程序被拆分成两部分后的代码一加入一个桩类(Stub.java)代码后编译成生成,所述文件二由应用程序的另一部分代码二编译生成;
认证模块:对客户端的申请进行认证,认证通过则启动加密模块,否则终止程序运行;
加密模块:对文件二进行加密并将加密后的文件二发送给客户端;
所述客户端包括:
判断模块:判断下载的android应用程序的文件一是否是第一次在该客户端运行,如果是则向服务器端申请认证和下载文件二,否则启动可加载内核模块程序(LKM);
安全空间:设置于客户端的应用程序存储空间内的一块存储区域,只有获得授权的应用程序进程可以访问所述安全空间;
解密模块:对从服务器端收到的文件二进行解密并将其存入安全空间;
可加载内核模块(LKM):判断应用程序桩(Stub)是否有权限访问安全空间的文件二,如果判断通过,则加载文件二,应用程序运行,否则终止程序运行。

7.  根据权利要求6所述的android应用程序防盗版系统,其特征在于,所述代码二为应用程序的的启动代码或者核心算法,所述代码一为应用程序除代码二以外的其它代码。

8.  根据权利要求7所述的android应用程序防盗版系统,其特征在于,所述文件一为APK文件,文件二为JAR文件。

9.  根据权利要求6至8中的任一项所述的android应用程序防盗版系统,其特征在于,所述可加载内核模块(LKM)用于判断应用程序进程ID号是否与安全空间中对应的文件二提供的ID号一致,如果一致则加载运行,否则终止应用程序运行。

说明书

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

一种ANDROID应用程序防盗版的方法及系统.pdf_第1页
第1页 / 共10页
一种ANDROID应用程序防盗版的方法及系统.pdf_第2页
第2页 / 共10页
一种ANDROID应用程序防盗版的方法及系统.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种ANDROID应用程序防盗版的方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种ANDROID应用程序防盗版的方法及系统.pdf(10页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103473488 A(43)申请公布日 2013.12.25CN103473488A*CN103473488A*(21)申请号 201310426325.1(22)申请日 2013.09.18G06F 21/14(2013.01)(71)申请人浙江大学城市学院地址 310015 浙江省杭州市拱墅区湖州街51号(72)发明人霍梅梅 吴明晖 蔡建平 吴剑钟孙霖 王云武(74)专利代理机构杭州宇信知识产权代理事务所(普通合伙) 33231代理人张宇娟(54) 发明名称一种android应用程序防盗版的方法及系统(57) 摘要本发明提出了一种android应用程序防盗版的方。

2、法及系统,包括将android应用程序程序分成两部分:关键程序和不完整的部分应用程序,两者结合才能正常运行。将两部分都上传至服务器,服务器对关键代码进行加密处理,用户下载了不完整的部分程序后,首次运行需向服务器申请关键程序。获得服务器认证后方可下载关键程序,然后在客户端解密关键程序并存储到安全空间,经判断为合法权限后方可加载关键程序,以正常运行应用程序。首次运行之后,关键程序存储在安全空间,每次运行无需再从服务器下载。本发明不增加开发者的工作量,能过有效的防止应用程序被逆向工程和盗版。(51)Int.Cl.权利要求书2页 说明书4页 附图3页(19)中华人民共和国国家知识产权局(12)发明专利。

3、申请权利要求书2页 说明书4页 附图3页(10)申请公布号 CN 103473488 ACN 103473488 A1/2页21.一种android应用程序防盗版的方法,其特性在于,包括如下步骤:S10:将android应用程序拆分成两部分代码:代码一中加入一个桩类(Stub.java)代码后编译成生成文件一;代码二编译生成文件二,上传所述两部分文件至服务器;S20:客户端下载运行所述android应用程序的文件一,其中桩(Stub)首先运行判断该客户端是否是第一次运行该应用程序,如果是则继续以下步骤,否则执行步骤S60;S30:客户端向服务器申请认证和下载文件二,服务器对所述申请进行认证,认。

4、证通过则继续,否则终止程序运行;S40:服务器对应用程序对应的文件二进行加密并发送给客户端;S50:客户端所述应用程序文件一的桩(Stub)解密文件二并将其存入到安全空间;S60:客户端启动可加载内核模块(LKM)程序判断应用程序桩(Stub)是否有权限访问安全空间的文件二,如果判断通过,则加载文件二,应用程序运行,否则终止程序运行。2.根据权利要求1所述的android应用程序防盗版的方法,其特征在于,所述代码二为应用程序的的启动代码或者核心算法,所述代码一为应用程序除代码二以外的其它代码。3.根据权利要求2所述的android应用程序防盗版的方法,其特征在于,所述文件一为APK文件,文件二。

5、为JAR文件。4.根据权利要求1所述的android应用程序防盗版的方法,其特征在于,所述安全空间是在客户端的应用程序存储空间内开辟的一块存储区域。5.根据权利要求1至4中任一项所述的android应用程序防盗版的方法,其特征在于,所述步骤S60包括:可加载内核模块程序(LKM)判断应用程序进程ID号是否与安全空间中对应的文件二提供的ID号一致,如果一致则加载运行,否则终止应用程序运行。6.一种采用权利要求1所述方法的android应用程序防盗版系统,其特性在于,包括服务器端和客户端,其中所述服务器端包括:存储模块:用于存储程序发布者上传的android应用程序的文件一和文件二;其中:所述文件。

6、一由android应用程序被拆分成两部分后的代码一加入一个桩类(Stub.java)代码后编译成生成,所述文件二由应用程序的另一部分代码二编译生成;认证模块:对客户端的申请进行认证,认证通过则启动加密模块,否则终止程序运行;加密模块:对文件二进行加密并将加密后的文件二发送给客户端;所述客户端包括:判断模块:判断下载的android应用程序的文件一是否是第一次在该客户端运行,如果是则向服务器端申请认证和下载文件二,否则启动可加载内核模块程序(LKM);安全空间:设置于客户端的应用程序存储空间内的一块存储区域,只有获得授权的应用程序进程可以访问所述安全空间;解密模块:对从服务器端收到的文件二进行解。

7、密并将其存入安全空间;可加载内核模块(LKM):判断应用程序桩(Stub)是否有权限访问安全空间的文件二,如果判断通过,则加载文件二,应用程序运行,否则终止程序运行。7.根据权利要求6所述的android应用程序防盗版系统,其特征在于,所述代码二为应用程序的的启动代码或者核心算法,所述代码一为应用程序除代码二以外的其它代码。8.根据权利要求7所述的android应用程序防盗版系统,其特征在于,所述文件一为APK文件,文件二为JAR文件。权 利 要 求 书CN 103473488 A2/2页39.根据权利要求6至8中的任一项所述的android应用程序防盗版系统,其特征在于,所述可加载内核模块(。

8、LKM)用于判断应用程序进程ID号是否与安全空间中对应的文件二提供的ID号一致,如果一致则加载运行,否则终止应用程序运行。权 利 要 求 书CN 103473488 A1/4页4一种 android 应用程序防盗版的方法及系统技术领域0001 本发明涉及移动终端技术领域,尤其涉及一种android应用程序防盗版的方法及系统。背景技术0002 随着移动互联网的飞速发展,移动终端操作系统已经形成ios与android两大主阵营。基于android操作系统的应用程序采用主流编程语言Java。Java程序编译后生成字节码,运行在虚拟机上。对于android系统,采用Java编写的应用程序经编译后运行在。

9、Dalvik VM上的DEX字节码,应用程序所有的字节码文件打包成APK文件安装到android系统。当前,Java编程语言工具并没有对Java字节码采取有效保护措施,同时Java字节码文件的结构本身特点使其易于被逆向工程,从而存在源码安全问题。0003 因此,在目前的市场上,android应用程序正面临严重的盗版问题,被盗版的应用程序可能被植入病毒、广告,还可能被二次打包以及篡改,这些都严重损害了应用程序的开发者以及消费者的权益。针对这一情况,移动互联网的各个产业链都在做一些努力,来保护android应用程序的安全。目前,普遍采用的加密技术手段有:代码混淆、加密、水印等,但采用这些技术手段都。

10、给开发者带来了一定的工作量,而且即使采用了这些技术,应用程序仍然可以被逆向。Google曾经有提供LVL的反盗版机制,但很快就被破解了。因此,目前android应用市场上的盗版行为仍然十分盛行。发明内容0004 为解决上述问题,本发明提出了一种android应用程序防盗版的方法及系统,该方法不增加开发者的工作量,能过有效的防止应用程序被逆向工程和盗版。0005 为实现上述目的,本发明的技术方案为:一种android应用程序防盗版的方法,包括如下步骤:S10:将android应用程序拆分成两部分代码:代码一中加入一个桩类(Stub.java)代码后编译成生成文件一;代码二编译生成文件二,上传所述。

11、两部分文件至服务器;S20:客户端下载运行所述android应用程序的文件一,其中桩(Stub)首先运行判断该客户端是否是第一次运行该应用程序,如果是则继续以下步骤,否则执行步骤S60;S30:客户端向服务器申请认证和下载文件二,服务器对所述申请进行认证,认证通过则继续,否则终止程序运行;S40:服务器对应用程序对应的文件二进行加密并发送给客户端;S50:客户端所述应用程序文件一的桩(Stub)解密文件二并将其存入到安全空间;S60:客户端启动可加载内核模块(LKM)程序判断应用程序桩(Stub)是否有权限访问安全空间的文件二,如果判断通过,则加载文件二,应用程序运行,否则终止程序运行。000。

12、6 其中,所述代码二为应用程序的的启动代码或者核心算法,所述代码一为应用程序除代码二以外的其它代码。说 明 书CN 103473488 A2/4页50007 其中,所述文件一为APK文件,文件二为JAR文件。0008 进一步的,所述安全空间是在客户端的应用程序存储空间内开辟的一块存储区域。0009 进一步的,所述步骤S60包括:可加载内核模块程序(LKM)判断应用程序进程ID号是否与安全空间中对应的文件二提供的ID号一致,如果一致则加载运行,否则终止应用程序运行。0010 此外,本发明还提供了一种采用上述方法的android应用程序防盗版系统,包括服务器端和客户端,其中所述服务器端包括:存储模。

13、块:用于存储程序发布者上传的android应用程序的文件一和文件二;其中:所述文件一由android应用程序被拆分成两部分后的代码一加入一个桩类(Stub.java)代码后编译成生成,所述文件二由应用程序的另一部分代码二编译生成;认证模块:对客户端的申请进行认证,认证通过则启动加密模块,否则终止程序运行;加密模块:对文件二进行加密并将加密后的文件二发送给客户端;所述客户端包括:判断模块:判断下载的android应用程序的文件一是否是第一次在该客户端运行,如果是则向服务器端申请认证和下载文件二,否则启动可加载内核模块程序(LKM);安全空间:设置于客户端的应用程序存储空间内的一块存储区域,只有获。

14、得授权的应用程序进程可以访问所述安全空间;解密模块:对从服务器端收到的文件二进行解密并将其存入安全空间;可加载内核模块(LKM):判断应用程序桩(Stub)是否有权限访问安全空间的文件二,如果判断通过,则加载文件二,应用程序运行,否则终止程序运行。0011 进一步的,所述代码二为应用程序的的启动代码或者核心算法,所述代码一为应用程序除代码二以外的其它代码。0012 进一步的,所述文件一为APK文件,文件二为JAR文件。0013 进一步的,所述可加载内核模块程序(LKM)用于判断应用程序进程ID号是否与安全空间中对应的文件二提供的ID号一致,如果一致则加载运行,否则终止应用程序运行。0014 本。

15、发明的技术构思是:程序开发者将自己开发的程序分成两部分,一部分为关键程序,一部分为不完整的部分应用程序,两者结合才能正常运行。将两部分都上传到android应用程序市场服务器上。应用程序市场服务器对关键代码进行加密处理,用户下载了不完整的部分程序后,首次运行需向服务器申请关键程序。获得服务器认证后方可下载关键程序,然后在客户端解密关键程序并存储到安全空间,经判断为合法权限后方可动态加载关键程序,从而可以正常运行应用程序。首次运行之后,关键程序存储在安全空间,每次运行不再需要从服务器下载。非法拷贝的不完整部分应用程序由于不能获得关键程序,将无法运行。0015 与现有技术相比,本发明至少具有以下优。

16、点:(1)相比于目前一些主要的Android应用软件商店提供的版权保护措施,该方案不仅能保护Android应用软件的版权,由于盗版拷贝缺少应用软件的关键程序部分,将不能逆向获得应用软件的源码,因此还能对Android应用软件的源代码起到很好的保护作用。(2)由于本发明方法通过只针对应用软件中的开发者提供的关键程序加密,而不是针对应用程序完整的APK加密,大大提高了加说 明 书CN 103473488 A3/4页6密和解密的执行效率。附图说明0016 图1是本发明的方法流程示意图。0017 图2是本发明实施例中的android应用程序配置图。0018 图3是本发明实施例中android应用程序防。

17、盗版系统服务器端原理框图。0019 图4是本发明实施例中android应用程序防盗版系统客户端原理框图。具体实施方式0020 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。0021 如图1所示,一种android应用程序防盗版的方法,包括如下步骤:S10:将android应用程序拆分成两部分代码:代码一中加入一个桩类(Stub.java)代码后编译成生成文件一;代码二编译生成文件二,上传所述两部分文件至服务器;如图2所示,在本实施例中,优选将android应用程序源码10。

18、拆分成以下两部分:文件二为应用程序的关键源码13,可以是应用程序的启动代码或者核心算法,这部分的代码量建议小一些,便于加密和传输,并将其编译成JAR文件14;文件一为应用程序的其它源码12,其中加入一个桩(Stub.java)类,编译生成APK文件12。桩的作用有三个,其一,android客户端启动应用程序运行时,桩负责向应用程序市场服务器申请认证和关键程序,其二,当服务器通过认证并把加密后的关键程序传输给客户端后,桩负责解密关键程序并存入安全空间,其三,运行时桩负责动态加载关键程序。0022 S20:客户端下载运行所述android应用程序的APK文件,其中桩(Stub)首先运行判断该客户端。

19、是否是第一次运行该应用程序,如果是则继续以下步骤,否则执行步骤S60;S30:客户端向服务器申请认证和下载应用程序的JAR文件,服务器对所述申请进行认证,认证通过则继续,否则终止程序运行;S40:服务器对应用程序对应的JAR文件进行加密并发送给客户端;S50:客户端的应用程序APK文件的桩(Stub)解密JAR文件并将其存入到安全空间;所述安全空间是在客户端的应用程序存储空间内开辟的一块存储区域,只有获得授权的应用程序进程可以访问安全空间。0023 S60:客户端启动可加载内核模块(LKM)程序判断应用程序桩(Stub)是否有权限访问安全空间的JAR文件;通过判断应用程序进程ID号是否与安全空。

20、间中对应的JAR文件提供的ID号一致来判断是否有权限,如果ID号一致则判断通过,加载应用程序的JAR文件,应用程序运行,否则终止程序运行。0024 其中,非法拷贝的应用程序APK文件,其桩(Stub)没有向服务器申请相应的认证权限,因此无法通过LKM模块判断,也就无法启动应用程序运行。0025 客户端首次运行该应用程序之后,应用程序的JAR文件存储在安全空间,以后每次运行,只需动态加载即可,不再需要向服务器申请下载。0026 同时,本发明还提供了一种采用上述方法的android应用程序防盗版系统,包括说 明 书CN 103473488 A4/4页7服务器端和客户端,如图3所示,所述服务器端20。

21、包括:存储模块21:用于存储程序发布者上传的android应用程序的APK文件和JAR文件;认证模块22:对客户端的申请进行认证,认证通过则启动加密模块23,否则终止程序运行;加密模块23:对JAR文件进行加密并将加密后的JAR文件发送给客户端。0027 如图4所示,所述客户端30包括:判断模块34:判断下载的android应用程序的APK文件是否是第一次在该客户端运行,如果是则向服务器端申请认证和下载JAR文件,否则启动可加载内核模块程序(LKM)35;安全空间32:设置于客户端的用户应用程序存储空间内的一块存储区域,只有获得授权的应用程序进程可以访问所述安全空间32;解密模块33:对从服务。

22、器端收到的JAR文件进行解密并将其存入安全空间;可加载内核模块(LKM)35:判断应用程序桩(Stub)是否有权限访问安全空间的JAR文件,如果判断通过,则加载JAR文件,应用程序运行,否则终止程序运行。0028 其中,可加载内核模块(LKM)35通过判断应用程序进程ID号是否与安全空间32中对应的JAR文件提供的ID号一致来判断是否有权限,如果ID号一致则判断通过,加载应用程序的JAR文件,应用程序运行,否则终止程序运行。0029 以上实施例仅用以说明本发明的技术方案而非限定,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。说 明 书CN 103473488 A1/3页8图1说 明 书 附 图CN 103473488 A2/3页9图2图3说 明 书 附 图CN 103473488 A3/3页10图4说 明 书 附 图CN 103473488 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1