[发明专利]一种实现程序代码混淆的方法和系统有效
申请号: | 201610149574.4 | 申请日: | 2016-03-16 |
公开(公告)号: | CN107203707B | 公开(公告)日: | 2020-05-12 |
发明(设计)人: | 刘欢;屠寅海;刘文荣 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京国昊天诚知识产权代理有限公司 11315 | 代理人: | 黄熊 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 程序代码 混淆 方法 系统 | ||
本申请实施例公开了实现程序代码混淆的方法和系统。所述方法包括:读入不同模块的程序代码和与模块对应的keep规则,所述模块具有全局唯一标识;将不同模块的程序代码中的类/类成员添加到类池中,并将添加的类/类成员用对应模块的标识标记;将不同模块对应的keep规则添加到规则列表中,并将添加的keep规则用对应模块的标识标记;遍历规则列表中的每一Keep规则;在遍历到每一Keep规则时,将该Keep的标识及规则逐条匹配类池中的每个类或类成员,将标识相同且规则匹配成功的类/类成员移出所述类池;混淆类池中的类/类成员,输出混淆结果。利用本申请实施例,可以对多模块程序代码提供更好的支持。
技术领域
本申请涉及计算机软件技术领域,尤其涉及一种实现程序代码混淆的方法和系统。
背景技术
对一些解释型计算机语言,其发布出去的程序包往往是中间代码(如java的jar包)。中间代码中可能包含大量源代码信息,如java的jar中的.class文件,包含了源码中的类名、字段名和方法名。通过这些信息,结合一些成熟的分析工具,可以快速反编译出还原度很高的java源代码。
为了解决这一问题,提升程序的安全性,混淆技术应运而生。混淆技术主要包含命名混淆和流程混淆两大类。命名混淆和流程混淆都以不改变程序本身功能为基础,即混淆后的程序依然能正常运行。流程混淆则是修改程序的运行流程,如将递归改为循环、替换方法入口等。命名混淆主要是将程序代码中的各种元素,如包名、类名、成员名改写成无意义的名字。混淆的作用主要有两方面:首先是增加程序的安全性,通常代码中的命名都是有实际意义的词汇,混淆后变成无规则的短字符串,大大增加了通过反编译推导代码功能的难度;另一方面是精简程序大小,混淆后程序中的字符串更短,从而程序的体积更小,也能一定程度提升程序的加载和运行速度。
现有技术一种实现程序代码命令混淆的方法包括如下:
A1、读入程序的所有代码(如java的所有.class文件),并添加到类池(classpool);
A2、读入所有的Keep规则;
A3、将Keep规则逐条匹配类池中的每个类或类成员,若匹配成功,标记该类或类成员,向混淆结果集合中添加一项(原名和混淆名相同);
A4、混淆类池的所有类和类成员;
A5、输出混淆结果(mapping)。
之后,可以根据混淆结果重写被混淆程序的代码。
类池(class pool)是一种包含被混淆程序的所有类的容器,通常以Map实现。混淆初始化的时候可以将被混淆程序代码的所有类读入到该容器,以便后续进行Keep和混淆处理。另外,由于一些限制(如java的反射调用、第三方库接口等),程序中的某些字符串不能被混淆(混淆后会导致程序运行异常),因此需要配置Keep规则,确定哪些名字在混淆过程中保持不变。Keep规则通常以文本形式输入到混淆工具。Keep规则标明了混淆的处理过程中一些不能被混淆(如通过反射调用的类名)的类或成员的名字。通过配置keep规则,可以指定哪些类名或成员名需要保留不变。keep规则可以包含一些通配符,以匹配符合特定规则的类名或成员名。
上述现有技术的过程中,A1步骤中读入程序的所有代码,后续统一处理,而没有考虑程序代码中存在的模块结构。对于实际研发过程中,当程序规模达到一定程度,通常需要进行模块化解耦,即将程序按功能或依赖关系进行分块。还可以将不同的模块交由不同的团队进行开发维护。不同模块的混淆Keep规则可能会产生冲突,比如模块A需要Keep以“com.aaa”为前缀的类名,而模块B又希望混淆以“com.aaa”为前缀的类名,从而模块A的混淆影响到了模块B,要解决这样的冲突耗时费力,且不符合模块间解耦的原则。
可见,现有技术对多模块程序代码的混淆还不提供较好的支持。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610149574.4/2.html,转载请声明来源钻瓜专利网。