CN108304697A - 检测app二次打包的方法、装置及移动终端 - Google Patents

检测app二次打包的方法、装置及移动终端 Download PDF

Info

Publication number
CN108304697A
CN108304697A CN201711307046.8A CN201711307046A CN108304697A CN 108304697 A CN108304697 A CN 108304697A CN 201711307046 A CN201711307046 A CN 201711307046A CN 108304697 A CN108304697 A CN 108304697A
Authority
CN
China
Prior art keywords
function
code
library
detection
app
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201711307046.8A
Other languages
English (en)
Other versions
CN108304697B (zh
Inventor
张涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
OneConnect Financial Technology Co Ltd Shanghai
Original Assignee
OneConnect Financial Technology Co Ltd Shanghai
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by OneConnect Financial Technology Co Ltd Shanghai filed Critical OneConnect Financial Technology Co Ltd Shanghai
Priority to CN201711307046.8A priority Critical patent/CN108304697B/zh
Publication of CN108304697A publication Critical patent/CN108304697A/zh
Application granted granted Critical
Publication of CN108304697B publication Critical patent/CN108304697B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)

Abstract

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

Description

检测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源码,生成随机函数库,所述随机函数库包含一个或多个函数列表;
插件负责生成随机函数库,扫描检测代码库,插入检测代码,这些功能由插件自动完成,生成随机函数库的规则可在插件界面上设置。目前界面上有以下设置:设置随机函数库的方法规则,1)函数在代码中调用的频率,2)敏感函数,比如包含登录,交易,个人信息等敏感信息的函数,3)随机分布选取。设置随机函数库选取函数的数量,数量越多,防止重打包的效果越好,但性能越差,需要设置合适的数量。默认的选项,使用方法规则1),选取调用频率高的函数,数量默认使用100个;
插件通过扫描和分析APP源码,并根据S1中插件设置的生成随机函数库的规则生成需要插入检测代码片段的随机函数库,扫描源码过程中通过函数的类别,名称,参数信息,生成相应的函数id,确保函数的唯一性。插件将函数信息,函数id,使用频率以文本文件格式记录在functions.map映射文件中,生成随机函数库;
S2,生成检测代码库,所述检测代码库包含一个或多个编码的代码段,其中所述检测代码库可以用作包含在一个或多个源程序中的可重复使用的代码段的源;
检测代码库由插件生成,实现检测APP是否被二次打包的代码片段,采用Java和C编程语言实现,以文本文件格式写入以.code后缀文件,每一个代码片段对应一个.code文件,存储在插件所在目录。插件通过读取目录中的所有.code文件,提取代码片段,存储在数据库中;
S3,所述随机函数库把所述检测代码库中的代码片段随机插入到APP工程源码中;
插件把步骤S2生成的二次打包检测代码库中的代码片段,随机插入步骤S3生成的随机函数库中,这样就把检测代码片段插入到APP工程源码中;
S4,编译生成具有二次打包检测功能的APK。
通过开发工具编译生成具有二次打包检测功能的APK。
APK是AndroidPackage的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件和Sis一样,把Androidsdk编译的工程打包成一个安装程序文件,格式为APK。APK文件其实是Zip格式,但后缀名被修改为APK,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。
在本实施例中,开发工具使用了Android Studio,Android Studio是一个Android开发环境,基于IntelliJ IDEA(IntelliJ IDEA是Java编程语言开发撰写时所用的集成开发环境),类似Eclipse ADT,Android Studio提供了集成的Android开发工具用于开发和调试。
在一个实施例中,开发工具使用了Eclipse,Eclipse是一个开放源代码的、基于Java的可扩展开发平台。Eclipse是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
如图2所示,具体的,所述步骤S1包括:
S101,设置随机函数库的生成规则,选取函数调用频率,随机分布选取敏感函数,插入函数的数量;
利用二次打包生成模块提供的开发插件,在界面上设置插入检测代码的规则,目前界面上有以下设置:设置随机函数库的方法规则,1)函数在代码中调用的频率,2)敏感函数,例如包含登录,交易,个人信息等敏感信息的函数,3)随机分布选取。设置随机函数库选取函数的数量,数量越多,防止重打包的效果越好,但性能越差,需要设置合适的数量。默认的选项,使用方法规则1),选取调用频率高的函数,数量默认使用100个。
S102,静态扫描APP代码工程中所有源码,生成包含所有函数信息的functions.map映射文件;
插件静态扫描APP代码工程中所有源码,生成functions.map映射文件,该文件包含了所有函数信息。
S103,读取步骤S101中设置的随机函数库的生成规则,如不设置,默认规则为选取使用频率最高的100个函数;
生成随机函数库规则匹配,提取在插件界面中设置的规则,默认规则,选取使用频率最高的100个函数。
S104,不符合规则的函数,不处理;
functions.map映射文件记录了APP所有函数信息,包括函数id,类别,名称,参数以及使用频率。比如默认选取规则,使用频率最高的100个函数。把functions.map映射文件中记录的函数信息根据使用频率作从高到低的排序,排在前100的函数信息保留下来,其他的函数信息从文件中删除。
S105,根据规则生成随机函数库。
比如默认选取规则,使用频率最高的100个函数。把functions.map映射文件中记录的函数信息根据使用频率作从高到低的排序,排在前100的函数信息保留下来,其他的函数信息删除,保留下来的100个函数作为随机函数库。
如图3所示,具体的,所述步骤S2包括:
S201,将二次打包检测代码,放入插件所在磁盘目录;
编写二次打包检测代码,以.code后缀文件存在插件所在目录指定的存储位置。检测代码越多,破解实现的难度越大,目前APP重打包检测往往是单点检测,在某一个函数中加入APP签名校验,就是检查当前APP的签名与官方发布的签名是否一致,来判断是否被重新打包过。我们要求检测方法越多越好,来防止二次打包,比如APP签名校验,关键文件Hash校验,二次打包中代码篡改检测等,同样的检测方式用Java和C的代码各实现一遍,对于破解者来说既要破解Smali代码也要了解二进制,将增加破解成本。
从代码上实现多种方式检测,比如APP签名校验,文件Hash校验,Java反射代码实现,Jni代码等各种检测代码片段搜集起来,形成插入APP的检测代码片段库,代码实现的方式越多越好。
S202,识别代码,生成检测代码库。
插件自动识别代码,生成检测代码库。插件通过读取目录中的所有.code文件,提取代码片段,存储在数据库中,数据库中记录了所有检测代码片段以及检测类型。
具体地,所述步骤S3包括:
读取所述检测代码库中所有代码片段列表,读取所述随机函数库中所有函数列表,所述代码片段列表有N个,所述函数列表有M个,所述M个函数列表可以和所述N个片段列表任意组合随机插入到APP工程源码中,组合的方式有M×N种。
如图4所示,读取检测代码库中所有代码列表list[code n],读取随机函数库中所有函数列表list[function m],随机把code插入到function中,比如code1插入function5,code2插入function1中,插入的方式有M×N种。
随机选择插入函数,如图5所示,除了APP入口点外,我们要将检测代码随机分布在工程代码中,通过编写的开发插件,扫描整个APP工程的源代码,计算出代码中使用了多少个函数,图中所示的function1到function n,以及函数在静态代码中的使用次数(非动态实际使用频率),然后对每个函数的使用次数做排序,统计出使用次数最高的m个函数。插入代码的方式可以由开发人员配置,比如选择使用次数排序前50(数量可以设置)的函数作为随机函数库,或者从funtion1到funtion n随机选择一定数量的函数作为随机函数库。
基于相同的技术构思,本发明还提供一种检测APP二次打包的装置,如图6所示,该装置包括:
解析模块,扫描和分析APP源码,生成随机函数库,所述随机函数库包含一个或多个函数列表;
生成模块,用于生成检测代码库,所述检测代码库包含一个或多个编码的代码段,其中所述检测代码库可以用作包含在一个或多个源程序中的可重复使用的代码段的源;
插入模块,用于所述随机函数库把所述代码片段随机插入到APP工程源码中;
开发模块,用于编译生成具有二次打包检测功能的APK。
如图7所示,所述解析模块还包括:
选取子模块,用于设置生成随机函数库的规则,选取函数调用频率,随机分布选取敏感函数,插入函数的数量;
扫描子模块,用于静态扫描APP代码工程中所有源码,生成包含所有函数信息的functions.map映射文件;
读取子模块,用于读取步骤S101中设置的随机函数库的生成规则,如不设置,默认规则为选取使用频率最高的100个函数;
判定子模块,用于判定不符合规则的函数不处理,符合规则的函数根据规则生成随机函数库。
如图8所示,所述生成模块还包括:
检测子模块,用于将二次打包检测代码,放入插件所在磁盘目录;
识别子模块,用于识别代码,生成检测代码库。
基于相同的技术构思,本发明还挺提供一种移动终端,用于实现检测APP二次打包的方法,如图9所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(PersonalDigital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以移动终端为手机为例:
图9示出的是与本发明实施例提供的移动终端相关的手机的部分结构的框图。参考图9,手机包括:基带处理模块410、存储器420、输入单元430、显示单元440、传感器450、音频电路460、无线保真(Wireless Fidelity,WiFi)模块470、处理器480、以及电源490等部件。本领域技术人员可以理解,图9中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
基带处理模块410可用于合成即将发射的基带信号,或对接收到的基带信号进行解码。具体地说,就是发射时把音频信号编译成用来发射的基带码;接收时,把收到的基带码解译为音频信号。同时,也负责地址信息(手机号、网站地址)、文字信息(短讯文字、网站文字)、图片信息(彩信)的编译。
存储器420可用于存储软件程序以及模块,处理器480通过运行存储在存储器420的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元430可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元430可包括触控面板431以及其他输入设备432。触控面板431,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板431上或在触控面板431附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板431可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器480,并能接收处理器480发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板431。除了触控面板431,输入单元430还可以包括其他输入设备432。具体地,其他输入设备432可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元440可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元440可包括显示面板441,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板441。进一步的,触控面板431可覆盖显示面板441,当触控面板431检测到在其上或附近的触摸操作后,传送给处理器480以确定触摸事件的类型,随后处理器480根据触摸事件的类型在显示面板441上提供相应的视觉输出。虽然在图9中,触控面板431与显示面板441是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板431与显示面板441集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器450,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板441的亮度,接近传感器可在手机移动到耳边时,关闭显示面板441和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路460、扬声器461,传声器462可提供用户与手机之间的音频接口。音频电路460可将接收到的音频数据转换后的电信号,传输到扬声器461,由扬声器461转换为声音信号输出;另一方面,传声器462将收集的声音信号转换为电信号,由音频电路460接收后转换为音频数据,再将音频数据输出处理器480处理后,经RF电路410以发送给比如另一手机,或者将音频数据输出至存储器420以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块470可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块470,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器480是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器480可包括一个或多个处理单元;优选的,处理器480可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器480中。
手机还包括给各个部件供电的电源490(比如电池),优选的,电源可以通过电源管理系统与处理器480逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端所包括的处理器480还具有以下功能:
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种。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“移动终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“移动终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(MobileInternet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
本技术领域技术人员可以理解,本发明所述的用户界面/操作界面泛指能够用于向智能终端发送控制指令的显示界面,例如,可以为Android系统的设置页面中的一个选项(或按键,由所述应用程序添加其中,下同),也可以是从桌面呼出的通知栏或者交互页面中的一个选项,还可以是所述应用程序的一个活动组件所构造的页面中的一个选项。
本领域技术人员应当理解,本发明所称的“应用”、“应用程序”、“应用软件”以及类似表述的概念,是业内技术人员所公知的相同概念,是指由一系列计算机指令及相关数据资源有机构造的适于电子运行的计算机软件。除非特别指定,这种命名本身不受编程语言种类、级别,也不受其赖以运行的操作系统或平台所限制。理所当然地,此类概念也不受任何形式的终端所限制。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述实施例仅表达了本发明一些示例性实施例,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (8)

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个片段列表任意组合随机插入到APP工程源码中,组合的方式有M×N种。
5.一种检测APP二次打包的装置,其特征在于,包括:
解析模块,用于扫描和分析APP源码,生成随机函数库,所述随机函数库包含一个或多个函数列表;
生成模块,用于生成检测代码库,所述检测代码库包含一个或多个编码的代码段,其中所述检测代码库可以用作包含在一个或多个源程序中的可重复使用的代码段的源;
插入模块,用于所述随机函数库把所述代码片段随机插入到APP工程源码中;
开发模块,用于编译生成具有二次打包检测功能的APK。
6.根据权利要求4所述的一种检测APP二次打包的装置,其特征在于,所述解析模块包括:
选取子模块,用于设置生成随机函数库的规则,选取函数调用频率,随机分布选取敏感函数,插入函数的数量;
扫描子模块,用于静态扫描APP代码工程中所有源码,生成包含所有函数信息的functions.map映射文件;
读取子模块,用于读取步骤S101中设置的随机函数库的生成规则,如不设置,默认规则为选取使用频率最高的100个函数;
判定子模块,用于判定不符合规则的函数不处理,符合规则的函数根据规则生成随机函数库。
7.根据权利要求4所述的一种检测APP二次打包的装置,其特征在于,所述生成模块包括:
检测子模块,用于将二次打包检测代码,放入插件所在磁盘目录;
识别子模块,用于识别代码,生成检测代码库。
8.一种移动终端,其特征在于,包括:
触敏显示器;
存储器;
一个或多个处理器;
所述一个或多个处理器被配置为用于执行如权利要求1~4所述任意一项所述方法的步骤。
CN201711307046.8A 2017-12-11 2017-12-11 检测app二次打包的方法、装置及移动终端 Active CN108304697B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711307046.8A CN108304697B (zh) 2017-12-11 2017-12-11 检测app二次打包的方法、装置及移动终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711307046.8A CN108304697B (zh) 2017-12-11 2017-12-11 检测app二次打包的方法、装置及移动终端

Publications (2)

Publication Number Publication Date
CN108304697A true CN108304697A (zh) 2018-07-20
CN108304697B CN108304697B (zh) 2020-05-19

Family

ID=62870388

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711307046.8A Active CN108304697B (zh) 2017-12-11 2017-12-11 检测app二次打包的方法、装置及移动终端

Country Status (1)

Country Link
CN (1) CN108304697B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109711118A (zh) * 2018-12-29 2019-05-03 上海上讯信息技术股份有限公司 一种基于插件化的iOS安全编译器及安全编译方法
CN109858249A (zh) * 2019-02-18 2019-06-07 暨南大学 移动恶意软件大数据的快速智能比对和安全检测方法
CN110321674A (zh) * 2019-07-12 2019-10-11 北京智游网安科技有限公司 一种基于脚本程序的反调试方法、智能终端及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104392181A (zh) * 2014-11-18 2015-03-04 北京奇虎科技有限公司 So文件的保护方法、装置及安卓安装包的加固方法和系统
CN104484585A (zh) * 2014-11-26 2015-04-01 北京奇虎科技有限公司 一种应用程序安装包的处理方法、装置及移动设备
CN105335151A (zh) * 2014-08-14 2016-02-17 优视科技有限公司 安装文件的保护方法及装置
CN105512521A (zh) * 2015-12-25 2016-04-20 北京奇虎科技有限公司 一种软件安装包的加固保护方法和系统
CN105678120A (zh) * 2014-11-20 2016-06-15 中国移动通信集团公司 一种应用程序安全防护方法和服务器
CN106971098A (zh) * 2016-10-11 2017-07-21 阿里巴巴集团控股有限公司 一种防重打包的方法及其装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335151A (zh) * 2014-08-14 2016-02-17 优视科技有限公司 安装文件的保护方法及装置
CN104392181A (zh) * 2014-11-18 2015-03-04 北京奇虎科技有限公司 So文件的保护方法、装置及安卓安装包的加固方法和系统
CN105678120A (zh) * 2014-11-20 2016-06-15 中国移动通信集团公司 一种应用程序安全防护方法和服务器
CN104484585A (zh) * 2014-11-26 2015-04-01 北京奇虎科技有限公司 一种应用程序安装包的处理方法、装置及移动设备
CN105512521A (zh) * 2015-12-25 2016-04-20 北京奇虎科技有限公司 一种软件安装包的加固保护方法和系统
CN106971098A (zh) * 2016-10-11 2017-07-21 阿里巴巴集团控股有限公司 一种防重打包的方法及其装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109711118A (zh) * 2018-12-29 2019-05-03 上海上讯信息技术股份有限公司 一种基于插件化的iOS安全编译器及安全编译方法
CN109858249A (zh) * 2019-02-18 2019-06-07 暨南大学 移动恶意软件大数据的快速智能比对和安全检测方法
CN109858249B (zh) * 2019-02-18 2020-08-07 暨南大学 移动恶意软件大数据的快速智能比对和安全检测方法
CN110321674A (zh) * 2019-07-12 2019-10-11 北京智游网安科技有限公司 一种基于脚本程序的反调试方法、智能终端及存储介质
CN110321674B (zh) * 2019-07-12 2021-04-06 北京智游网安科技有限公司 一种基于脚本程序的反调试方法、智能终端及存储介质

Also Published As

Publication number Publication date
CN108304697B (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
Wang et al. Understanding the purpose of permission use in mobile apps
CN106294133B (zh) 一种应用程序安装包的检测方法、相关装置及系统
CN106874037B (zh) 应用程序安装方法、装置及移动终端
CN107908952B (zh) 识别真机和模拟器的方法、装置和终端
CN107329985B (zh) 一种页面的收藏方法、装置和移动终端
Senanayake et al. Android source code vulnerability detection: a systematic literature review
CN109558734A (zh) 一种堆栈安全性的检测方法及装置、移动设备
Chauhan et al. Characterization of early smartwatch apps
CN107622200A (zh) 应用程序的安全性检测方法及装置
US9443077B1 (en) Flagging binaries that drop malicious browser extensions and web applications
CN108898020A (zh) 基于代理端的漏洞检测方法、装置、移动终端和存储介质
CN108304697A (zh) 检测app二次打包的方法、装置及移动终端
US20140283044A1 (en) Method and Device For Preventing Application in an Operating System From Being Uninstalled
CN108399337A (zh) 用于识别网页挖矿脚本的方法及装置
CN107967427A (zh) 监测漏洞攻击的方法、装置及终端设备
CN109873794A (zh) 一种拒绝服务攻击的防护方法及服务器
CN108920220A (zh) 一种函数调用的方法、装置及终端
CN113449310A (zh) 一种应用程序漏洞检测方法、装置及设备
CN111596971B (zh) 应用清理方法、装置、存储介质及电子设备
Kennedy et al. Quantifying the effects of removing permissions from android applications
CN112527386B (zh) 应用程序发布方法及装置
Alzaidi et al. DroidRista: a highly precise static data flow analysis framework for android applications
CN109558732A (zh) 一种防止应用程序文件被篡改的方法及服务器
Tsvyatkova et al. Digital contact tracing apps for COVID-19: development of a citizen-centered evaluation framework
CN109522719A (zh) 应用安装包的加固检测方法、装置及移动终端

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant