首页> 中国专利> 安卓系统的软件保护方法、软件应用方法及相关装置

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

摘要

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

著录项

  • 公开/公告号CN104751026A

    专利类型发明专利

  • 公开/公告日2015-07-01

    原文格式PDF

  • 申请/专利权人 中国移动通信集团公司;

    申请/专利号CN201310728826.5

  • 发明设计人 彭华熹;

    申请日2013-12-25

  • 分类号

  • 代理机构北京同达信恒知识产权代理有限公司;

  • 代理人郭润湘

  • 地址 100032 北京市西城区金融大街29号

  • 入库时间 2023-12-18 09:38:21

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-02

    授权

    授权

  • 2015-07-29

    实质审查的生效 IPC(主分类):G06F21/14 申请日:20131225

    实质审查的生效

  • 2015-07-01

    公开

    公开

说明书

技术领域

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

背景技术

随着移动互联网的迅速发展,智能移动终端越来越多,其中,在移动终端 系统中,安卓(Android)系统占据了较大比例。Android系统上的软件安装包 (apk,Android Package)主流开发语言为Java,Java语言相比于其他软件开 发语言而言,反编译、逆向修改较为容易,因此,攻击者通过反编译apk,嵌 入恶意代码、破解付费软件的计费点、嵌入垃圾广告插件等等,可能会导致用 户信息泄露、信息丢失,给用户带来损失,另一方面,也使软件的版权不能得 到保障,给软件开发者带来损失。

现有的Android软件保护方法主要为代码混淆,在软件发布前,对代码进 行代码混淆,代码混淆也称花指令,是将计算机程序代码转换成一种功能上等 价,但是难于阅读和理解的形式。但代码混淆只能对用户自定义的类、函数、 变量进行混淆处理,为了保证程序的正常运行,对系统应用程序编程接口(api, Application Programming Interface)、资源id、字符串id都不能进行混淆,这就 使得攻击者通过在代码中查找系统api、资源id、字符串id,将其进行替换或 修改,从而达到篡改apk的目的。因此,对于现有的Android软件保护方法, apk仍然比较容易被逆向分析、被篡改。

发明内容

本发明实施例提供一种安卓Android系统的软件保护方法、软件应用方法 及相关装置,用以解决现有技术中存在的apk容易被逆向分析、被篡改的问题。

本发明实施例提供一种Android系统的软件保护方法,包括:

获取待保护软件对应的第一代码;

将所述第一代码中的系统应用程序编程接口api函数代码,替换为用于以 字符串方式进行api调用的api字符串代码,得到与所述待保护软件对应的第 二代码;

通过扰乱处理程序对所述第二代码中的所述api字符串代码中的字符串进 行代码扰乱处理,得到与所述待保护软件对应的第三代码;

对所述第三代码以及所述扰乱处理程序对应的扰乱恢复程序进行打包处 理,得到所述待保护软件的最新安装包apk。

采用本发明实施例提供的方法,首先将待保护软件对应的第一代码中的系 统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的 api字符串代码,然后可以对api函数对应的字符串进行扰乱处理,并且打包时 将扰乱恢复程序一起打包,得到apk,以便在安装过程中对扰乱处理的字符串 进行恢复,这样,既保证了程序的正常运行,又避免了攻击者针对系统api进 行软件篡改的行为,增加了apk被逆向分析的难度。

相应的,本发明实施例还提供一种Android系统的软件保护装置,包括:

代码获取单元,用于获取待保护软件对应的第一代码;

替换单元,用于将所述第一代码中的系统应用程序编程接口api函数代码, 替换为用于以字符串方式进行api调用的api字符串代码,得到与所述待保护 软件对应的第二代码;

扰乱处理单元,用于通过扰乱处理程序对所述第二代码中的所述api字符 串代码中的字符串进行代码扰乱处理,得到与所述待保护软件对应的第三代 码;

打包单元,用于对所述第三代码以及所述扰乱处理程序对应的扰乱恢复程 序进行打包处理,得到所述待保护软件的最新安装包apk。

基于上述软件保护方法,本发明实施例还提供一种Android系统的软件应 用方法,包括:

获取所述最新安装包apk;

对所述最新apk进行解压,得到所述待保护软件对应的所述第三代码以及 所述扰乱恢复程序;

使用所述扰乱恢复程序对所述第三代码中的经过扰乱处理所述api字符串 代码中的字符串进行恢复,得到恢复后的所述待保护软件对应的所述第二代 码;

通过执行所述待保护软件对应的所述第二代码,完成所述最新apk的安装。

相应的,本发明实施例还提供一种Android系统的软件应用装置,包括:

安装包获取单元,用于获取所述最新安装包apk;

解压单元,用于对所述最新apk进行解压,得到所述待保护软件对应的所 述第三代码以及所述扰乱恢复程序;

扰乱恢复单元,使用所述扰乱恢复程序对所述第三代码中的经过扰乱处理 所述api字符串代码中的字符串进行恢复,得到恢复后的所述待保护软件对应 的所述第二代码;

执行单元,用于通过执行所述待保护软件对应的所述第二代码,完成所述 最新apk的安装。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明 书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可 通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获 得。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发 明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例提供的Android系统的软件保护方法的流程图之一;

图2为本发明实施例提供的Android系统的软件保护方法的流程图之二;

图3为本发明实施例提供的Android系统的软件应用方法的流程图;

图4为本发明实施例提供的Android系统的软件保护装置的结构示意图;

图5为本发明实施例提供的Android系统的软件应用装置的结构示意图。

具体实施方式

为了给出增加Android系统的软件安装包apk被逆向分析的难度的实现方 案,本发明实施例提供了一种安卓Android系统的软件保护方法、软件应用方 法及相关装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理 解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。 并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

本发明实施例提供一种安卓Android系统的软件保护方法,具体步骤如图 1所示,包括:

步骤101、获取待保护软件对应的第一代码。

步骤102、将该第一代码中的系统应用程序编程接口api函数代码,替换 为用于以字符串方式进行api调用的api字符串代码,得到与该待保护软件对 应的第二代码。

步骤103、通过扰乱处理程序对该第二代码中的该api字符串代码中的字 符串进行代码扰乱处理,得到与该待保护软件对应的第三代码。

步骤104、对该第三代码以及该扰乱处理程序对应的扰乱恢复程序进行打 包处理,得到该待保护软件的最新安装包apk。

在上述步骤101中,获取待保护软件对应的第一代码,可以是获取待保护 软件的源代码,将该源代码作为待保护软件对应的第一代码,即可以直接对待 保护软件的源代码采用本发明实施例提供的软件保护方法;如果在没有源代码 的情况下,也可以获取对待保护软件的源代码进行打包处理得到的原始安装包 apk,对该原始apk进行反编译,得到待保护软件反编译后的代码,作为该待 保护软件对应的第一代码,针对该第一代码采用本发明实施例提供的软件保护 方法对待保护软件进行保护。其中,对原始apk进行反编译,有多种方法,可 以通过相关反编译工具(如apktool),将apk反编译为smali代码,将smali代 码作为待保护软件对应的第一代码,采用的反编译方法与现有技术中相同,在 此不再赘述。

采用本发明实施例提供的方法,首先将待保护软件对应的第一代码中的系 统应用程序编程接口api函数代码,替换为用于以字符串方式进行api调用的 api字符串代码,然后可以对api函数对应的字符串进行扰乱处理,并且打包时 将扰乱恢复程序一起打包,得到apk,以便在安装过程中对扰乱处理的字符串 进行恢复,这样,既保证了程序的正常运行,又避免了攻击者针对系统api进 行软件篡改的行为,增加了apk被逆向分析的难度。

下面结合附图,用具体实施例对本发明提供的方法及装置和相应系统进行 详细描述。具体实施步骤如图2所示,包括:

步骤201、获取对待保护软件的源代码进行打包处理得到的原始安装包 apk。此处,原始安装包apk也可以是对待保护软件进行过其他保护处理后打 包得到的。

步骤202、对该原始apk进行反编译,本实施例通过反编译工具apktool 将apk反编译为smali代码,将该smali代码作为待保护软件对应的第一代码。

步骤203、将该第一代码中的系统应用程序编程接口api函数代码,替换 为用于以字符串方式进行api调用的api字符串代码,得到与待保护软件对应 的第二代码。

其中,将该第一代码中的系统应用程序编程接口api函数代码,替换为用 于以字符串方式进行api调用的api字符串代码,可以采用现有技术中的反射 调用机制调用系统api,具体的反射调用机制,通过Java代码举例说明。例如, 原有代码中通过getDeviceId函数获得移动设备身份码(IMEI,International  Mobile Equipment Identity),如下:

String imei=TelephonyManager.getDeviceId();

当对该getDeviceId函数采用反射调用机制时,将上述代码替换为:

Class c=Class.forName("TelephonyManager");

Class[]parameterTypes=new Class[1];

parameterTypes[0]=char[].class;

Method tt=c.getMethod("getDeviceId",parameterTypes);

char[]pp={''};

String imei=(String)tt.invoke(c.newInstance(),pp);

通过对该第一代码中的所有系统api函数采用如上方式进行处理之后,使 得所有系统api函数实现以字符串方式被调用,将替换之后得到的代码作为待 保护软件对应的第二代码。

步骤204、通过扰乱处理程序对该第二代码中的api字符串代码中的字符 串进行代码扰乱处理,得到与待保护软件对应的第三代码。其中,除了对字符 串进行扰乱处理之外,还可以对第二代码中的所有的资源id、字符串id进行代 码扰乱处理。

本步骤中,扰乱处理程序可以采用较为底层的语言开发,比如c语言、汇 编语言等不容易被逆向分析的语言,扰乱处理可以通过扰乱处理模块来实现, 该扰乱处理模块包含与扰乱处理程序对应的扰乱恢复程序。扰乱处理模块将字 符串/整数进行扰乱处理,扰乱处理可以采用现有技术中的3DES、AES等加密 算法实现,也可以通过自定义的扰乱算法实现。

例如,对字符串getDeviceId进行扰乱处理后,字符串“getDeviceId”替换 为“43fdgfdsfdsgrhdfd553dd3evcfdsfsd”无意义的字符串,则上述采用反射调用 机制处理的代码替换为:

Class c=Class.forName("TelephonyManager");

Class[]parameterTypes=new Class[1];

parameterTypes[0]=char[].class;

Method tt=c.getMethod(RAOLUAN("43fdgfdsfdsgrhdfd553dd3evcfdsfsd"),

parameterTypes);

char[]pp={''};

String imei=(String)tt.invoke(c.newInstance(),pp);

步骤205、对该第三代码以及该扰乱处理程序对应的扰乱恢复程序进行打 包处理,得到该待保护软件的最新安装包apk。其中,将扰乱恢复程序一起打 包,在apk安装时,能够对扰乱处理的字符串、资源id、字符串id进行恢复, 保证程序的正常运行。

采用本发明实施例的软件保护方法得到的最新安装包apk,对系统api字 符串、资源id、字符串id都进行了保护,增加了攻击者逆向分析的难度,使软 件更好的得到保护。

基于本发明实施例提供的上述Android系统的软件保护方法,本发明实施 例还提供一种Android系统的软件应用方法,如图3所示,包括:

步骤301、获取最新安装包apk。其中,该最新apk是经过上述软件保护 方法保护的apk。

步骤302、对该最新apk进行解压,得到待保护软件对应的第三代码以及 扰乱恢复程序。

步骤303、使用该扰乱恢复程序对该第三代码中的经过扰乱处理的api字 符串代码中的字符串进行恢复,得到恢复后的该待保护软件对应的第二代码。 其中,还包括对该第三代码中的经过扰乱处理的资源id、字符串id进行恢复。

步骤304、通过执行待保护软件对应的该第二代码,完成最新apk的安装。

基于同一发明构思,根据本发明上述实施例提供的Android系统的软件保 护方法,相应地,本发明另一实施例还提供了Android系统的软件保护装置, 应用于服务器,装置结构示意图如图4所示,具体包括:

代码获取单元401,用于获取待保护软件对应的第一代码;

替换单元402,用于将该第一代码中的系统应用程序编程接口api函数代 码,替换为用于以字符串方式进行api调用的api字符串代码,得到与该待保 护软件对应的第二代码;

扰乱处理单元403,用于通过扰乱处理程序对该第二代码中的该api字符 串代码中的字符串进行代码扰乱处理,得到与该待保护软件对应的第三代码;

打包单元404,用于对该第三代码以及该扰乱处理程序对应的扰乱恢复程 序进行打包处理,得到该待保护软件的最新安装包apk。

进一步的,代码获取单元401,具体用于获取待保护软件的源代码,作为 该待保护软件对应的第一代码;或者获取对待保护软件的源代码进行打包处理 得到的原始安装包apk,对该原始apk进行反编译,得到该待保护软件反编译 后的代码,作为该待保护软件对应的第一代码。

进一步的,扰乱处理单元403,具体用于对该第二代码中的该api字符串 代码中的字符串,以及资源id、字符串id进行代码扰乱处理。

上述各单元的功能可对应于图1至图2所示流程中的相应处理步骤,在此 不再赘述。

基于上述Android系统的软件保护装置,本发明实施例还提供一种Android 系统的软件应用装置,应用于运行Android系统的移动终端,装置结构示意图 如图5所示,包括:

安装包获取单元501,用于获取该最新安装包apk;

解压单元502,用于对该最新apk进行解压,得到该待保护软件对应的该 第三代码以及该扰乱恢复程序;

扰乱恢复单元503,使用该扰乱恢复程序对该第三代码中的经过扰乱处理 该api字符串代码中的字符串进行恢复,得到恢复后的该待保护软件对应的该 第二代码;

执行单元504,用于通过执行该待保护软件对应的该第二代码,完成该最 新apk的安装。

进一步的,扰乱恢复单元503,具体用于对该第三代码中的经过扰乱处理 的该api字符串代码中的字符串,以及资源id、字符串id进行恢复。

上述各单元的功能可对应于图3所示流程中的相应处理步骤,在此不再赘 述。

综上该,本发明实施例提供的方案,获取待保护软件对应的第一代码;将 该第一代码中的系统应用程序编程接口api函数代码,替换为用于以字符串方 式进行api调用的api字符串代码,得到与该待保护软件对应的第二代码;并 通过扰乱处理程序对该第二代码中的该api字符串代码中的字符串进行代码扰 乱处理,得到与该待保护软件对应的第三代码;以及对该第三代码以及该扰乱 处理程序对应的扰乱恢复程序进行打包处理,得到该待保护软件的最新安装包 apk。采用本发明实施例提供的方法,相比于现有技术,增加了对apk逆向分 析的难度,使apk更大程度得到保护。

本申请的实施例所提供的Android系统的软件保护装置可通过计算机程序 实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分 方式中的一种,如果划分为其他模块或不划分模块,只要Android系统的软件 保护装置具有上述功能,都应该在本申请的保护范围之内。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产 品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入 式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算 机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一 个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设 备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中 的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个 流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使 得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处 理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号