基于安卓的双系统终端防止apk二次打包运行方法技术方案

技术编号:22186506 阅读:29 留言:0更新日期:2019-09-25 03:44
本发明专利技术公开基于安卓的双系统终端防止apk二次打包运行方法,利用二次打包后相关apk程序md5值会发生改变的特性,在apk程序嵌入动态库并在底层系统部署校验程序和基准md5值;进而,交互系统上的apk启动时由动态库获取apk程序的md5值并传输值底层系统的校验程序上,校验程序将接收的md5值与预存在底层系统指定位置的对应apk程序的基准md5值作比较,一旦比较不一致,则通知结束该apk程序的运行。本发明专利技术是让apk程序反编译后无法运行,使得apk程序不容易被干扰和破解。

Dual-system terminal based on Android to prevent APK secondary packaging operation method

【技术实现步骤摘要】
基于安卓的双系统终端防止apk二次打包运行方法
本专利技术涉及基于安卓的双系统终端防止apk二次打包运行方法。
技术介绍
在现有的带安卓的双系统终端上,通常是以android做为一个交互系统,会集成很多的apk软件,这些apk软件往往会被人从终端上导出后,进行分析,然后二次打包,然后就成了竞争对后的产品。
技术实现思路
本专利技术的目的在于提供基于安卓的双系统终端防止apk二次打包运行方法。本专利技术采用的技术方案是:基于安卓的双系统终端防止apk二次打包运行方法,双系统终端中安卓作为交互系统且另一系统作为底层系统,方法包括以下步骤:步骤1,利用安卓的jni技术生成一具有通信功能的动态库,并将该动态库编译进APK程序中,步骤2,在双系统终端上将允许安装的apk程序的基准md5值事先写入到底层系统的指定位置,同时在底层系统上预装校验程序,校验程序与动态库之间无线通信连接;步骤3,apk程序启动时动态库获取安卓交互系统中程序目录下该APK的md5值,步骤4,动态库将读取的APK的md5值传输至底层系统的校验程序;步骤5,校验程序获取其指定位置存储的该APK程序的基准md5值,步骤6,校验程序比较基准md5值与动态库传输的md5值是否一致;并反馈比较结果至动态库;步骤7,动态库基于比较结果进行相应的处理;当md5值比较一致时,动态库允许该apk程序继续运行;否则,动态库结束该apk程序的运行。进一步地,所述双系统终端的交互系统为安卓系统,底层系统为Linux系统或Windows系统。进一步地,步骤1中动态库采用蓝牙或socket与底层系统建立无线通信。进一步地,步骤1中的动态库为采用c或c++编写的可执行程序改名为.so的动态库。进一步地,步骤2中的校验程序为采用c或c++编写的可执行程序。进一步地,步骤3中apk程序启动时自动将动态库先加载至内存。本专利技术采用以上技术方案,利用二次打包后相关apk程序md5值会发生改变的特性,在apk程序嵌入动态库并在底层系统部署校验程序和基准md5值;进而,交互系统上的apk启动时由动态库获取apk程序的md5值并传输值底层系统的校验程序上,校验程序将接收的md5值与预存在底层系统指定位置的对应apk程序的基准md5值作比较,一旦比较不一致,则通知结束该apk程序的运行。本专利技术的校验程序运行在单独的进程中,不行影响交互系统上apk程序的运行。现有技术中采用加固来防止二次打包,其需要加载dex插件进行运行,影响一定的性能;相对于现有技术而言,本专利技术无需要加载插件,性能更优。若该apk程序在非授权的终端上反编译并二次打包后,即使安装了也无法运行,由于底层系统没有对应的校验程序和基准md5,动态库将结束apk程序的运行,进而无法对其进行动态调试。现在的混淆工具和加固工具都是使得apk无法二次打包,本专利技术是让apk反编译后,无法运行。本专利技术使得apk程序不容易被干扰和破解。附图说明以下结合附图和具体实施方式对本专利技术做进一步详细说明;图1为本专利技术基于安卓的双系统终端防止apk二次打包运行方法的流程示意图。具体实施方式如图1所示,本专利技术公开了基于安卓的双系统终端防止apk二次打包运行方法,双系统终端中安卓作为交互系统且另一系统作为底层系统,方法包括以下步骤:步骤1,利用安卓的jni技术生成一具有通信功能的动态库,并将该动态库编译进APK程序中,步骤2,在双系统终端上将允许安装的apk程序的基准md5值事先写入到底层系统的指定位置,同时在底层系统上预装校验程序,校验程序与动态库之间无线通信连接;步骤3,apk程序启动时动态库获取安卓交互系统中程序目录下该APK的md5值,步骤4,动态库将读取的APK的md5值传输至底层系统的校验程序;步骤5,校验程序获取其指定位置存储的该APK程序的基准md5值,步骤6,校验程序比较基准md5值与动态库传输的md5值是否一致,并反馈比较结果至动态库;步骤7,动态库基于比较结果进行相应的处理;当md5值比较一致时,动态库允许该apk程序继续运行;否则,动态库结束该apk程序的运行。进一步地,所述双系统终端的交互系统为安卓系统,底层系统为Linux系统或Windows系统。进一步地,步骤1中动态库采用蓝牙或socket与底层系统建立无线通信。进一步地,步骤1中的动态库为采用c或c++编写的可执行程序改名为.so的动态库。进一步地,步骤2中的校验程序为采用c或c++编写的可执行程序。进一步地,步骤3中apk程序启动时自动将动态库先加载至内存。下面就本专利技术的工作原理做详细的说明:以交互系统时安卓系统,底层系统时Linux系统的双系统终端为例。(1)在授权的双系统终端上的将授权要安装apk程序的基准md5写入到linux系统的某个位置上。(2)事先用编程语言生成一个用于校验的可执行程序,如用c/c++生成一个可执行的程序,该校验程序的作用是先从liunx读取预存的基准md5值,判断后续apk的动态库传输的对应apk的md5值是否有被修改过,该校验程序可记为exe_A。(3)同时利用android的jni技术,用c/c++生成一个可执行的程序的作用是与exe_A进行通信,通信方程有蓝牙、socket等,记为an_exe_A,an_exe_A这个程序的作用是将apk的md5值传递增给exe_A,并由exe_A比较判断完后再将结果传递回来。(4)将an_exe_A的后缀名改为.so使其变为一个动态库,记为a.so;然后将该动态库放入android的apk程序中,一起编译进apk程序中;当apk程序启动时会自动将动态库加载到内存中。由于一般需授权的apk程序均为系统apk,所以apk程序有权限给a.so赋于可执行的权限,使得动态库能读写系统文件的权限。apk程序的其他部分变成一个可以执行的程序再将其运行起来。当a.so运行起来后,先从交互系统程序目录,即/system/app/目录下读取相应apk的md5值,如/system/app/tcm/tcm.apk,然后a.so将该md5值传递给exe_A,exe_A判断和存放在linux上的md5值是否一致,如果不一致,则让动态库结束相应apk的进程。本专利技术采用以上技术方案,利用二次打包后相关apk程序md5值会发生改变的特性,在apk程序嵌入动态库并在底层系统部署校验程序和基准md5值;进而,交互系统上的apk启动时由动态库获取apk程序的md5值并传输值底层系统的校验程序上,校验程序将接收的md5值与预存在底层系统指定位置的对应apk程序的基准md5值作比较,一旦比较不一致,则通知结束该apk程序的运行。本专利技术的校验程序运行在单独的进程中,不行影响交互系统上apk程序的运行。现有技术中采用加固来防止二次打包,其需要加载dex插件进行运行,影响一定的性能;相对于现有技术而言,本专利技术无需要加载插件,性能更优。若该apk程序在非授权的终端上反编译并二次打包后,即使安装了也无法运行,由于底层系统没有对应的校验程序和基准md5,动态库将结束apk程序的运行,进而无法对其进行动态调试。现在的混淆工具和加固工具都是使得apk无法二次打包,本专利技术是让apk反编译后,无法运行。本专利技术使得apk程序不容易被干扰和破解。本文档来自技高网...

【技术保护点】
1.基于安卓的双系统终端防止apk二次打包运行方法,双系统终端中安卓系统作为交互系统且另一系统作为底层系统,其特征在于:方法包括以下步骤:步骤1,利用安卓的jni技术生成一具有通信功能的动态库,并将该动态库编译进APK程序中,步骤2,在双系统终端上将允许安装的apk程序的基准md5值事先写入到底层系统的指定位置,同时在底层系统上预装校验程序,校验程序与动态库之间无线通信连接;步骤3,apk程序启动时动态库获取安卓交互系统中程序目录下该APK的md5值,步骤4,动态库将读取的APK的md5值传输至底层系统的校验程序;步骤5,校验程序获取其指定位置存储的该APK程序的基准md5值,步骤6,校验程序比较基准md5值与动态库传输的md5值是否一致,并反馈比较结果至动态库;步骤7,动态库基于比较结果进行相应的处理;当md5值比较一致时,动态库允许该apk程序继续运行;否则,动态库结束该apk程序的运行。

【技术特征摘要】
1.基于安卓的双系统终端防止apk二次打包运行方法,双系统终端中安卓系统作为交互系统且另一系统作为底层系统,其特征在于:方法包括以下步骤:步骤1,利用安卓的jni技术生成一具有通信功能的动态库,并将该动态库编译进APK程序中,步骤2,在双系统终端上将允许安装的apk程序的基准md5值事先写入到底层系统的指定位置,同时在底层系统上预装校验程序,校验程序与动态库之间无线通信连接;步骤3,apk程序启动时动态库获取安卓交互系统中程序目录下该APK的md5值,步骤4,动态库将读取的APK的md5值传输至底层系统的校验程序;步骤5,校验程序获取其指定位置存储的该APK程序的基准md5值,步骤6,校验程序比较基准md5值与动态库传输的md5值是否一致,并反馈比较结果至动态库;步骤7,动态库基于比较结果进行相应的处理;当md5值比较一致时,动态库允许该apk程序继续运行;...

【专利技术属性】
技术研发人员:冯振海
申请(专利权)人:福州数据技术研究院有限公司
类型:发明
国别省市:福建,35

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

1