[发明专利]一种基于随机混淆的Android软件协同加固方法有效
申请号: | 201710255286.1 | 申请日: | 2017-04-19 |
公开(公告)号: | CN107122629B | 公开(公告)日: | 2017-12-26 |
发明(设计)人: | 舒明雷;周书旺;王英龙;杨美红;杨明;魏诺;孔祥龙;高天雷 | 申请(专利权)人: | 山东省计算中心(国家超级计算济南中心) |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/60 |
代理公司: | 济南泉城专利商标事务所37218 | 代理人: | 支文彬 |
地址: | 250014 山东省济*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 随机 混淆 android 软件 协同 加固 方法 | ||
1.一种基于随机混淆的Android软件协同加固方法,其特征在于,包括如下步骤:
a)解压需要加固的Android软件,分别获得classes.dex文件和bin文件;
b)对classes.dex文件头header进行随机混淆,对classes.dex文件增加无用随机代码;
c)对源文件中的bin文件进行重命名并将原bin文件名称作为加载器名称,完成对加载器的重命名,重命名后的加载器loder将classes.dex与重命名后的bin文件隔离;
d)计算混淆后的classes.dex文件的hash值hash_dex,并对hash_dex进行加密,将加密后为hash_dex文件保存至加载器loder中;
e)计算加载器loder的hash值hash_loder,计算重命名后的bin文件hash值hash_core;
f)对重命名后的bin文件进行加密并生成密文ciphertext,将ciphertext、hash_loder和hash_core组成文件date;g)将date文件、bin文件以及混淆后的classes.dex文件进行重新签名,打包生成加固后的APK,
所述步骤b)中的随机混淆包括如下步骤:
b-1)利用整数随机函数生成一个随机数N,1500<N<2500;
b-2)计算机以N为参数并输入随机字符生成函数,生成一个长度length=N的byte数组;
b-3) 将长度为N的byte数组插入到dex头文件的第P个位置上,其中P=0x28+N%(0x70-0x28),
其中,0x70为dex头文件原始程度,0x28为magic、checksum、signature、fileSize和headerSize 5字段的长度和;
b-4) 对随机数N进行自定义加密,加密结果为8byte编码,并将8byte编码追加到dex文件尾部;
b-5) 更新dex文件校验码字段checksum,用于根据alder32算法校验dex文件除去magic、checksum两字段外的文件的正确性;
b-6) 更新dex文件哈希值字段signature,signature是利用SHA-1算法计算dex文件除去magic、checksum和signature三字段外的哈希值,用于判断文件完整性;
b-7) 更新dex文件长度字段fileSize的值为:fileSize=filesize+N+8;
b-8) 更新dex头文件长度字段headerSize的值为:headerSize=headerSize+N+8。
2.根据权利要求1所述的基于随机混淆的Android软件协同加固方法,其特征在于:所述步骤d)中的加密方式为AES加密。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东省计算中心(国家超级计算济南中心),未经山东省计算中心(国家超级计算济南中心)许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710255286.1/1.html,转载请声明来源钻瓜专利网。