首页 / 专利库 / 软件 / 软件套件 / 软件组件 / 软件代码 / 安卓系统的软件保护方法、软件应用方法及相关装置

安卓系统的软件保护方法、软件应用方法及相关装置

阅读:1034发布:2020-09-20

专利汇可以提供安卓系统的软件保护方法、软件应用方法及相关装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种安卓系统的 软件 保护方法、软件应用方法及相关装置,包括:获取待保护软件对应的第一代码;将该第一代码中的系统应用程序编程 接口 api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,得到与该待保护软件对应的第二代码;并通过扰乱处理程序对该第二代码中的该api字符串代码中的字符串进行代码扰乱处理,得到与该待保护软件对应的第三代码;以及对该第三代码以及该扰乱处理程序对应的扰乱恢复程序进行打包处理,得到该待保护软件的最新安装包apk。采用本发明 实施例 提供的方法,相比于 现有技术 ,增加了对apk逆向分析的难度,使apk更大程度得到保护。,下面是安卓系统的软件保护方法、软件应用方法及相关装置专利的具体信息内容。

1.一种安卓Android系统的软件保护方法,其特征在于,包括:
获取待保护软件对应的第一代码;
将所述第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,得到与所述待保护软件对应的第二代码;
通过扰乱处理程序对所述第二代码中的所述api字符串代码中的字符串,以及资源id、字符串id进行代码扰乱处理,得到与所述待保护软件对应的第三代码;
对所述第三代码以及所述扰乱处理程序对应的扰乱恢复程序进行打包处理,得到所述待保护软件的最新安装包apk。
2.如权利要求1所述的方法,其特征在于,获取待保护软件对应的第一代码,具体包括:
获取待保护软件的源代码,作为所述待保护软件对应的第一代码;或者
获取对待保护软件的源代码进行打包处理得到的原始安装包apk,对该原始apk进行反编译,得到所述待保护软件反编译后的代码,作为所述待保护软件对应的第一代码。
3.一种基于权利要求1所述的方法的安卓Android系统的软件应用方法,其特征在于,包括:
获取所述最新安装包apk;
对所述最新apk进行解压,得到所述待保护软件对应的所述第三代码以及所述扰乱恢复程序;
使用所述扰乱恢复程序对所述第三代码中的经过扰乱处理的所述api字符串代码中的字符串,以及资源id、字符串id进行恢复,得到恢复后的所述待保护软件对应的所述第二代码;
通过执行所述待保护软件对应的所述第二代码,完成所述最新apk的安装。
4.一种安卓Android系统的软件保护装置,其特征在于,包括:
代码获取单元,用于获取待保护软件对应的第一代码;
替换单元,用于将所述第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,得到与所述待保护软件对应的第二代码;
扰乱处理单元,用于通过扰乱处理程序对所述第二代码中的所述api字符串代码中的字符串,以及资源id、字符串id进行代码扰乱处理,得到与所述待保护软件对应的第三代码;
打包单元,用于对所述第三代码以及所述扰乱处理程序对应的扰乱恢复程序进行打包处理,得到所述待保护软件的最新安装包apk。
5.如权利要求4所述的装置,其特征在于,所述代码获取单元,具体用于获取待保护软件的源代码,作为所述待保护软件对应的第一代码;或者
获取对待保护软件的源代码进行打包处理得到的原始安装包apk,对该原始apk进行反编译,得到所述待保护软件反编译后的代码,作为所述待保护软件对应的第一代码。
6.一种基于权利要求4所述的装置的安卓Android系统的软件应用装置,其特征在于,包括:
安装包获取单元,用于获取所述最新安装包apk;
解压单元,用于对所述最新apk进行解压,得到所述待保护软件对应的所述第三代码以及所述扰乱恢复程序;
扰乱恢复单元,使用所述扰乱恢复程序对所述第三代码中的经过扰乱处理所述api字符串代码中的字符串,以及资源id、字符串id进行恢复,得到恢复后的所述待保护软件对应的所述第二代码;
执行单元,用于通过执行所述待保护软件对应的所述第二代码,完成所述最新apk的安装。

说明书全文

安卓系统的软件保护方法、软件应用方法及相关装置

技术领域

[0001] 本发明涉及信息安全领域,尤其涉及一种安卓系统的软件保护方法、软件应用方法及相关装置。

背景技术

[0002] 随着移动互联网的迅速发展,智能移动终端越来越多,其中,在移动终端系统中,安卓(Android)系统占据了较大比例。Android系统上的软件安装包(apk,Android Package)主流开发语言为Java,Java语言相比于其他软件开发语言而言,反编译、逆向修改较为容易,因此,攻击者通过反编译apk,嵌入恶意代码、破解付费软件的计费点、嵌入垃圾广告插件等等,可能会导致用户信息泄露、信息丢失,给用户带来损失,另一方面,也使软件的版权不能得到保障,给软件开发者带来损失。
[0003] 现有的Android软件保护方法主要为代码混淆,在软件发布前,对代码进行代码混淆,代码混淆也称花指令,是将计算机程序代码转换成一种功能上等价,但是难于阅读和理解的形式。但代码混淆只能对用户自定义的类、函数、变量进行混淆处理,为了保证程序的正常运行,对系统应用程序编程接口(api,Application Programming Interface)、资源id、字符串id都不能进行混淆,这就使得攻击者通过在代码中查找系统api、资源id、字符串id,将其进行替换或修改,从而达到篡改apk的目的。因此,对于现有的Android软件保护方法,apk仍然比较容易被逆向分析、被篡改。

发明内容

[0004] 本发明实施例提供一种安卓Android系统的软件保护方法、软件应用方法及相关装置,用以解决现有技术中存在的apk容易被逆向分析、被篡改的问题。
[0005] 本发明实施例提供一种Android系统的软件保护方法,包括:
[0006] 获取待保护软件对应的第一代码;
[0007] 将所述第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,得到与所述待保护软件对应的第二代码;
[0008] 通过扰乱处理程序对所述第二代码中的所述api字符串代码中的字符串进行代码扰乱处理,得到与所述待保护软件对应的第三代码;
[0009] 对所述第三代码以及所述扰乱处理程序对应的扰乱恢复程序进行打包处理,得到所述待保护软件的最新安装包apk。
[0010] 采用本发明实施例提供的方法,首先将待保护软件对应的第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,然后可以对api函数对应的字符串进行扰乱处理,并且打包时将扰乱恢复程序一起打包,得到apk,以便在安装过程中对扰乱处理的字符串进行恢复,这样,既保证了程序的正常运行,又避免了攻击者针对系统api进行软件篡改的行为,增加了apk被逆向分析的难度。
[0011] 相应的,本发明实施例还提供一种Android系统的软件保护装置,包括:
[0012] 代码获取单元,用于获取待保护软件对应的第一代码;
[0013] 替换单元,用于将所述第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,得到与所述待保护软件对应的第二代码;
[0014] 扰乱处理单元,用于通过扰乱处理程序对所述第二代码中的所述api字符串代码中的字符串进行代码扰乱处理,得到与所述待保护软件对应的第三代码;
[0015] 打包单元,用于对所述第三代码以及所述扰乱处理程序对应的扰乱恢复程序进行打包处理,得到所述待保护软件的最新安装包apk。
[0016] 基于上述软件保护方法,本发明实施例还提供一种Android系统的软件应用方法,包括:
[0017] 获取所述最新安装包apk;
[0018] 对所述最新apk进行解压,得到所述待保护软件对应的所述第三代码以及所述扰乱恢复程序;
[0019] 使用所述扰乱恢复程序对所述第三代码中的经过扰乱处理所述api字符串代码中的字符串进行恢复,得到恢复后的所述待保护软件对应的所述第二代码;
[0020] 通过执行所述待保护软件对应的所述第二代码,完成所述最新apk的安装。
[0021] 相应的,本发明实施例还提供一种Android系统的软件应用装置,包括:
[0022] 安装包获取单元,用于获取所述最新安装包apk;
[0023] 解压单元,用于对所述最新apk进行解压,得到所述待保护软件对应的所述第三代码以及所述扰乱恢复程序;
[0024] 扰乱恢复单元,使用所述扰乱恢复程序对所述第三代码中的经过扰乱处理所述api字符串代码中的字符串进行恢复,得到恢复后的所述待保护软件对应的所述第二代码;
[0025] 执行单元,用于通过执行所述待保护软件对应的所述第二代码,完成所述最新apk的安装。
[0026] 本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

[0027] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0028] 图1为本发明实施例提供的Android系统的软件保护方法的流程图之一;
[0029] 图2为本发明实施例提供的Android系统的软件保护方法的流程图之二;
[0030] 图3为本发明实施例提供的Android系统的软件应用方法的流程图;
[0031] 图4为本发明实施例提供的Android系统的软件保护装置的结构示意图;
[0032] 图5为本发明实施例提供的Android系统的软件应用装置的结构示意图。

具体实施方式

[0033] 为了给出增加Android系统的软件安装包apk被逆向分析的难度的实现方案,本发明实施例提供了一种安卓Android系统的软件保护方法、软件应用方法及相关装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0034] 本发明实施例提供一种安卓Android系统的软件保护方法,具体步骤如图1所示,包括:
[0035] 步骤101、获取待保护软件对应的第一代码。
[0036] 步骤102、将该第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,得到与该待保护软件对应的第二代码。
[0037] 步骤103、通过扰乱处理程序对该第二代码中的该api字符串代码中的字符串进行代码扰乱处理,得到与该待保护软件对应的第三代码。
[0038] 步骤104、对该第三代码以及该扰乱处理程序对应的扰乱恢复程序进行打包处理,得到该待保护软件的最新安装包apk。
[0039] 在上述步骤101中,获取待保护软件对应的第一代码,可以是获取待保护软件的源代码,将该源代码作为待保护软件对应的第一代码,即可以直接对待保护软件的源代码采用本发明实施例提供的软件保护方法;如果在没有源代码的情况下,也可以获取对待保护软件的源代码进行打包处理得到的原始安装包apk,对该原始apk进行反编译,得到待保护软件反编译后的代码,作为该待保护软件对应的第一代码,针对该第一代码采用本发明实施例提供的软件保护方法对待保护软件进行保护。其中,对原始apk进行反编译,有多种方法,可以通过相关反编译工具(如apktool),将apk反编译为smali代码,将smali代码作为待保护软件对应的第一代码,采用的反编译方法与现有技术中相同,在此不再赘述。
[0040] 采用本发明实施例提供的方法,首先将待保护软件对应的第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,然后可以对api函数对应的字符串进行扰乱处理,并且打包时将扰乱恢复程序一起打包,得到apk,以便在安装过程中对扰乱处理的字符串进行恢复,这样,既保证了程序的正常运行,又避免了攻击者针对系统api进行软件篡改的行为,增加了apk被逆向分析的难度。
[0041] 下面结合附图,用具体实施例对本发明提供的方法及装置和相应系统进行详细描述。具体实施步骤如图2所示,包括:
[0042] 步骤201、获取对待保护软件的源代码进行打包处理得到的原始安装包apk。此处,原始安装包apk也可以是对待保护软件进行过其他保护处理后打包得到的。
[0043] 步骤202、对该原始apk进行反编译,本实施例通过反编译工具apktool将apk反编译为smali代码,将该smali代码作为待保护软件对应的第一代码。
[0044] 步骤203、将该第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,得到与待保护软件对应的第二代码。
[0045] 其中,将该第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,可以采用现有技术中的反射调用机制调用系统api,具体的反射调用机制,通过Java代码举例说明。例如,原有代码中通过getDeviceId函数获得移动设备身份码(IMEI,International Mobile Equipment Identity),如下:
[0046] String imei=TelephonyManager.getDeviceId();
[0047] 当对该getDeviceId函数采用反射调用机制时,将上述代码替换为:
[0048] Class c=Class.forName("TelephonyManager");
[0049] Class[]parameterTypes=new Class[1];
[0050] parameterTypes[0]=char[].class;
[0051] Method tt=c.getMethod("getDeviceId",parameterTypes);
[0052] char[]pp={''};
[0053] String imei=(String)tt.invoke(c.newInstance(),pp);
[0054] 通过对该第一代码中的所有系统api函数采用如上方式进行处理之后,使得所有系统api函数实现以字符串方式被调用,将替换之后得到的代码作为待保护软件对应的第二代码。
[0055] 步骤204、通过扰乱处理程序对该第二代码中的api字符串代码中的字符串进行代码扰乱处理,得到与待保护软件对应的第三代码。其中,除了对字符串进行扰乱处理之外,还可以对第二代码中的所有的资源id、字符串id进行代码扰乱处理。
[0056] 本步骤中,扰乱处理程序可以采用较为底层的语言开发,比如c语言、汇编语言等不容易被逆向分析的语言,扰乱处理可以通过扰乱处理模来实现,该扰乱处理模块包含与扰乱处理程序对应的扰乱恢复程序。扰乱处理模块将字符串/整数进行扰乱处理,扰乱处理可以采用现有技术中的3DES、AES等加密算法实现,也可以通过自定义的扰乱算法实现。
[0057] 例如,对字符串getDeviceId进行扰乱处理后,字符串“getDeviceId”替换为“43fdgfdsfdsgrhdfd553dd3evcfdsfsd”无意义的字符串,则上述采用反射调用机制处理的代码替换为:
[0058] Class c=Class.forName("TelephonyManager");
[0059] Class[]parameterTypes=new Class[1];
[0060] parameterTypes[0]=char[].class;
[0061] Method tt=c.getMethod(RAOLUAN("43fdgfdsfdsgrhdfd553dd3evcfdsfsd"),[0062] parameterTypes);
[0063] char[]pp={''};
[0064] String imei=(String)tt.invoke(c.newInstance(),pp);
[0065] 步骤205、对该第三代码以及该扰乱处理程序对应的扰乱恢复程序进行打包处理,得到该待保护软件的最新安装包apk。其中,将扰乱恢复程序一起打包,在apk安装时,能够对扰乱处理的字符串、资源id、字符串id进行恢复,保证程序的正常运行。
[0066] 采用本发明实施例的软件保护方法得到的最新安装包apk,对系统api字符串、资源id、字符串id都进行了保护,增加了攻击者逆向分析的难度,使软件更好的得到保护。
[0067] 基于本发明实施例提供的上述Android系统的软件保护方法,本发明实施例还提供一种Android系统的软件应用方法,如图3所示,包括:
[0068] 步骤301、获取最新安装包apk。其中,该最新apk是经过上述软件保护方法保护的apk。
[0069] 步骤302、对该最新apk进行解压,得到待保护软件对应的第三代码以及扰乱恢复程序。
[0070] 步骤303、使用该扰乱恢复程序对该第三代码中的经过扰乱处理的api字符串代码中的字符串进行恢复,得到恢复后的该待保护软件对应的第二代码。其中,还包括对该第三代码中的经过扰乱处理的资源id、字符串id进行恢复。
[0071] 步骤304、通过执行待保护软件对应的该第二代码,完成最新apk的安装。
[0072] 基于同一发明构思,根据本发明上述实施例提供的Android系统的软件保护方法,相应地,本发明另一实施例还提供了Android系统的软件保护装置,应用于服务器,装置结构示意图如图4所示,具体包括:
[0073] 代码获取单元401,用于获取待保护软件对应的第一代码;
[0074] 替换单元402,用于将该第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,得到与该待保护软件对应的第二代码;
[0075] 扰乱处理单元403,用于通过扰乱处理程序对该第二代码中的该api字符串代码中的字符串进行代码扰乱处理,得到与该待保护软件对应的第三代码;
[0076] 打包单元404,用于对该第三代码以及该扰乱处理程序对应的扰乱恢复程序进行打包处理,得到该待保护软件的最新安装包apk。
[0077] 进一步的,代码获取单元401,具体用于获取待保护软件的源代码,作为该待保护软件对应的第一代码;或者获取对待保护软件的源代码进行打包处理得到的原始安装包apk,对该原始apk进行反编译,得到该待保护软件反编译后的代码,作为该待保护软件对应的第一代码。
[0078] 进一步的,扰乱处理单元403,具体用于对该第二代码中的该api字符串代码中的字符串,以及资源id、字符串id进行代码扰乱处理。
[0079] 上述各单元的功能可对应于图1至图2所示流程中的相应处理步骤,在此不再赘述。
[0080] 基于上述Android系统的软件保护装置,本发明实施例还提供一种Android系统的软件应用装置,应用于运行Android系统的移动终端,装置结构示意图如图5所示,包括:
[0081] 安装包获取单元501,用于获取该最新安装包apk;
[0082] 解压单元502,用于对该最新apk进行解压,得到该待保护软件对应的该第三代码以及该扰乱恢复程序;
[0083] 扰乱恢复单元503,使用该扰乱恢复程序对该第三代码中的经过扰乱处理该api字符串代码中的字符串进行恢复,得到恢复后的该待保护软件对应的该第二代码;
[0084] 执行单元504,用于通过执行该待保护软件对应的该第二代码,完成该最新apk的安装。
[0085] 进一步的,扰乱恢复单元503,具体用于对该第三代码中的经过扰乱处理的该api字符串代码中的字符串,以及资源id、字符串id进行恢复。
[0086] 上述各单元的功能可对应于图3所示流程中的相应处理步骤,在此不再赘述。
[0087] 综上该,本发明实施例提供的方案,获取待保护软件对应的第一代码;将该第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的api字符串代码,得到与该待保护软件对应的第二代码;并通过扰乱处理程序对该第二代码中的该api字符串代码中的字符串进行代码扰乱处理,得到与该待保护软件对应的第三代码;以及对该第三代码以及该扰乱处理程序对应的扰乱恢复程序进行打包处理,得到该待保护软件的最新安装包apk。采用本发明实施例提供的方法,相比于现有技术,增加了对apk逆向分析的难度,使apk更大程度得到保护。
[0088] 本申请的实施例所提供的Android系统的软件保护装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要Android系统的软件保护装置具有上述功能,都应该在本申请的保护范围之内。
[0089] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0090] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0091] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0092] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈