检测APP二次打包的方法、装置及移动终端制造方法及图纸

技术编号:18497662 阅读:25 留言:0更新日期:2018-07-21 20:27
本发明专利技术公开了一种检测APP二次打包的方法、装置及移动终端,用于检测APP打包生成的安装包是否经过二次打包处理,其中所述方法包括步骤:S1,扫描和分析APP源码,生成随机函数库,所述随机函数库包含一个或多个函数列表;S2,生成检测代码库,所述检测代码库包含一个或多个编码的代码段,其中所述检测代码库可以用作包含在一个或多个源程序中的可重复使用的代码段的源;S3,所述随机函数库把所述检测代码库中的代码片段随机插入到APP工程源码中;S4,编译生成具有二次打包检测功能的APK。本发明专利技术能有效对抗静态和动态分析。

Method, device and mobile terminal for detecting APP two times packing

The invention discloses a method, a device and a mobile terminal for detecting a two time package of APP, which is used to detect whether a package generated by a APP is packaged and processed two times. The method includes steps: S1, scanning and analyzing the source code of the APP, generating a random function library, and the random function library contains a list of one or more functions; The detection code base contains one or more code segments, in which the detection code library can be used as a source of reusable code segments contained in one or more source programs; S3, the random function library randomly inserts the code fragment in the detection code library into the APP project at random. In source code; S4, compiles and generates APK with two package detection functions. The invention can effectively combat static and dynamic analysis.

【技术实现步骤摘要】
检测APP二次打包的方法、装置及移动终端
本专利技术涉及一种检测APP二次打包的方法、装置及移动终端,属于Android系统领域。
技术介绍
因为Android平台的开放性和自由性,使其在快速发展的同时也吸引了越来越多恶意程序开发者的目光,在当前利益的驱使下,一些恶意开发者从官方市场中下载应用安装包,将正常的应用程序进行破解,更改应用程序中的广告库或者插入一些新的广告库,然后利用自己的签名对应用进行二次打包,并发布在应用商店中,这些应用只是在传播的过程中遭受到了恶意的篡改,应用本身并没有恶意行为;而另一些恶意开发者则会在应用中插入恶意代码模块,然后再次将应用打包并发布到应用市场中,一旦用户下载并安装后,这些恶意应用程序会在用户毫不知情的状况下,触发恶意扣费、系统破坏、隐私泄露、劫持短信等恶意行为这些行为不仅破坏市场秩序,侵犯开发者的知识产权和利益,最重要的是泄露用户隐私,给用户带来经济上的损失,使移动用户面临越来越多的安全问题。通常二次打包的步骤是:解包(反编译)-插入或篡改代码-生成新包-二次签名-运行,所以为了防止二次打包,只需要对是否篡改代码和二次签名这两点做检测,效果上只要检测其中一点就可以。现有的技术的问题在于,开发者通常在APP程序入口点加入二次打包校验代码,校验不通过,APP退出。无论是在Java代码或者Jni代码中实现,往往检测点过于简单而且单一。破解者通过反编译静态分析或者动态分析,找到检测代码,移除该代码就能绕过二次打包检测,造成安全隐患。二次打包检测的原理和方法对于开发者和破解者都是公开的,如果不能对抗静态和动态分析,那么二次打包保护就形同虚设。
技术实现思路
本专利技术目的在于提出一种检测APP二次打包的方法、装置及移动终端,以解决上述
技术介绍
中的不足之处。开发者通常在APP程序入口点加入二次打包校验代码,校验不通过,APP退出。无论是在Java代码或者Jni代码中实现,往往检测点过于简单而且单一。破解者通过反编译静态分析或者动态分析,找到检测代码,移除该代码就能绕过二次打包检测,造成安全隐患。二次打包检测的原理和方法对于开发者和破解者都是公开的,如果不能对抗静态和动态分析,那么二次打包保护就形同虚设。为了实现上述目的,本专利技术提供如下技术方案:一种检测APP二次打包的方法,所述检测APP二次打包的方法,具体步骤如下:S1,扫描和分析APP源码,生成随机函数库,所述随机函数库包含一个或多个函数列表;S2,生成检测代码库,所述检测代码库包含一个或多个编码的代码段,其中所述检测代码库可以用作包含在一个或多个源程序中的可重复使用的代码段的源;S3,所述随机函数库把所述检测代码库中的代码片段随机插入到APP工程源码中;S4,编译生成具有二次打包检测功能的APK。优选的,所述步骤S1包括:S101,设置随机函数库的生成规则,选取函数调用频率,随机分布选取敏感函数,插入函数的数量;S102,静态扫描APP代码工程中所有源码,生成包含所有函数信息的functions.map映射文件;S103,读取步骤S101中设置的随机函数库的生成规则,如不设置,默认规则为选取使用频率最高的100个函数;S104,不符合规则的函数,不处理;S105,符合规则的函数,根据规则生成随机函数库。优选的,所述步骤S2包括:S201,将二次打包检测代码,放入插件所在磁盘目录;S202,识别代码,生成检测代码库。优选的,所述步骤S3包括:读取所述检测代码库中所有代码片段列表,读取所述随机函数库中所有函数列表,所述代码片段列表有N个,所述函数列表有M个,所述M个函数列表可以和所述N个片段列表任意组合随机插入到APP工程源码中,组合的方式有M×N种。基于相同的技术构思,本专利技术还提供一种检测APP二次打包的装置,其特征在于,包括:解析模块,用于扫描和分析APP源码,生成随机函数库,所述随机函数库包含一个或多个函数列表;生成模块,用于生成检测代码库,所述检测代码库包含一个或多个编码的代码段,其中所述检测代码库可以用作包含在一个或多个源程序中的可重复使用的代码段的源;插入模块,用于所述随机函数库把所述代码片段随机插入到APP工程源码中;开发模块,用于编译生成具有二次打包检测功能的APK。所述解析模块还包括:选取子模块,用于设置生成随机函数库的规则,选取函数调用频率,随机分布选取敏感函数,插入函数的数量;扫描子模块,用于静态扫描APP代码工程中所有源码,生成包含所有函数信息的functions.map映射文件;读取子模块,用于读取步骤S101中设置的随机函数库的生成规则,如不设置,默认规则为选取使用频率最高的100个函数;判定子模块,用于判定不符合规则的函数不处理,符合规则的函数根据规则生成随机函数库。所述生成模块还包括:检测子模块,用于将二次打包检测代码,放入插件所在磁盘目录;识别子模块,用于识别代码,生成检测代码库。基于相同的技术构思,本专利技术还提供一种移动终端,其特征在于,包括:触敏显示器;存储器;一个或多个处理器;所述一个或多个处理器被配置为用于执行上述方法的步骤。上述检测APP二次打包的方法、装置及移动终端,扫描和分析APP源码,生成随机函数库,所述随机函数库包含一个或多个函数列表,其中设置生成随机函数库的规则,选取函数调用频率,随机分布选取敏感函数,插入函数的数量,静态扫描APP代码工程中所有源码,生成包含所有函数信息的functions.map映射文件,读取步骤S101中设置的随机函数库的生成规则,如不设置,默认规则为选取使用频率最高的100个函数,不符合规则的函数,不处理,符合规则的函数,根据规则生成随机函数库;生成检测代码库,所述检测代码库包含一个或多个编码的代码段,其中所述检测代码库可以用作包含在一个或多个源程序中的可重复使用的代码段的源,其中将二次打包检测代码,放入插件所在磁盘目录,识别代码,生成检测代码库;所述随机函数库把所述检测代码库中的代码片段随机插入到APP工程源码中,其中读取所述检测代码库中所有代码片段列表,读取所述随机函数库中所有函数列表,所述代码片段列表有N个,所述函数列表有M个,所述M个函数列表可以和所述N个片段列表任意组合随机插入到APP工程源码中,组合的方式有M×N种;编译生成具有二次打包检测功能的APK。与现有技术相比,本专利技术的有益效果是:降低了被二次打包的风险,增加破解难度和成本,提高了APP的安全性,能够对抗静态分析和动态分析,并且在整个APP生命周期内检测二次打包,有效防止APP被篡改。本专利技术的随机函数库,有效防止破解者分析和找出检测代码,检测代码库有效防止破解者根据检测代码统一特征实现自动化脚本去除检测代码。附图说明图1为一个实施例中检测APP二次打包方法的流程图;图2为一个实施例中生成随机函数库的流程图;图3为一个实施例中生成检测代码库的流程图;图4为一个实施例中插入检测代码库示意图;图5为一个实施例中选取使用频率最高的m个函数示意图;图6为一个实施例中检测APP二次打包装置的结构框图;图7为一个实施例中解析模块的结构框图;图8为一个实施例中生成模块的结构框图;图9为本专利技术实施例提供的移动终端部分结构的一实施例示意框图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中本文档来自技高网
...

【技术保护点】
1.一种检测APP二次打包的方法,其特征在于,所述检测APP二次打包的方法包括:S1,扫描和分析APP源码,生成随机函数库,所述随机函数库包含一个或多个函数列表;S2,生成检测代码库,所述检测代码库包含一个或多个编码的代码段,其中所述检测代码库可以用作包含在一个或多个源程序中的可重复使用的代码段的源;S3,所述随机函数库把所述检测代码库中的代码片段随机插入到APP工程源码中;S4,编译生成具有二次打包检测功能的APK。

【技术特征摘要】
1.一种检测APP二次打包的方法,其特征在于,所述检测APP二次打包的方法包括:S1,扫描和分析APP源码,生成随机函数库,所述随机函数库包含一个或多个函数列表;S2,生成检测代码库,所述检测代码库包含一个或多个编码的代码段,其中所述检测代码库可以用作包含在一个或多个源程序中的可重复使用的代码段的源;S3,所述随机函数库把所述检测代码库中的代码片段随机插入到APP工程源码中;S4,编译生成具有二次打包检测功能的APK。2.根据权利要求1所述的一种检测APP二次打包的方法,其特征在于,所述步骤S1包括:S101,设置随机函数库的生成规则,选取函数调用频率,随机分布选取敏感函数,插入函数的数量;S102,静态扫描APP代码工程中所有源码,生成包含所有函数信息的functions.map映射文件;S103,读取步骤S101中设置的随机函数库的生成规则,如不设置,默认规则为选取使用频率最高的100个函数;S104,不符合规则的函数,不处理;S105,符合规则的函数,根据规则生成随机函数库。3.根据权利要求1所述的一种检测APP二次打包的方法,其特征在于,所述步骤S2包括:S201,将二次打包检测代码,放入插件所在磁盘目录;S202,识别代码,生成检测代码库。4.根据权利要求1所述的一种检测APP二次打包的方法,其特征在于,所述步骤S3包括:读取所述检测代码库中所有代码片段列表,读取所述随机函数库中所有函数列表,所述代码片段列表有N个,所述函数列表有M个,所述M个函数列表可以和所述N个片...

【专利技术属性】
技术研发人员:张涛
申请(专利权)人:深圳壹账通智能科技有限公司
类型:发明
国别省市:广东,44

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

1