[发明专利]代码混淆方法、代码运行方法及装置在审
申请号: | 201610076963.9 | 申请日: | 2016-02-03 |
公开(公告)号: | CN107038354A | 公开(公告)日: | 2017-08-11 |
发明(设计)人: | 孙泽夺;泮晓波;丁健生 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京博浩百睿知识产权代理有限责任公司11134 | 代理人: | 宋子良 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 混淆 方法 运行 装置 | ||
1.一种代码混淆方法,其特征在于,包括:
从目标应用程序中获取第一目标文件及第二目标文件;
解析所述第一目标文件及所述第二目标文件,按照预设规则生成混淆表,其中,所述混淆表中不包含从所述第二目标文件中解析出的对象名;
对所述第一目标文件执行静态替换操作;
按照所述混淆表,将所述第一目标文件的对象名混淆为与所述对象名对应的混淆名;
将混淆后的所述第一目标文件存入所述目标应用程序。
2.根据权利要求1所述的方法,其特征在于,所述从所述目标应用程序中获取所述第一目标文件及所述第二目标文件包括:
解压缩所述目标应用程序,得到所述第一目标文件;以及
反编译所述目标应用程序,得到所述第二目标文件。
3.根据权利要求1所述的方法,其特征在于,所述解析所述第一目标文件及所述第二目标文件,按照预设规则生成所述混淆表包括:
解析所述第一目标文件,得到所述第一目标文件中的对象名;
解析所述第二目标文件,得到所述第二目标文件中的对象名;
从所述第一目标文件中的对象名中,滤除所述第二目标文件中的对象名,得到不包含所述第二目标文件中的对象名的对象名集合;
根据所述对象名集合,生成所述混淆表。
4.根据权利要求1所述的方法,其特征在于,所述对所述第一目标文件执行静态替换操作包括:
修改所述第一目标文件中的函数调用关系以及常量,以使所述目标应用程序在运行时通过所述静态替换操作获取待调用的对象名,其中,所述函数调用关系包括影响类加载的关键函数的调用关系和/或类加载函数的调用关系,所述常量包括影响类加载的且与注解相关的常量。
5.根据权利要求4所述的方法,其特征在于,所述对所述第一目标文件执行静态替换操作还包括:
在所述第一目标文件中添加包含混淆前后映射转换方法的类;
处理含有第一调用的有关类加载的类,重新在所述含有第一调用的有关类加载的类中生成私有方法,并且将第一调用为第二调用,其中,所述第一调用为用于调用父类的调用,所述第二调用为用于调用类中的私有方法的调用;
对于有关类加载机制中继承自系统的类加载器但未实现类加载方法的类,重新在所述有关类加载机制中继承自系统的类加载器但未实现类加载方法的类中生成私有方法,并对私有方法进行重载调用。
6.根据权利要求1所述的方法,其特征在于,所述按照所述混淆表,将所述第一目标文件的对象名混淆为与所述对象名对应的混淆名包括:
解析所述混淆表,将对象名与混淆名的对应关系存放在哈希表中;
解析出所述第一目标文件中的对象名;
重新将解析出的对象名写入所述第一目标文件,其中,在写入所述解析出的对象名时,查询所述哈希表,将所述解析出的对象名混淆为与所述解析出的对象名对应的混淆名。
7.根据权利要求1所述的方法,其特征在于,所述将混淆后的所述第一目标文件存入所述目标应用程序包括:
将混淆后的所述第一目标文件进行压缩,并对混淆后的所述第一目标文件进行重新签名;
将预先配置的用于获取待调用的对象名的第三目标文件以及混淆后的所述第一目标文件打包写入所述目标应用程序。
8.根据权利要求7所述的方法,其特征在于,在将预先配置的用于获取待调用的对象名的第三目标文件以及混淆后的所述第一目标文件打包写入所述目标应用程序之后,所述方法还包括:
对所述目标应用程序进行重新签名。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述对象名包括以下一种或几种的组合:类名、方法名以及成员变量名。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610076963.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种EL型全电动汽车转移器
- 下一篇:一种管片快速卸载装置