关于软件保护的矛与盾
2004-07-07 13:06
246 查看
这个世界,有矛就有盾,破解大师说:“Just a matter of time”,只不过是时间的问题而已。
每个作者都不希望自己的产品给破解,丢了客户,少赚了钱。软件保护应运而生,有能力的作者,自己给自己的产品添加了保护,方法很多,最经典的是用户注册,用户注册按区域可分本地注册和在线/联机注册,按功能可分安装注册和使用注册。
本地注册可再分:
1、作者给用户名和注册码,用户填写;
2、作者要求用户提供用户名,然后作者直接给一个许可文件,用户复制到指定目录便可;
联机注册可再分:
1、用户输入用户名和注册码,联机判断是否为黑名单,如果不是并且合法,则返回成功;
2、在线激活,这是Office/Windows XP开始搞的新玩意,Adobe公司也学了。实际上跟联机注册没有什么区别,关键是自动化高了点。
实际上,采用用户名和注册码这种做法比较多,导致了类似Serials这样的注册码大集合软件的出现,也衍生了大量的破解网站。
但大家也担心用户注册会给crack掉(如通用的注册Key、时间限制处理、直接修改注册判断等等),所以内置了各种反破解的方法:如
1、把关键字符串处理成不可阅读:这样那些依靠关键字来搜索破解入口的程序将难以实现其功能;
2、多点/随机判断:玩的就是抓迷藏,让你逮住了a也逮不了b;
3、伪装:写伪代码,让破解程序以为是判断入口;还有一种伪装就是把系统文件伪装成普通的Windows自带文件,让破解人无法识别是否为软件本身所有;
5、CRC:给每个文件弄个“身份证”,文件任何一个字节改动,都会判断出来;
6、内存中动态检测破解程序:程序从启动到关闭,始终检测是否有破解程序在运行,如果有,要么是关闭自己,要么是关闭破解程序;
5、关键数据加密:如使用次数、时间等等的限制,必然会要一个地方存储,如注册表、系统目录等等,破解程序就算能找到存放的地方,也难以破解。加密算法很多,常见的有xor、rc4、Blowfish、DES、Gost、Skipjack、Twofish、TEA、MD5(单向)、SHA等等,位数越高,越难破解。
如果作者不想那么辛苦,或者没有能力自己做,会选用保护程序,保护程序一般有以下几个功能:
1、用户注册;
2、时间、次数限制;
3、黑名单(用户和注册码);
4、版本过期;
之前的那个帖子,提到的Exe保护,就能实现上述的功能,而且是开源的。
有保护,也会有破解,我所接触的,是从DOS下就已经有破解这个东西了。
实际上,我觉得,知识产权是应该保护的,作者的辛勤劳动是值得尊重的。但要加密,如果需要1天的时间,解密,可能就只需要1分钟。这是作者的悲哀吗?不是的,因为这只是一个事实。我认为,作者与其把过多的心思放到保护上,倒不如放到业务逻辑处理上。
大家不是看见了Java如何容易给反编译?我自己就有破解Java的程序的源代码。连源代码能破解,那还有什么保护可言?.NET同理。
大家或许会说,不是有混淆器吗?是的,但仍然能反编译,现在的反编译功能牛得很。我尝试用Reflector反编译Reflector本身,代码出来虽然比较多的跳转和数字变量,估计用了混淆器,但核心代码仍然可见。
虽然我不鼓励大家搞开源,但我建议大家:多用心写代码吧!
附件:之前提到的一些加密代码(vb6/vb.net)
每个作者都不希望自己的产品给破解,丢了客户,少赚了钱。软件保护应运而生,有能力的作者,自己给自己的产品添加了保护,方法很多,最经典的是用户注册,用户注册按区域可分本地注册和在线/联机注册,按功能可分安装注册和使用注册。
本地注册可再分:
1、作者给用户名和注册码,用户填写;
2、作者要求用户提供用户名,然后作者直接给一个许可文件,用户复制到指定目录便可;
联机注册可再分:
1、用户输入用户名和注册码,联机判断是否为黑名单,如果不是并且合法,则返回成功;
2、在线激活,这是Office/Windows XP开始搞的新玩意,Adobe公司也学了。实际上跟联机注册没有什么区别,关键是自动化高了点。
实际上,采用用户名和注册码这种做法比较多,导致了类似Serials这样的注册码大集合软件的出现,也衍生了大量的破解网站。
但大家也担心用户注册会给crack掉(如通用的注册Key、时间限制处理、直接修改注册判断等等),所以内置了各种反破解的方法:如
1、把关键字符串处理成不可阅读:这样那些依靠关键字来搜索破解入口的程序将难以实现其功能;
2、多点/随机判断:玩的就是抓迷藏,让你逮住了a也逮不了b;
3、伪装:写伪代码,让破解程序以为是判断入口;还有一种伪装就是把系统文件伪装成普通的Windows自带文件,让破解人无法识别是否为软件本身所有;
5、CRC:给每个文件弄个“身份证”,文件任何一个字节改动,都会判断出来;
6、内存中动态检测破解程序:程序从启动到关闭,始终检测是否有破解程序在运行,如果有,要么是关闭自己,要么是关闭破解程序;
5、关键数据加密:如使用次数、时间等等的限制,必然会要一个地方存储,如注册表、系统目录等等,破解程序就算能找到存放的地方,也难以破解。加密算法很多,常见的有xor、rc4、Blowfish、DES、Gost、Skipjack、Twofish、TEA、MD5(单向)、SHA等等,位数越高,越难破解。
如果作者不想那么辛苦,或者没有能力自己做,会选用保护程序,保护程序一般有以下几个功能:
1、用户注册;
2、时间、次数限制;
3、黑名单(用户和注册码);
4、版本过期;
之前的那个帖子,提到的Exe保护,就能实现上述的功能,而且是开源的。
有保护,也会有破解,我所接触的,是从DOS下就已经有破解这个东西了。
实际上,我觉得,知识产权是应该保护的,作者的辛勤劳动是值得尊重的。但要加密,如果需要1天的时间,解密,可能就只需要1分钟。这是作者的悲哀吗?不是的,因为这只是一个事实。我认为,作者与其把过多的心思放到保护上,倒不如放到业务逻辑处理上。
大家不是看见了Java如何容易给反编译?我自己就有破解Java的程序的源代码。连源代码能破解,那还有什么保护可言?.NET同理。
大家或许会说,不是有混淆器吗?是的,但仍然能反编译,现在的反编译功能牛得很。我尝试用Reflector反编译Reflector本身,代码出来虽然比较多的跳转和数字变量,估计用了混淆器,但核心代码仍然可见。
虽然我不鼓励大家搞开源,但我建议大家:多用心写代码吧!
附件:之前提到的一些加密代码(vb6/vb.net)
相关文章推荐
- 关于查找流氓软件驱动保护的补充
- [软件人生]关于劳动关系中如何保护自己
- 关于软件设计分层的一些思考
- 关于录音录像软件项目的记录
- 关于开源软件安全性的探讨
- 关于开软件公司的一些前题
- 关于财务公司软件
- 关于android内存管理的原理,及相关自动内存管理软件原理 .
- MetaTrader软件的功能扩展(关于程序补丁制作的一个例子)
- 关于软件版本
- 关于软件测试及测试工具比较
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- 关于软件外包项目管理的几点体会(本文版权归吴兵本人所有,谢绝转载!谢谢!)
- 关于激活Bentley软件详细步骤介绍(再补充一个)
- 用autoruns揪出流氓软件的驱动保护
- 关于Android L软件安装问题的发现
- 关于软件这回事
- Oreans代码混淆,软件保护工具Code Virtualizer与Themida新版发布,下载戳这里!
- 关于Android开发软件图标尺寸
- 关于软件自动升级程序的设计方法