[发明专利]一种DEX的保护方法有效
申请号: | 201811410423.5 | 申请日: | 2018-11-23 |
公开(公告)号: | CN109543369B | 公开(公告)日: | 2022-03-25 |
发明(设计)人: | 姚伟涛 | 申请(专利权)人: | 杭州哲信信息技术有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京君泊知识产权代理有限公司 11496 | 代理人: | 王程远 |
地址: | 310020 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 dex 保护 方法 | ||
本发明公开了一种DEX的保护方法,该方法包括:将待保护的DEX文件反编译为smali源码;然后将所述smali源码中需要保护的源码转换为C语言源码;再然后将转换的C语言源码修改为调用C语言函数;并将转换为的C语言源码混淆编译并生成so文件;最后将修改后的smali源码生成为保护后的DEX文件;所述so文件和所述保护后的DEX文件共同实现保护前的DEX文件的功能。本发明的有益效果为:通过使用源码转换技术将DEX文件中的代码转成另一种语言的源码来进行DEX文件隐藏,从而实现DEX文件保护。
技术领域
本发明涉及信息安全技术领域,具体而言,涉及一种DEX的保护方法。
背景技术
DEX保护是通过技术手段将DEX保护起来以期达到能最大限度防止其中的代码被窃取、修改和反编译。由于安卓的开源特性,DEX的反编译是无法阻止的,DEX被反编译后将输出smali语言的源码,所以DEX保护主要目的是防止代码被窃取和修改。目前现在的DEX保护技术主要有以下几种:
1、代码混淆:利用混淆工具将代码的类名、变量名混淆为自己定义的格式,增加了DEX被反编译后的源码的阅读难度,该方法使用ProGuard即可轻松实现;
2、DEX自校验:在DEX的代码中增加了对自身的完整性校验,以达到防止修改的目的;
3、隐藏DEX:将DEX代码隐藏起来,以达到防止代码被窃取和修改的目的,该方法需要预留一个代理在APK中,该代理在运行时将隐藏的DEX代码释放出来并加载运行;
4、DEX结构变形:利用DEX的文件结构,将其中的指令抽取出来用nop指令代替,在运行时,执行代码前将抽取掉的取令填充回去,以达到防止代码被窃取和修改的目的。
目前现有的DEX保护技术,其中代码混淆和自校验技术由于将DEX文件完全暴露,导致其很容易被突破,在目前的技术环境下,基本起不到保护作用;而隐藏DEX和结构变形技术,它们的核心理念是隐藏,但是隐藏并不意味着消失,所以它们的技术只是提高了破解的难度而已,一理破解者找到隐藏地点,那么代码也就完全暴露了。
发明内容
为解决上述问题,本发明的目的在于提供一种DEX的保护方法,主要解决DEX隐藏的问题,真正地做到让原有的DEX代码完全消失,以达到防止代码被窃取和修改的目的。
本发明提供了一种DEX的保护方法,该方法包括以下步骤:
步骤101:将待保护的DEX文件反编译为smali源码;
步骤102:将所述smali源码中需要保护的源码转换为C语言源码;
步骤103:将步骤102中转换的C语言源码修改为调用C语言函数;
步骤104:将转换为的C语言源码混淆编译并生成so文件;
步骤105:将步骤103修改后的smali源码生成为保护后的DEX文件;
作为本发明进一步的改进,步骤101中,使用apktool将待保护的DEX文件反编译为smali源码。
作为本发明进一步的改进,步骤102中,将所述smali源码中需要保护的方法的源码转换为C语言源码,但必须保持Java类中的属性定义,不能修改属性定义的源码。
作为本发明进一步的改进,步骤102中中具体包含:
步骤S1,对smali源码中需要保护的源码进行词法分析,将smali指令分解,去除注释和无关逻辑的代码,解析出常量、标签、指令操作符、寄存器和其他smali语法中包含的词条;
步骤S2,将步骤S1的结果进行分类并进行语法分析;
步骤S3,根据语法分析结果和上下文关系,生成C语言源码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州哲信信息技术有限公司,未经杭州哲信信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811410423.5/2.html,转载请声明来源钻瓜专利网。