[发明专利]一种安卓应用程序防逆向破解的加固方法、系统及解密方法有效
申请号: | 201611265457.0 | 申请日: | 2016-12-30 |
公开(公告)号: | CN106778103B | 公开(公告)日: | 2020-03-13 |
发明(设计)人: | 郑伟;龚蔚 | 申请(专利权)人: | 上海掌门科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京辰权知识产权代理有限公司 11619 | 代理人: | 郎志涛 |
地址: | 201203 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 应用程序 逆向 破解 加固 方法 系统 解密 | ||
本发明涉及一种安卓应用程序防逆向破解的加固的方法、系统及解密方法,其中加固方法及系统均利用apktool工具对Android应用程序反汇编成smali文件,遍历所有的类,添加clinit,使用apktool进行重新编译成DEX文件,对DEX加固用到的关键SO进行SO加固保护。解密方法为分布式按需加载类文件,判断系统环境,通过数学统计学探测虚拟机是否被篡改。应用本发明的加解密技术方案,为Android平台下的应用加解密提出了创新的思路和可行的技术解决途径,可用于对Android平台下的应用进行保护,防止程序被反编译等黑客手段攻击,保护商业软件的机密性、保护用户应用安全。
技术领域
本发明涉及基于移动终端应用加密技术领域,具体而言,本发明涉及一种安卓应用程序防逆向破解的加固方法、系统及解密方法。
背景技术
目前,由Google公司主导开发的Android操作系统已经是全球市场占有率最高的移动智能终端平台。Android的应用软件数量不断增长,并建立了良好的软件销售模式。与传统PC平台一样,Android应用软件的成功商业化,也引发了对它们的逆向分析和破解。
对应用软件的逆向分析(reversing analysis)包括:
一、对软件的可执行代码采用反汇编、反编译、调试等方法进行分析,以了解其代码的执行流程和算法实现等;
二、对软件的配置文件和数据文件进行分析,以获得这些文件的格式和语义等;
三、对软件的网络通信数据进行分析,以获得软件与服务器通信的协议格式、协议语义、数据加密方法和数据具体含义等。
其中,后两类分析建立在第一类分析的基础之上,即需要先分析可执行代码,才能进一步分析配置文件、数据文件、网络通信数据等。
通过逆向分析,攻击者可以获得软件中的商业机密。例如,在手机的反病毒软件中,恶意代码检测算法、特征匹配算法等可执行代码,以及恶意代码特征库等数据文件,一旦被攻击者逆向分析得到具体细节,既可能被其他同类软件所利用,也可能被恶意代码作者进行针对性防御或攻击。
另外,为避免逆向破解,现有技术中也存在多种方式来进行预防和避免,如申请号:201610279693.1通过smali代码混淆的方式对自己的android app进行保护,代码依然可以被反汇编和反编译,只是提高了理解代码所需要的时间;申请号:201610206483.x通过反汇编后的smali代码进行加密保护,然而无论是代码还是加密后的数据,都以文件形式长期存在于Android安装文件和Android设备之中,使用内存dump仍可完成破解,由此,对于Android应用来说,黑客还是可以找到蛛丝马迹进行逆向破解。
发明内容
鉴于现有技术中的上述缺陷或不足,期望能够提供一种安全性高、难以破解的方案。为了实现上述一个或多个目的,本申请提供了一种安卓应用程序防逆向破解的加固的方法和系统。
根据本发明的一个方面,本发明提供了
一种安卓应用程序防逆向破解的加固方法,包括以下步骤:
使用安卓安装包编译工具对安卓应用程序进行反向汇编,生成中间文件;
遍历生成中间文件中的类,对需要加载的类设置对应的类构造器;
抽取出除了类构造器和初始化函数之外的所有中间文件进行加密并存储;以及,
调用动态链接库对可执行文件进行加固。
优选的,在抽取出除了类构造器和初始化函数之外的所有中间文件进行加密之前,还包括:使用安卓安装包编译工具对上述设置了类构造器的中间文件进行汇编处理,重新编译成可执行文件。
优选的,对所述中间文件进行加密还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海掌门科技有限公司,未经上海掌门科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611265457.0/2.html,转载请声明来源钻瓜专利网。