[发明专利]一种针对Android预编译的代码保护方法有效

专利信息
申请号: 201610579934.4 申请日: 2016-07-21
公开(公告)号: CN106228041B 公开(公告)日: 2018-11-20
发明(设计)人: 谭毓安;高天星;宫含笑;李元章;张全新;马忠梅 申请(专利权)人: 北京理工大学
主分类号: G06F21/12 分类号: G06F21/12;G06F8/41
代理公司: 北京理工正阳知识产权代理事务所(普通合伙) 11639 代理人: 鲍文娟
地址: 100081 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要: 一种针对Android预编译的代码保护方法,通过构建提取处理单元、中间处理单元以及还原单元,对Android应用程序文件进行修改与处理,以保护代码。具体做法为在Android应用程序中增加.so文件作为还原单元;当应用程序安装后,通过提取处理单元获得目标方法的DEX代码和在OAT文件中的原生代码;通过中间单元对原生代码加密,嵌入到.so文件中,并清零DEX代码与原生代码;用户在运行Android应用程序目标方法时,输入密钥,经还原处理正常运行目标方法。本发明针对现有代码保护方法中DEX代码与OAT文件中的原生代码不能被彻底保护且不能使用口令进行动态还原的安全性缺陷,提出了一套切实可行的办法。
搜索关键词: 一种 针对 android 预编 代码 保护 方法
【主权项】:
1.一种针对Android预编译的代码保护方法,其特征在于:所述方法由Android应用程序预编译后的提取处理单元、Android应用程序预编译后的中间处理单元以及Android应用程序运行时的还原单元执行;所述方法对代码的保护是保护Android应用程序中某一个JAVA类方法,Android应用程序预编译后的提取处理单元由C语言编写实现,使用C语言能够方便的解析DEX文件和OAT文件的结构;并根据解析结果提取目标方法的DEX代码和目标方法在OAT文件中的原生代码;提取处理单元的实现封装在artTool.dll文件中;Android应用程序预编译后的中间处理单元对目标方法的DEX代码和目标方法在OAT文件中的原生代码进行清零、对目标方法在OAT文件中的原生代码进行加密、并保存在还原单元的封装文件.so文件中;中间处理单元不会改变存放DEX代码的DEX文件和OAT文件的结构;目标方法的DEX代码和目标方法在OAT文件中的原生代码被清零后,Android应用程序在运行目标方法时,在内存中加载的目标方法就是一块全零的区域;中间处理单元的清零与加密操作使用脚本语言自动完成,封装在artToolPack.py文件中;Android应用程序运行时的还原单元是使用JNI技术实现的,JNI技术可以令JAVA程序调用C++语言编写好的子程序,子程序编译好之后,会生成.so文件以供Android应用程序调用;一个Android应用程序对其专有的.so文件的访问是允许的,利用这一特性,将中间单元生成的加密的目标方法在OAT文件中的原生代码存放在上述生成的.so文件中,以供用户运行应用程序时进行提取;在目标方法还原前,还原单元会请求用户输入密钥,并进行密钥的加载;还原单元的实现逻辑封装在.so文件中;Android应用程序预编译后的提取处理单元的功能为:通过C语言对Android应用程序的DEX文件与OAT文件进行解析;对目标方法的DEX代码和目标方法在OAT文件中的原生代码进行提取;Android应用程序预编译后的中间处理单元的功能为:将目标方法的DEX代码和目标方法在OAT文件中的原生代码清零,并将目标方法在OAT文件中的原生代码按特定密钥进行加密,并保存在.so文件中;Android应用程序运行时的还原单元的功能是:当用户启动Andorid应用程序,并在Android应用程序中准备执行目标方法时,对存放在.so文件中存放的目标方法在OAT文件中的原生代码进行提取、解密,并拷贝到内存指定位置,令内存中加载为正确的目标方法;所述针对Android预编译的代码保护方法,具体包括以下步骤:步骤A:由用户在Android应用程序中,添加密钥加载过程与目标方法解密还原过程(用JNI技术实现),并存放在JNI技术生成的.so文件中,即增加还原单元;步骤B:用户将由步骤A中修改过得到的Android应用程序安装到Android系统,使用提取处理单元提取Android应用程序预编译生成的OAT文件以及存在于Android系统中作为缓存的APK文件;步骤C:用户使用提取处理单元解析步骤B输出的缓存APK文件中的DEX代码与OAT文件,并提取目标方法的DEX代码与目标方法在OAT文件中的原生代码;步骤D:用户使用中间处理单元对步骤C提取的目标方法的DEX代码与目标方法在OAT文件中的原生代码进行清零,即将目标方法在OAT文件中的原生代码按代码长度写零,而在DEX代码中,仅保留某种指令,这种指令的类型称为invoke指令,其余指令均清零;步骤E:用户使用中间处理单元将步骤C提取的目标方法在OAT文件中的原生代码加密并嵌入到.so文件中;步骤F:用户将步骤D与步骤E得到的DEX代码打包成APK文件、并与OAT文件、.so文件一起上传到Android系统的Andorid应用程序目录中,覆盖Android系统中原有的APK文件、OAT文件与.so文件;步骤G:用户完成步骤A到F后,目标方法的DEX代码和目标方法在OAT文件中的原生代码已被保护;如用户想正常使用目标方法,则由用户启动Android应用程序,在执行目标方法前,由用户输入密钥,等待目标方法在OAT文件中的原生代码被还原单元还原后,即可正常执行目标方法。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

本文链接:http://www.vipzhuanli.com/patent/201610579934.4/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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