[发明专利]基于smali流程混淆技术的Android应用加固方法在审
申请号: | 201611026123.8 | 申请日: | 2016-11-18 |
公开(公告)号: | CN106650341A | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 文伟平 | 申请(专利权)人: | 湖南鼎源蓝剑信息科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京万象新悦知识产权代理事务所(普通合伙)11360 | 代理人: | 黄凤茹 |
地址: | 410205 湖南省长沙市长沙高新*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 smali 流程 混淆 技术 android 应用 加固 方法 | ||
1.一种Android应用加固方法,基于smali流程混淆方法,应用加密、动态加载、JNI编程、完整性校验和代码混淆方法,通过改变Android应用源程序的加载流程,使得加固后的应用程序难以逆向,同时保证加固之后并不影响程序的正常执行;包括如下步骤:
1)在动态加载Android应用真正的dex文件之前,用AES加密算法加密真正的dex文件,得到加密后的dex文件class.dex.jar;
2)编写so函数库,执行如下操作;
21)使用JNI编写解密库decrytApp.so,将解密函数写在动态链接库中,用于解密所述加密后的dex文件;
22)使用JNI编写底层核心逻辑库Function.so,将程序的核心逻辑写在动态链接库中;
3)编写伪smali文件,用于程序的完整性校验和对加密后的dex文件class.dex.jar动态加载,由此达到混淆源程序的加载流程的目的,执行如下操作:
31)进行源程序的完整性检验;
32)动态加载加密后的真正的dex文件class.dex.jar;
由此完成对Android应用的加固,达到保护应用程序的目的。
2.如权利要求1所述Android应用加固方法,其特征是,步骤1)所述AES加密算法通过循环进行加密,包括多轮AES加密循环进行迭代运算;除最后一轮外,每轮AES加密循环都包含以下步骤:
11)轮密钥加:明文区块中的每一个字节与该次回合密钥做异或运算;
12)字节代替:通过S盒变换方法,用查找表的方式对矩阵中的字节进行置换;
13)行移位:对矩阵中的行进行循环移位;
14)列混淆:对矩阵中的列进行混合变换。
3.如权利要求2所述Android应用加固方法,其特征是,所述AES加密算法的密钥长度设定为128位,包括10轮迭代运算。
4.如权利要求1所述Android应用加固方法,其特征是,步骤2)具体使用Android NDK编写decrytApp.so和Function.so,包括如下步骤:
a)编写java文件,声明本地文件中的函数;
b)新建decryptApp.c文件,编写解密函数;
c)编写JNI入口函数;
d)编写Android.mk文件;
e)编译生成so库,包括decrytApp.so和Function.so。
5.如权利要求1所述Android应用加固方法,其特征是,步骤21)用C或C++编写解密函数,将解密函数写在动态链接库中。
6.如权利要求1所述Android应用加固方法,其特征是,步骤31)所述进行源程序的完整性检验,具体包括如下步骤:
311)计算Android应用程序的校验和,在所述应用程序中加入哨兵函数;
312)在所述应用程序正式运行之前,先启动哨兵函数,重新计算应用程序的校验和,并与之前的校验和进行对比;
313)当312)中重新计算得到校验和和311)中的校验和相同时,判断得到软件没有被篡改,继续运行;当二者不同时,判断得到软件被篡改,即所述Android应用被二次打包,终止运行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南鼎源蓝剑信息科技有限公司,未经湖南鼎源蓝剑信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611026123.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:双门衣柜
- 下一篇:电视柜(KV999)