[发明专利]一种防止源代码反编译的方法无效
申请号: | 201010134276.0 | 申请日: | 2010-03-29 |
公开(公告)号: | CN101807239A | 公开(公告)日: | 2010-08-18 |
发明(设计)人: | 刘正伟 | 申请(专利权)人: | 山东高效能服务器和存储研究院 |
主分类号: | G06F21/24 | 分类号: | G06F21/24 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 250014 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 防止 源代码 反编译 方法 | ||
技术领域
本发明涉及计算机软件源代码保护技术,具体来说涉及一种防止源代码反编译的方法,通过此方法有效的保护软件被反编译的难度。
背景技术
随着经济技术的飞速发展,软件作为辅助工具已经深入到各行各业当中。软件程序是人家设计者和软件编程人员的智慧的结晶,是公司的知识产权的体现。也是企业核心竞争力的一部分。因此,保护软件程序的版权,防止软件程序被盗版、被非法授权使用,具有很重要的现实意义。
传统的软件程序保护措施有:序列号保护、使用时间限制、软件加壳等;其具体实现就是:在软件程序中设置相应的功能模块,实现相应的保护功能,例如:防拷贝功能、限制使用时间功能等。破解者要达到破解软件的目的,通常采用以下这种方式:
这种方式也称为静态分析技术,就是利用反编译或反汇编技术得到源程序清单,进而分析软件程序的流程,了解各个模块所完成的功能,从而通过修改软件来达到盗取软件技术的目的。下面简要介绍反编译和反汇编技术:
使用高级语言编写的软件程序需要按照运行该软件程序的计算机的主机系统指令集(也可称为机器语言指令集),转换为由一条一条的主机系统指令(也可称为机器语言指令)构成的机器语言代码才能被计算机识别并执行。通常将转换前的程序称为源程序,转换后的程序为目标程序。
汇编语言是一种介于高级语言与计算机语言之间的低级语言,它与计算机语言相比有便于记忆、符合人类语言表达习惯的特性,机器语言与汇编语言之间存在几乎一一对应的映射关系。由机器语言目标代码得到的汇编程序的过程称为反汇编;由机器语言目标代码得到高级语言源程序的过程称为反编译。因此,只要获取到软件程序的机器语言目标代码,就能通过反汇编技术或者反编译技术将其转化成便于破解者理解的汇编语言程序或高级语言源程序。
目前通用的计算机体系中,不存在对静态分析技术的防范技术;另一方面,现有技术中存在众多功能强大的、对应于目前通用的主机系统指令集的调试器及相应的使用手册,使得破解者能够非常容易的进行反编译分析,导致现有的软件保护措施无法对软件程序的源代码进行有效的保护。
发明内容
本发明的目的是提供一种防止源代码反编译的方法,通过此方法有效的保护软件被反编译的难度。
本发明的目的是按以下方式实现的,在计算机系统中设置防止源代码反编译模块,包括:代码读取子模块、代码解析子模块、虚拟混淆子模块、数据存取子模块、混淆代码生成模块,其中:
代码读取子模块将一个文件集的代码全部读取到一个一维的字符串数组中,然后再对其进行分析,得到命名空间和类的信息;
代码解析子模块对于文件中的代码,进行如下处理:去除空行和前后空格和Tab符号、回车换行,去除调试信息,去除注释,合并跨行语句,通过代码读取子模块的预处理,让代码更易于被虚拟混淆子模块处理;
虚拟混淆子模块收集数据的程序集名称、属性、方法,程序集名称、属性、方法作为独立的混淆单元,将混淆后的程序集名称、属性、方法合成类,将类合成命名空间,最后将命名空间合成文件;
虚拟混淆子模块是由混淆模块接口模块、程序集混淆子模块、类混淆子模块、方法和属性混淆子模块组成,用于收集数据的程序集名称、属性、方法,然后将程序集名称、属性、方法作为独立的混淆单元,再将混淆后的程序集名称、属性、方法合成类,将类合成命名空间,最后将命名空间合成文件;
数据存取子模块根据数据程序集名称、方法、属性的定义,从预定义的数据混淆模块中读取混淆的格式方法,从而达到代码混淆的目的;
混淆代码生成模块根据虚拟混淆子模块和数据存取子模块将代码重新组成一个新的源代码文件,此源代码文件是经过混淆的,即使二进制文件被反汇编,看到的代码也是混淆过的非常难以理解逻辑比较复杂代码,代码比较多,基本上是没有可读性,从而达到代码保护的目的;
文件集中的代码经过预处理后,存放到一个一维字符串数组中,该数组的容量为所有代码的行数总和,一行代码放在数组中的一行,按代码的顺序存放;为每一个文件定义文件序列、Hash序列和字节序列。
本发明的优异效果是,采用本发明技术方案使得破解者很难对被保护的软件程序实施方向工程,即使反向成功了,也很难读懂代码。因此,可以较好的防备破解软件的反编译,从而可以在很大程度上保护软件程序的安全性。
附图说明
附图1是源代码混淆的流程图;
附图2是源代码混淆架构图;
附图3是源代码保护核心模块组成图。
具体实施方式
下面参照附图,对本发明的方法以一个具体实例来描述实现这一体系结构的过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东高效能服务器和存储研究院,未经山东高效能服务器和存储研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010134276.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种出水管口挡口装置
- 下一篇:一种座式抽水马桶