CN110276174A - 基于安卓的双系统终端防止apk二次打包运行方法 - Google Patents
基于安卓的双系统终端防止apk二次打包运行方法 Download PDFInfo
- Publication number
- CN110276174A CN110276174A CN201910526146.2A CN201910526146A CN110276174A CN 110276174 A CN110276174 A CN 110276174A CN 201910526146 A CN201910526146 A CN 201910526146A CN 110276174 A CN110276174 A CN 110276174A
- Authority
- CN
- China
- Prior art keywords
- apk
- dynamic base
- android
- value
- program
- 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.)
- Withdrawn
Links
- 230000009977 dual effect Effects 0.000 title claims abstract description 25
- 238000012856 packing Methods 0.000 title claims abstract description 22
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000002452 interceptive effect Effects 0.000 claims abstract description 14
- 238000005516 engineering process Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 4
- 230000000052 comparative effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 4
- 230000000694 effects Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002787 reinforcement Effects 0.000 description 2
- 230000003014 reinforcing effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开基于安卓的双系统终端防止apk二次打包运行方法,利用二次打包后相关apk程序md5值会发生改变的特性,在apk程序嵌入动态库并在底层系统部署校验程序和基准md5值;进而,交互系统上的apk启动时由动态库获取apk程序的md5值并传输值底层系统的校验程序上,校验程序将接收的md5值与预存在底层系统指定位置的对应apk程序的基准md5值作比较,一旦比较不一致,则通知结束该apk程序的运行。本发明是让apk程序反编译后无法运行,使得apk程序不容易被干扰和破解。
Description
技术领域
本发明涉及基于安卓的双系统终端防止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程序不容易被干扰和破解。
Claims (6)
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程序的运行。
2.根据权利要求1所述的基于安卓的双系统终端防止apk二次打包运行方法,其特征在于:所述双系统终端的交互系统为安卓系统,底层系统为Linux系统或Windows系统。
3.根据权利要求1所述的基于安卓的双系统终端防止apk二次打包运行方法,其特征在于:步骤1中动态库采用蓝牙或socket与底层系统建立无线通信。
4.根据权利要求1所述的基于安卓的双系统终端防止apk二次打包运行方法,其特征在于:步骤1中的动态库为采用c或c++编写的可执行程序改名为.so的动态库。
5.根据权利要求1所述的基于安卓的双系统终端防止apk二次打包运行方法,其特征在于:步骤2中的校验程序为采用c或c++编写的可执行程序。
6.根据权利要求1所述的基于安卓的双系统终端防止apk二次打包运行方法,其特征在于:步骤3中apk程序启动时自动将动态库先加载至内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910526146.2A CN110276174A (zh) | 2019-06-18 | 2019-06-18 | 基于安卓的双系统终端防止apk二次打包运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910526146.2A CN110276174A (zh) | 2019-06-18 | 2019-06-18 | 基于安卓的双系统终端防止apk二次打包运行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110276174A true CN110276174A (zh) | 2019-09-24 |
Family
ID=67960997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910526146.2A Withdrawn CN110276174A (zh) | 2019-06-18 | 2019-06-18 | 基于安卓的双系统终端防止apk二次打包运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110276174A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099776A (zh) * | 2020-09-17 | 2020-12-18 | 重庆轩进软件有限公司 | 安卓系统防止二次打包修改方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021321A (zh) * | 2014-06-17 | 2014-09-03 | 北京奇虎科技有限公司 | 软件安装包的加固保护方法和装置 |
CN106155753A (zh) * | 2016-08-22 | 2016-11-23 | 广东欧珀移动通信有限公司 | 一种应用程序安装方法、装置和终端 |
CN109687974A (zh) * | 2018-12-26 | 2019-04-26 | 努比亚技术有限公司 | Apk验证方法、装置、移动终端及可读存储介质 |
-
2019
- 2019-06-18 CN CN201910526146.2A patent/CN110276174A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021321A (zh) * | 2014-06-17 | 2014-09-03 | 北京奇虎科技有限公司 | 软件安装包的加固保护方法和装置 |
WO2015192637A1 (zh) * | 2014-06-17 | 2015-12-23 | 北京奇虎科技有限公司 | 软件安装包的加固保护方法和装置 |
CN106155753A (zh) * | 2016-08-22 | 2016-11-23 | 广东欧珀移动通信有限公司 | 一种应用程序安装方法、装置和终端 |
CN109687974A (zh) * | 2018-12-26 | 2019-04-26 | 努比亚技术有限公司 | Apk验证方法、装置、移动终端及可读存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099776A (zh) * | 2020-09-17 | 2020-12-18 | 重庆轩进软件有限公司 | 安卓系统防止二次打包修改方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103399761B (zh) | 固件烧录方法及其装置 | |
US9177136B2 (en) | Information device, program, method, and computer readable recording medium for preventing execution of malicious program code | |
US20160142437A1 (en) | Method and system for preventing injection-type attacks in a web based operating system | |
US9323646B2 (en) | Hardware security module with means to selectively activate or inhibit debugging and corresponding debugging method | |
JP7134818B2 (ja) | 認証の加速のための信頼できるストレージデバイスでのチェックサムの生成 | |
US20080313401A1 (en) | Device for Processing Information and Working Method Thereof | |
CN103067392A (zh) | 一种基于Android终端的安全访问控制方法 | |
US11327739B2 (en) | Method and apparatus for improving runtime performance after application update in electronic device | |
CN101510157B (zh) | 一种输入法安装方法及装置 | |
KR101875225B1 (ko) | 가상 머신에 의한 실행을 위한 프로그래밍의 중간 코드의 보안 프로세스, 컴퓨터 프로그램 및 장치 | |
WO2015127842A1 (zh) | 信息安全设备实现多应用的方法、信息安全设备和系统 | |
CN103019755A (zh) | 嵌入式系统中多cpu的无线程序下载方法 | |
CN110276174A (zh) | 基于安卓的双系统终端防止apk二次打包运行方法 | |
CN115098139A (zh) | 固件更新方法、系统、下位机和存储介质 | |
US8079026B2 (en) | Job definition verification system, and method and program thereof | |
CN103885784A (zh) | 具有安全模块可插拔功能的Android平台构建方法 | |
JP2009506447A5 (zh) | ||
US9953157B2 (en) | Method and apparatus for protecting application program | |
CN107209815B (zh) | 用于使用返回导向编程的代码混淆的方法 | |
CN110276173A (zh) | 带服务器的双系统终端防止apk二次打包运行方法 | |
CN105335432A (zh) | oracle数据库访问方法 | |
CN112148709A (zh) | 数据迁移方法、系统及存储介质 | |
CN100363893C (zh) | 加载系统及方法 | |
US11716319B2 (en) | Software deployment certification | |
CN112596751B (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190924 |
|
WW01 | Invention patent application withdrawn after publication |