[发明专利]一种基于动态加解密的Android应用加固方法在审

专利信息
申请号: 201710331858.X 申请日: 2017-05-12
公开(公告)号: CN107169324A 公开(公告)日: 2017-09-15
发明(设计)人: 罗森林;尚海;潘丽敏;喻露 申请(专利权)人: 北京理工大学
主分类号: G06F21/14 分类号: G06F21/14;G06F21/16
代理公司: 暂无信息 代理人: 暂无信息
地址: 100081 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 动态 解密 android 应用 加固 方法
【说明书】:

技术领域

发明涉及一种Android应用加固方法,属于信息安全技术领域。

背景技术

从谷歌2007年推出Android系统至今,Android市场飞速发展,但Android平台编译生成的应用APK极易受到攻击。攻击者通过反编译、逆向工程等技术破解Android应用,窃取应用代码和用户数据,给应用使用带来很多不安全因素。因此,针对Android系统的防逆向就非常重要。通过对应用的加固,达到保护应用代码、反破解、反逆向、反植入等目的,从而保障Android应用的原生性和完整性。

从Android2.3开始,代码混淆技术开始使用。通过混淆源JAVA代码或者smali文件等方式。代码混淆在一定程度上减低了代码的可读性,保护了代码,可以抵抗对应用代码的静态分析,但是不能抵抗反编译或调试攻击,实际加固效果较差。

软件加壳技术是Android加固技术中重要的一项。软件加壳对源程序进行压缩或者加密。应用程序运行时,首先运行壳程序,对被压缩或加密的源程序进行解压缩或解密,还原出源程序并加载至内存执行。随着对Android应用和脱壳技术的研究,简单的压缩或者加密以及很难抵抗外在攻击,加固比较容易被突破。但过于复杂的加密也会减低程序的运行效率。软件加壳隐藏了应用程序源代码,有效地保护了应用程序。但“壳”程序自身也需要保护,防止被攻击者攻击。

发明内容

本发明的目的是为了保护Android应用程序,保护应用不被静态和动态分析,克服现有加固方法的不足,提出一种Android应用加固方法,对应用程序代码进行加密,对关键部分代码二次加密,实现保护应用代码与运行安全目的。

本发明的设计原理为:本发明涉及一种Android应用加固方法,属于信息安全技术领域。本发明包括代码加密、动态防御、完整性校验、动态加载四个模块。加密过程对Android应用程序class.dex加密,对核心代码二次加密,并对加密后的签名认证,将加密的结果嵌入资源文件。动态防御过程,检测调试器和模拟器,检测到被调试或运行在模拟器中退出应用程序。开启子进程,子进程和主进程相互ptrace监控,子进程循环检测调试器和模拟器,被调试则结束进程。完整性检测模块,认证签名信息,防止资源和代码被篡改。代码解密模块提取隐藏在图片中的加密信息,解密得到中间数据,对其中的核心代码部分二次解密,将解密后的结果直接加载至内存执行。

本发明的技术方案是通过如下步骤实现的:

步骤1,应用程序加密时,解压需要保护的Android应用APK文件,获取代码文件classes.dex,提取classes.dex中核心的方法代码,采用对称加密方法加密核心代码得到加密数据,将加密数据添加特殊起止标志位后,替换class.dex中关键代码,生成新的dex文件。

步骤2,设定另一密钥K2,将步骤1中生成的dex文件加密,将加密后的文件嵌入资源文件。

步骤3,对嵌入后的资源文件做签名,将两次加密密钥K1、K2,签名验证信息和解密程序、文件提取程序存入到so文件中,重新打包应用程序,签名生成新的APK文件。

步骤4,动态防御。应用程序运行时,主进程检测当前系统运行环境是否为模拟器或调试机、当检测到运行在模拟器和调试机、直接退出程序运行;主进程fork出子进程,主进程和子进程相互ptrace监控;子进程定时检测调试机和模拟器,检测到应用正在被调试,子进程退出,主进程监控到子进程已退出时,退出应用程序。

步骤5,完整性检测。提取so文件中的签名信息、验证签名信息是否正确。

步骤6,动态加载。应用程序运行时,提取资源文件中的加密文件和so库中的密钥K1、K2,利用K2对加密文件解密,得到中间代码,定位到关键代码加密位置,提取关键代码的加密数据,利用K1对关键代码解密,获取原始class.dex代码,加载至内存。

有益效果

相比于现有的代码混淆加固方法,代码只是增加了代码看阅读难度,代码保护程度较弱,本发明对代码进行加密,能够更好的保护代码。

相比于软件加壳的加固方法,本发明对普通的代码一次加密,对关键代码二次加密,有效地保护了代码,特别是关键代码的保护。同时将加密的结果和密钥通过水印的方式嵌入图片,保护了加密结果。

附图说明

图1为本发明一种Android应用加固方法原理图;

图2为应用加密模块流程图;

图3为动态防御模块主进程检测流程图;

图4为动态防御模块子进程检测流程图;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201710331858.X/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top