因此,cracker总是乐此不疲的破软件,一个个软件接连被破,开发者看在眼里,疼在心里。
当开发者知道了这一切的来龙去脉之后,开发者就会想办法去阻止破解的行为,阻止的方法无非就是给破解的过程增加难度和干扰。于是,壳诞生了。
壳可以将一个程序给套在里面,可以非常直观的理解为一个程序的外壳。开发者加的外壳,一般都是一些保护壳,到目前为止还没有发现为了防破解而给自己的软件加单纯的压缩壳的。保护壳的保护机理一般都是反调试器、反虚拟机、垃圾指令、代码虚拟化(或者混淆)等,程序运行起来是没有什么太大问题的,但是让一个cracker的逆向过程变得异常艰辛。但是加壳有了,相对应的脱壳也就会出现。由于壳的滥用,这引起了一些cracker大牛的注意。cracker大牛通过分析壳的运作机理,模拟壳的环境,通过隐藏调试器等方式躲过壳的反调试功能。毕竟能运行的东西总是理论可修改的,在大牛们的研究下,一个个脱壳机或者脱壳教程就这么出现了。直到现在,加壳和脱壳之间的较量,仍然是那么激烈……
既然壳被脱了,开发者还是不甘心。于是想到了暗桩。暗桩代码,一般正常使用情况下是不会触发的。它到底是什么呢?它有可能是一小段自校验代码,在你修改了他的程序之后,程序发现自己被修改而自动退出。也可能是一小段警告代码,给你来个小的框框,提示“XXX你个逗13别修改我的程序!”这类的东西。心怀恶意的开发者则是喜欢使用威力更大的东西,比如给你来个蓝屏,格式化你的硬盘,给你加硬盘锁(江民硬盘锁是典型的例子),或者是潜伏一段时间,当你的程序使用一段时间后突然清空程序中的全部数据,让你损失惨重。暗桩无疑是cracker们最头疼的问题,当然有了暗桩,就有相应的去暗桩手段。cracker为了防止这类代码的破坏,总是喜欢在虚拟机内搞这些东西,即便是不幸中招,也可以利用虚拟机的快照来实现时光倒流。而去暗桩的手段无非两种,第一是摸清楚所有的暗桩,尽量不去触发它;第二是和破解软件一样,硬性修改这些代码。
就这样,本地验证逐渐的没落了……云的时代正在崛起。
有一些软件,本身代码是不全的,比如软件下载下来就是一个试用版,相应的功能根本就没有,当你购买了这个软件之后会给你一个完整版的软件。这下可好,除非cracker去入侵开发者的服务器,或者是共享自己的已付费版,否则是没法破解这个软件的。同样的道理,有些软件代码也是不全的,但是和上面的方式有点不同——它依赖于网络来工作。一些数据的处理和计算,是在服务器上进行的。比如图片云识别,当你购买了这个服务之后,你就可以在软件上登录你的账号,然后将一张图片通过这个软件发到服务器上去,服务器验证了你的授权信息有效之后进行识别,并将识别结果返还给你。而整个核心的过程没有在你的软件上实现,又谈何破解?破解的方法一样,除非cracker去入侵服务器,否则没有办法破解的。
但是,你会发现,无论是什么样的软件,都是理论可破解的。即便是云计算,cracker还有最后一招,入侵服务器。
也就是说,破解软件不是不可能,而是一个时间问题和价值问题。假设一个付费软件做的非常赞,破解它要花费一年多的时间,而作者的定价仅仅是1元就可以终身免费,那么谁还会花那么多时间去破解这个软件呢?
所以说,话归到底,每个软件都是理论可破解的,破解它只是一个时间和价值问题。