在此有必要说明一下为何要为自己的程序进行加密,初步认为有以下两点:
1.保持软件的完整性
这里包括了文件名不被更改,文件版权信息不被更改,文件尺寸不被更改。
很多时候有的奸人拿到您的软件,他可以将文件名更改,将文件版权信息的字符串或图片更改,然后放上自己的东西,如放上病毒可以对其他电脑造成破坏,如果放奸人的弹出广告收益的是奸人,而不是作者。相反,使用这些软件的用户反而将作者痛骂一通,造成声誉上的损失。因此处于保护自己的完整权益来说,也是有必要保护软件的完整性。
例如QQ软件,曾出现过多款个人行为的补丁版,更改了QQ的一些信息与界面,为此QQ公司十分头痛,以后的一些事大家也知道,现在看是破解QQ的很少了,而且在安装QQ新版本时,它会检查是否有破解补丁存在,如果存在就不运行。
2、保护软件开发者的权益
也许你会说,一个不被破解的软件一定是一个没有加密的软件,那么看看下文您就会知道,那只是一个理想中的事情,除非您是有钱了没有事干的人,否则您开发软件的目的是什么我是很难知道的。
无论是个人还是公司,如果生产一个软件得不到收益,以及后继开发资金的鼓励,那么无疑这个软件是很难再开发下去的。这样的例子很多很多,我不想举例,国内已出现了很多软件的破解版,而一旦出现了破解,那么所造成的损失是非常大的。二.易语言程序加密的原则
早先人们的加密方法是通过在软盘上格式化一些非标准磁道,在这些磁道上写入一些数据,如软件的解密密钥等等。这种软盘成为“钥匙盘”。软件运行时用户将软盘插入,软件读取这些磁道中的数据,判断是否合法的“钥匙盘”。
软盘加密还有其它一些技术,如弱位加密等等。
随着近年来软盘的没落,这种方法基本上退出了历史舞台。新的软件加密技术也越来越多了。
1.加密前要考虑周到且严密
说实话,有很多人在易语言论坛上发贴,说自己用易语言编写的软件有了破解,还非常高兴,有人用才会被破解,但我想,如果是很高兴的这样子,除非你的软件技术含量很低,或你是微软,想被别人破解,您不应该高兴,这有点象别人打了你一耳光,你还很高兴,你的知识产权或著作权已被奸人侵犯了,性质很恶劣,后果很严重。除了拿起法律武器,劳命伤财,还有就是加强加密方式。
如果被制作出注册机,情况是最糟糕的,作者需要全部更换全部用户的注册KEY文件,工作量相当地相当地大。因此一个好的软件保护发布前必须考虑周到,而且是面面俱到,否则出一个新版,发现一个破解,再出一个新版去修正,那样的事情是极其弱智的。
2.需要加密的内容要制定一个计划
一开始不明白如何加密的易语言用户,一般就找一下论坛上关于注册的例程套用到自己的程序中,认为这样就是加密了,实际上本节所要讲的是制作一个学习计划,将所有需要用到的知识与软件都收集到,这个计划就是一个加密计划,也是本书所要讲述的。
3.加密时制作好文档,以备以后的修改
在加密中有可能使用了多处加密,因此需要将文档写好,以防止以后忘记,实际上您可以在易语言中使用备注的方式作以说明,这些备注在编译时是不会被编译进目标EXE文件中的,大家可以放心写,同时也节省了写外部文档的时间。以后如果找时,可以直接搜索找到加密的地方。 4.发布前问一下是否可以正式发布软件了
制定一个风险评估标准,以考验一下程序的风险性,被破解的可能性,如果你是破解者,在不知道如何加密的情况下会如何去破解这个软件。
有一个参考的评估标准在下面。
共享软件注册加密自我评测表
评测方法:以下问题,若答案为是加1分。
1. 是否加壳?
2. 是否采用两种以上的不同的工具来对程序进行加壳/压缩?
3. 是否有软件自身的完整性检查功能?(CRC校验或其他)
4. 与软件保护相关的字符串是否有进行加密处理?
5. 是否采用了比较成熟的密码学算法?
6. 是否有多处验证点,调用多个不同函数或判断多个不同全局标志进行注册验证?
7. 是否有随机验证的功能?
8. 是否采用了在线验证功能?
9. 注册过程中是否尽量少地给用户提示信息?
10. 是否不依赖于GetLocalTime( )、GetSystemTime( )这样众所周知的函数来获取系统时间?
11. 是否有伪破解功能?
12. 是否在软件中嵌入了反跟踪的代码?
13. 是否对校验函数命名做了刻意隐蔽?
14. 是否将注册码、安装时间记录在多个不同的地方?
15. 是否在校验时故意加入冗余干扰代码来误导解密者?
16. 是否有自己独特的防破解措施?
1.保持软件的完整性
这里包括了文件名不被更改,文件版权信息不被更改,文件尺寸不被更改。
很多时候有的奸人拿到您的软件,他可以将文件名更改,将文件版权信息的字符串或图片更改,然后放上自己的东西,如放上病毒可以对其他电脑造成破坏,如果放奸人的弹出广告收益的是奸人,而不是作者。相反,使用这些软件的用户反而将作者痛骂一通,造成声誉上的损失。因此处于保护自己的完整权益来说,也是有必要保护软件的完整性。
例如QQ软件,曾出现过多款个人行为的补丁版,更改了QQ的一些信息与界面,为此QQ公司十分头痛,以后的一些事大家也知道,现在看是破解QQ的很少了,而且在安装QQ新版本时,它会检查是否有破解补丁存在,如果存在就不运行。
2、保护软件开发者的权益
也许你会说,一个不被破解的软件一定是一个没有加密的软件,那么看看下文您就会知道,那只是一个理想中的事情,除非您是有钱了没有事干的人,否则您开发软件的目的是什么我是很难知道的。
无论是个人还是公司,如果生产一个软件得不到收益,以及后继开发资金的鼓励,那么无疑这个软件是很难再开发下去的。这样的例子很多很多,我不想举例,国内已出现了很多软件的破解版,而一旦出现了破解,那么所造成的损失是非常大的。二.易语言程序加密的原则
早先人们的加密方法是通过在软盘上格式化一些非标准磁道,在这些磁道上写入一些数据,如软件的解密密钥等等。这种软盘成为“钥匙盘”。软件运行时用户将软盘插入,软件读取这些磁道中的数据,判断是否合法的“钥匙盘”。
软盘加密还有其它一些技术,如弱位加密等等。
随着近年来软盘的没落,这种方法基本上退出了历史舞台。新的软件加密技术也越来越多了。
1.加密前要考虑周到且严密
说实话,有很多人在易语言论坛上发贴,说自己用易语言编写的软件有了破解,还非常高兴,有人用才会被破解,但我想,如果是很高兴的这样子,除非你的软件技术含量很低,或你是微软,想被别人破解,您不应该高兴,这有点象别人打了你一耳光,你还很高兴,你的知识产权或著作权已被奸人侵犯了,性质很恶劣,后果很严重。除了拿起法律武器,劳命伤财,还有就是加强加密方式。
如果被制作出注册机,情况是最糟糕的,作者需要全部更换全部用户的注册KEY文件,工作量相当地相当地大。因此一个好的软件保护发布前必须考虑周到,而且是面面俱到,否则出一个新版,发现一个破解,再出一个新版去修正,那样的事情是极其弱智的。
2.需要加密的内容要制定一个计划
一开始不明白如何加密的易语言用户,一般就找一下论坛上关于注册的例程套用到自己的程序中,认为这样就是加密了,实际上本节所要讲的是制作一个学习计划,将所有需要用到的知识与软件都收集到,这个计划就是一个加密计划,也是本书所要讲述的。
3.加密时制作好文档,以备以后的修改
在加密中有可能使用了多处加密,因此需要将文档写好,以防止以后忘记,实际上您可以在易语言中使用备注的方式作以说明,这些备注在编译时是不会被编译进目标EXE文件中的,大家可以放心写,同时也节省了写外部文档的时间。以后如果找时,可以直接搜索找到加密的地方。 4.发布前问一下是否可以正式发布软件了
制定一个风险评估标准,以考验一下程序的风险性,被破解的可能性,如果你是破解者,在不知道如何加密的情况下会如何去破解这个软件。
有一个参考的评估标准在下面。
共享软件注册加密自我评测表
评测方法:以下问题,若答案为是加1分。
1. 是否加壳?
2. 是否采用两种以上的不同的工具来对程序进行加壳/压缩?
3. 是否有软件自身的完整性检查功能?(CRC校验或其他)
4. 与软件保护相关的字符串是否有进行加密处理?
5. 是否采用了比较成熟的密码学算法?
6. 是否有多处验证点,调用多个不同函数或判断多个不同全局标志进行注册验证?
7. 是否有随机验证的功能?
8. 是否采用了在线验证功能?
9. 注册过程中是否尽量少地给用户提示信息?
10. 是否不依赖于GetLocalTime( )、GetSystemTime( )这样众所周知的函数来获取系统时间?
11. 是否有伪破解功能?
12. 是否在软件中嵌入了反跟踪的代码?
13. 是否对校验函数命名做了刻意隐蔽?
14. 是否将注册码、安装时间记录在多个不同的地方?
15. 是否在校验时故意加入冗余干扰代码来误导解密者?
16. 是否有自己独特的防破解措施?