孰不知再好的盾也有茅可以刺破一样,世界上很多nb的软件用了好多nb的防破解技术,结果还是被强大的黑客一一攻破,那对于我们这样的小程序员或小公司来说,既然nb的技术没有用,我们也没有那nb的防破解技术,何不如化有形为无形,不去用技术问题解决软件的防破解。
个人总结:软件防破解其实不是技术问题,而是一个社会工程学问题。
现在就给大家几条在开发软件的过程中几招百试不爽的软件防破解技巧,这些非技术的技巧实现起来很容易,但是防破解的效果是大大的。以我的软件为例(http://www.16ec.com/)
1、试用版就是试用版
我前几年开发过一款叫做网络信息采集专家的软件,分为正式版和试用版,这个软件最主要的目的就是采集数据,试用版和正式版的区别就在于试用版不能保存采集下来的数据。在这种情况下,很多做软件产品的程序员,在软件里区别正式版和试用版就仅仅是靠注册码验证而已,这种情况下,只要试用版被破解,那正式版就到手了,而我做的时候思路就是,正式版不提供公开下载,只有用户付费后才提供下载地址,公开发布的试用版里彻底不放提供保存数据的代码,造成的结果是,很多破解者得到试用版后就破解,令他们高兴的是,软件很容易破解(我的加密算法本身就不想写得太复杂),但令他们沮丧的是,破解成功后,试用版还是试用版,改有的功能还是没有。这个招式适合软件使用量不是特别大的用户,依我的看法,95%的软件使用量都不算大,所以这招其实大家皆可用之。
2、开发“破解版”
呵呵,大家是不是不理解这一点,以为我打错了呢,对,没错,就是自己制作自己软件的破解版,在软件正式版发布后,你可以同时制作一个假的“破解版”,也就是从软件表面上让大家认为这是个破解版,实际上用了一小段时间后,就发现这个破解版是不可用的,或不好用的,这个时候你的“破解版”再适时弹出 “破解失效,请到××处购买正式版”等宣传话语。然后你把这个假的破解版找几个有明的破解站上传,这个时候真的破解版还没出假的破解版就已经满天飞了,这样的情况下大多数用户都不可能下载到真的破解版,并且上了你的当用了假的破解版后,定会对破解版大失所望,认为网上流传的破解版都不可用,这样就更有可能购买你的正式版软件。
3、让简单的算法不简单
你可能用来以防止破解的算法比较简单,但这并意味着你就不能有效的阻止破解,我们照样可以用简单的算法把破解者弄奔溃掉,我的软件用了5种破解算法,每种算法都不是很复杂,估计单个破的话也就10来分钟的事情,但我的做法是没有将所有算法全部用于同一时间同一处进行注册码的验证,而是分散到软件的不同功能,不同时间来验证,有的是软件启动,有的是点某个按钮的时候,有的是当时间达到某个条件的时候,破解者往往是把软件启动时候的验证给破掉,但是他在使用过程中又会经常随机的遇到很多验证失败的提示,而且这些过程随机,可能除了作者,没人知道这背后有多少处验证,这些验证又是什么时候触发,所以这种做法能让破解者抓狂的说。另外很多破解者仅仅是为了破解而破解,自己本身又不用被破解的软件,往往是启动阶段的验证一破解掉,就认为大功告成的开始发布 “成功”破解版。
4、联网验证
如果你的软件是基于互联网提供服务的,你可以在软件中写一段代码到你的网络数据库中取信息,取到这些信息软件才可正常使用,当然这些数据必须是软件必须的,而且是不可伪造的,否则破解者把你联网验证的这段代码给爆破掉照样可以正确破解。
5、服务为本
尽量让你的软件提供的是一种服务,而不是某项技术本身,如果仅仅是某项技术,软件一被破解,用户拿到破解版的软件就不再需要你了;如果是服务,即使用户得到了可用的破解版,他可能还是需要转而寻求你获得技术支持,通过这种策略也可以避免破解带来的巨大损失。
好,就写这么多,这些办法一用上破解者就很难破解你的软件了,而且你完成这些工作也不需要太多时间,更不需要money,以我的网络信息采集专家为例,从2003年发布至今,我还没有遇到过真正的破解版,倒是经常看到一些破解论坛上对于我软件的破解感到非常困惑,无技可施。本文转至http://www.16ec.com/,转载请注明出处,并保持链接,谢谢!
[转载于姚徽ID:yaohuib http://blog.csdn.net/yaohuib/archive/2010/09/26/5908031.aspx]
分享到:
相关推荐
程序员必读书单推荐中列举了一系列经典的书籍,涵盖了编程实践、设计原则、算法、软件工程等多个方面,帮助程序员从入门到进阶甚至成为大师级人物。 首先,《代码大全》是由史蒂夫·迈克康奈尔所著,被广大程序员...
【标题】"程序员必读index程序员必读indexv"似乎是一个关于程序员阅读推荐的资源集合,其中可能包含了一系列与编程、软件开发和技术趋势相关的文章、书籍或教程索引。这样的资源通常旨在帮助程序员提升技能、了解...
"程序员必读"这个标签暗示了这本书对于想要在软件行业中取得成功的人来说是不可或缺的资源。 首先,书中的"团队协作"部分强调了在一个团队中,每个人都应该朝着同一目标努力。有效的沟通、共同的理解和明确的角色...
以下是一份详细的C++程序员必读书目清单,分为五个阶段,逐步引导读者从入门到精通。 阶段1:基础入门 1. 《Essential C++》:这本书适合C++初学者,它以简洁明了的方式介绍了C++的基础概念,包括语法、函数和结构...
以下是根据标题、描述以及压缩包中的“JAVA程序员必读基础篇”这一文件名,梳理出的关键知识点和学习路径。 1. **Java语言基础** - 类与对象:理解面向对象编程的基本概念,如何定义类,创建和使用对象。 - 变量...
本文将为您介绍两本编程领域中,程序员必读的经典之作:《重构:改善既有代码的设计》和《深入浅出设计模式》。 首先,让我们来探讨《重构:改善既有代码的设计》这本书。该书由著名的软件工程师马丁·福勒所著,是...
### 资深程序员必读书目详析 对于希望在IT领域有所建树的专业人士而言,选择合适的书籍进行深入学习至关重要。本文旨在基于提供的“资深程序员必读书目”信息,详细解析每一本书的重要性和适用场景,帮助读者更好地...
《代码大全》是一本程序员必备的经典著作,它深入探讨了软件开发过程中的各种编码实践和技术。这本书的内容广泛而深入,旨在提升程序员的编程素养和代码质量。以下将详细阐述其中的一些核心知识点: 1. **代码...
代码大全(Code Complete)优秀程序员必读,本书从软件质量和编程思想等方面论述了软件构造问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。本书中所论述的技术不仅...
JAVA是有SUN公司开发的新一代编程语言,它可以用在各种不同的机器、操作系统的网络环境中...所以作为Internet应用的开发技术人员不可不看JAVA,而JAVA程序不可不先从基础学起,这正是JAVA程序员必读:基础篇的用意。
JAVA是有SUN公司开发的新一代编程语言,它可以用在各种不同的机器、操作系统的网络环境中...所以作为Internet应用的开发技术人员不可不看JAVA,而JAVA程序不可不先从基础学起,这正是JAVA程序员必读:基础篇的用意。
JAVA是有SUN公司开发的新一代编程语言,它可以用在各种不同的机器、操作系统的网络环境中...所以作为Internet应用的开发技术人员不可不看JAVA,而JAVA程序不可不先从基础学起,这正是JAVA程序员必读:基础篇的用意。
【程序员必读非程序书籍】 对于程序员来说,技术能力的提升固然重要,但扩展视野、增强人文素养和社交技巧同样不可忽视。以下是从Stackoverflow和伯乐头条中收集到的29本非编程类书籍,这些书籍深受程序员喜爱,能够...
JAVA是有SUN公司开发的新一代编程语言,它可以用在各种不同的机器、操作系统的网络环境中...所以作为Internet应用的开发技术人员不可不看JAVA,而JAVA程序不可不先从基础学起,这正是JAVA程序员必读:基础篇的用意。
JavaEE 程序员必读图书大推荐参照是一份针对 JavaEE 程序员的图书推荐指南,旨在帮助程序员快速提高自己的技术水平和编程能力。该指南共分为两部分:Java 语言篇和中级进阶篇,涵盖了 Java 语言基础、JavaEE 开发...
### Java程序员必读的书知识点概述 #### 一、Java编程入门类 1. **《Java编程思想》** - **内容简介**:本书适合有一定Java基础的读者,它不仅介绍了面向对象的基础概念,还深入讲解了Java的核心语法及常用类库,...
综上所述,“程序员必读书单”不仅仅是一份简单的推荐列表,它更像是一座桥梁,连接着初学者与资深程序员之间丰富的知识资源。通过这份书单,程序员可以更加系统地学习和提升自己,最终成为行业的佼佼者。
【标题】中的“程序员必读文章三篇合集”表明这个压缩包可能包含三篇对程序员具有重要指导价值的文章,这些文章可能涵盖了编程技巧、职业发展或是编程思维等多个方面。对于程序员来说,阅读这样的文章可以帮助他们...
"java程序员必读--基础篇"的主题聚焦在Java语言的核心概念和基础用法上,旨在帮助读者建立起坚实的Java编程基础。 首先,我们要理解Java的特性,包括其跨平台性("Write Once, Run Anywhere"),垃圾回收机制,以及...