浅谈软件的破解与保护软件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浅谈软件的破解与保护软件
作者:赵君逸
来源:《报刊荟萃(下)》2018年第02期
摘要:保护知识产权,抵制盗版软件,是目前中国软件业所面临的迫切问题。

目前绝大多数软件都采取了加密技术来应对,本文分析了软件破解中几个重要的专业术语和常见的软件破解方法,并具体介绍了软加密和硬加密技术。

关键词:知识产权;软件加密;软件破解
开发软件时,尤其当用到商业用途时,注册码和激活码是非常重要的,未注册的用户会加上某些限制,如使用天数,延迟,未注册画面等等。

但是现在的软件破解技术十分强大,各种国内外大型软件都有注册机制,却同时也不断地被破解,一再加大力度,打击非法软件出版物,扶持正版软件,但实际效果并不理想。

大多的软件商选择了购买加密产品或者加密技术来保护自己的软件,软件保护一般分为软加密和硬加密。

一、常见的软件破解方法
(一)首先我们来了解一下破解中几个重要的专业术语
(1)断点,所谓断点就是程序被中断的地方,中断就是由于有特殊事件发生,计算机暂停当前的任务,转而去执行另外的任务,然后再返回原先的任务继续执行。

解密的过程就是等到程序去获取我们输人的注册码并准备和正确的注册码相比较的时候将它中断下来,然后我们通过分析程序,找到正确的注册码。

(2)领空,所谓程序的领空,就是程序自己的领土地盘,也就是我们要破解的程序自己程序码所处的位置。

每个程序的编写都没有固定的模式,所以我们要在想要切人程序的时候中断程序,就必须不依赖具体的程序设置断点,也就是我们设置的断点应该是每个程序都会用到的东西。

(3)API,即Application Programming Interface的简写,我们叫应用程序编程接口,是一个系统定义函数的大集合,它提供了访问操作系统特征的方法。

API包含了几百个应用程序调用的函数,这些函数执行所有必须的与操作系统相关的操作,如内存分配、向屏幕输出和创建窗口等,WINDOWS程序以API为基础来实现和系统打交道。

无论什么样的应用程序,其底层最终都是通过调用各种API函数来实现各种功能的。

(二)了解了以上三个专业术语后,我们看下基本的软件破解方法
(1)暴力破解法。

这是最常见的也是最简单的破解方法,破解者直接利用编辑工具对可执行文件进行修改,也就是说通过修改可属性程序的源文件来达到破解目的。

某些元件在验证
用户注册信息和注册码时候,如果用户输人的信息与软件通过的算法生成的注册码相等,程序就会注册成功,否则就会注册失败。

(2)利用算法注册机。

算法注册机是要在分析了软件的注册码算法的基础上,制作出来的一种可以自动生成软件注册码的程序。

所以软件的算法很重要,一般软件作者自己也编写,方便软件的销售使用。

这类软件加密的特点是一个注册码只能在一台电脑上使用,像和电脑进行了一对一的绑定。

使用步骤是首先运行试用的软件,得到本台机器的软件机器码,再用算法注册机算号注册,然后用算法注册机直接算出合适的注册码,最后用算出来的注册码直接注册。

(3)利用内存破解。

我们知道所有正在运行的程序的数据,全部都要加载到内存中去,软件在进行注册码认证的时候会有个比较的过程,所以我们只须知道所要破解软件的注册码的内存地址,就达到目的了。

这种方法的优点是无须花大力气掌握软件注册码的算法,非常节省编写内存注册机的时间。

步骤是先加载内存注册机,再通过它去获得内存中软件的真实注册码,或修改内存中软件相关的某些数据,来达到破解软件的目的。

主要有2种方式,第一种直接从内存中得到注册码,第二种在内存中模拟已注册程序的运行环境。

二、常见的软件保护方法
(一)注册码
软件的注册码一般都是一机一个,不能重复。

下面我们来看看如何实现的。

第一步根据硬盘卷标和CPU序列号,生成机器码,首先编写public static string GetDiskVolumeSerialNum-ber()函数取得设备硬盘的卷标号,其次编写public static string getCpu()函数获得CPU的序列号,最后生成机器码,函数如下:String Number;String public static string getsoftNum(){strNum-=getCpu+GetDiskVolumeSerial-
strsoftNum=strNum.Substring(0,24);//从生成的字符串中取出前24个字符做为机器码return strsoftNum;}第二步根据机器码生成注册码,需要编写public static string getRegistNum ()函数来实现。

第三步。

检查注册状况,若没有注册,可自定义试用天数,延迟,未注册画面等等,可编写private void CheckRegist0 Cpl数来实现。

(二)软加密
所谓软加密就是不依靠特别硬件来实现的对软件的保护技术。

当前国际上比较通用的软件都采取软加密的方式,例如微软的windows系统、杀毒软件等,它的最大优势在于极低的加密成本。

目前主要有密码法、计算机硬件校验法、钥匙盘法等。

目前比较流行的是使用外壳,外壳分为压缩壳和加密壳,其中压缩壳的保护性比较弱,所以一般采用加密壳,其原理是利用堆栈平衡原理,修改程序人口处代码,使其跳转到壳代码执行解密程序,将原程序代码解密后跳回原程序的OEP继续执行。

目前比较强的加密壳采用的是动态解密代码、SMC,IAT加密技
术,程序在运行过程中动态解密代码,执行完毕后立刻删除,并且对IAT加密,当需要调用API时用解密算法算出API的实际地址来调用,更有甚者,壳里有壳。

目前常见的比较强的5大壳有:①EncryptPE,其特点是对IAT加密比较强;②ASProtect,其特点是采用多层SEH,很容易把人转晕;③ACProtect,其特点是采用stolen code的办法;④Armadillo,其特点是双进程互相检测;⑤themida,其特点是采用虚拟机技术。

好的加密效果在于让盗版者在破解被保护的软件时,付出巨大的代价,耗费极大的时间精力,最终被迫放弃攻击。

三、结束语
软件破解和软件加密就是矛和盾的关系,好的加密效果在于让盗版者在破解被保护的软件时,付出巨大的代价,耗费极大的时间精力,最终被迫放弃攻击。

最后我们要认识到软件破解是不道德的,是违法《计算机软件保护条例》的,现如今软件的大众化、市场化,低价化,也让我们有机会有能力去使用正版软件,所以我们要提高觉悟,力所能及的不使用盗版,以实际行动支持中国的软件行业发展。

作者简介:
赵君逸(1996—),男,浙江温州人,浙江师范大学,主要研究方向:软件工程。

相关文档
最新文档