[发明专利]一种基于smali代码混淆的Android应用保护方法有效
申请号: | 201610279693.1 | 申请日: | 2016-04-28 |
公开(公告)号: | CN105956425B | 公开(公告)日: | 2018-07-24 |
发明(设计)人: | 房鼎益;刘方圆;汤战勇;陈晓江;赵贝贝;李政桥;龚晓庆;刑天璋;陈峰 | 申请(专利权)人: | 西北大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 西安恒泰知识产权代理事务所 61216 | 代理人: | 李婷 |
地址: | 710069 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于smali代码混淆的Android应用保护方法,针对Android中间语言smali进行混淆保护,不需要修改Android源码,不仅可以抵抗静态分析,而且反汇编之后的代码不正确,从而增加动态分析的难度。 | ||
搜索关键词: | 一种 基于 smali 代码 混淆 android 应用 保护 方法 | ||
【主权项】:
1.一种基于smali代码混淆的Android应用保护方法,其特征在于,包括以下步骤:步骤1,反编译待保护的应用UnProtect.apk,得到smali文件,针对smali文件中的指令进行混淆,得到混淆后的smali文件,对混淆后的smali文件重新编译形成可执行文件classes1.dex;步骤2,在可执行文件classes1.dex中,提取被混淆的指令所在方法中的所有字节码,并将所有字节码存储在存储结构newcode中,将可执行文件classes1.dex中被混淆的指令所在方法中的所有字节码用0填充,形成一个新的可执行文件classes2.dex;步骤3,利用动态加载技术加载可执行文件classes2.dex,从Android系统中的DexFile系统类中获取可执行文件classes2.dex的加载地址,根据加载地址,解析可执行文件classes2.dex获取被混淆的指令所在方法的内存地址,然后将存储在存储结构newcode中的字节码填充到内存地址的空间中;形成一个保护后的应用Protected.apk;所述步骤1中的smali文件中的指令,指的是smali文件中,将两个数值型变量存储在两个相邻的寄存器中的两条指令,以及关键函数调用指令;所述步骤1中针对smali文件中的指令进行混淆的方法包括:将两个数值型变量存储在两个相邻的寄存器中的指令进行混淆的方法为:将存储在两个相邻的寄存器中的两个32位的数值型变量存储成一个64位的数值型变量;对关键函数调用指令进行混淆的方法为:在关键函数调用指令和其下一条指令之间插入不透明谓词。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北大学,未经西北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610279693.1/,转载请声明来源钻瓜专利网。
- 上一篇:利用高浓度酸性机能水防治植物病虫害的方法
- 下一篇:认证方法及装置