一、关于盗版
盗版技术指非法侵占别人的软件技术成果,主要有盗用源程序,非法使用算法,设计思想和设计图样(界面)。软件技术盗版涉及更多的是法律和管理问题,主要依靠产权、专利相关法律来解决。我们看到,过去一段时间里技术本身显得无法直接保护自己。
软件的盗版使用,是指非法复制和使用软件。在没有采取反盗版措施的情况下,软件盗版使用指未授权使用;在有防盗版措施的情况下,盗版使用指破解防盗版加密,并非法使用软件。
通常讲的盗版,一般指破解防盗版加密。我们所关心的是存在哪些破解反盗版加密的方式及如何对之有效防止。以下把破解反盗版加密简称解密。
软件解密共有两种方式(手段),即技术手段和非技术手段。非技术手段主要有:直接盗取或骗取密匙、幕后交易以及直接获得密匙三种方式。直接盗取或骗取密匙主要依靠对方管理上的弱点和密匙管理人员的缺点,获得软件的有关安全资料,从而非法使用软件。幕后交易指利用美色、金钱权利进行不平等的交易获得非法软件使用权。直接获取指内贼行为。(注:以上指的密匙,包含加密算法和密码两层含义,这里仅为了表述简单而简称密匙。)技术手段有:对安全对象破解和对安全入口破解两种方式,即所谓的对象安全问题和入口安全问题。
(二)目前主要使用的盗版技术
盗版破解主要采动态跟踪分析和静态分析两类技术,这些技术一般要使用相应的工具;目前动态跟踪分析的工具主要有ICE、soft-ICE和TRW2000等,静态分析的工具主要是各种反编译软件(比如DeDe,DePB);对某些特定的防盗版技术还有大量的特定破解工具(比如,FileInfo/PEID/AspLoader等文件类型侦测、外壳侦测工具,Stripper/Dumper/UnSheller等脱壳、内存转储工具)。
在具体的方法上,对象安全主要采用对象仿真,也有少量使用算法破解;入口安全主要采用绕过检测点、还原原代码和修改防盗版代码等。
(三)用于盗版的软件
Soft-ICE:使用Soft-ICE可以很容易的跟踪一个软件、或是监视软件产生的错误进行除错,它有DOS、Windows3.1、Windows95/98/NT/2000/各个平台上的版本。这个本是用来对软件进行调试、跟踪、除错的工具,在解密高手手中变成了最恐怖的破解工具。
TRW2000:TRW2000是中国人自己编写的调试软件,完全兼容Soft-ICE各条指令,由于现在许多软件能检测Soft-ICE存在,而对TRW2000的检测就差了许多,因此目前它成了解密高手们的最爱。TRW2000专门针对软件破解进行了优化,在Windows下跟踪调试程序,跟踪功能更强;可以设置各种断点,并且断点种类更多;它可以象一些脱壳工具一样完成对加密外壳的去除,自动生成EXE文件,因此它的破解能力更强,在解密者手中对共享软件的威胁更大。它还有在DOS下的版本,名为TR。
2、静态反汇编工具
解密高手常将Soft-ICE和TRW2000比作屠龙刀,而将W32dasm8.93则比作倚天剑。W32dasm8.93可方便地反汇编程序,它能静态分析程序流程,也可动态分析程序。在原有的普通版的基础上,一些调试高手又开发出了W32dasm8.93黄金版,加强了对中文字符串的提取,对国产共享软件的威胁也就更大了。例如开心斗地主这个很好玩的共享软件,用黄金版对其反汇编可以直接看到注册码(开心斗地主的早期版本,普通版不能),您说它厉害不?
Hiew是一个十六进制工具,它除了普通十六进制的功能外,它还有个特色,能反汇编文件,并可以用汇编指令修改程序。
也有些解密高手喜欢用IDAProAvanced来进行静态反汇编的,实际上IDA同w32dasm有很多相同的功能:可以快速到达指定的代码位置;可以看到跳到指定的位置的jmp的命令位置;可以看参考字符串;可以保存静态汇编等。
为什么要用静态反汇编工具呢?如果汇编基础不够好,或者目标软件跟踪、调试起来太困难(哇,迷路了——怎么走进汇编从林了?!),这时这些静态反汇编工具就发挥作用了。用它们可以直接将软件反汇编(如果是加了壳的要先进行脱壳),从中找到有用的提示信息
3、VisualBasic程序调试工具
Smartcheck是专门针对VisualBasic程序的调试软件,由于VB程序执行时从本质上讲是解释执行,它们只是调用VBXXX.DLL(动态链接库)中的函数,因此VB的可执行文件是伪代码,程序都在VBXXX.dll里面执行。若用Soft-ICE跟踪调试只能在动态链接库里面用打转转,看不到有利用价值的东西,而且代码质量不高,结构还很复杂。当然只要了解其特点用Soft-ICE也可破解,但SmartCheck的出现,大大方便了调试高手们。
SmartCheck是NuMega公司出品的一款出色的调试解释执行程序的工具,目前最新版是V6.03。它非常容易使用,甚至于不需要懂得汇编语言都能轻易驾驭它。它可将VB程序执行的操作完全记录下来,使解密高手轻而易举的调试跟踪大部分VB程序,从而得到对其有用的东西,如软件的注册码,后门,程序设计流程以及程序缺陷等。
OllyDbg:它是一个新的动态追踪工具。OllyDbg运行在Ring3级,所以不能用它来调试系统的0级程序,不过由于Ring3的原因,可以一边调试程序,一边听MP3,这在TRW2000下是不能想像的(至于Soft-ICE中,你可以借助IceDUMP达到目的,不过需要你有ISA声卡)。而且它是典型的视窗界面,对于习惯了菜单和窗口的用户可以很快上手,不必记忆繁琐的命令行,直接显示FPU、MMX、SSE、3DNOW等特殊寄存器。
DeDe是专门针对Dephi程序的调试软件,由于Dephi程序反汇编后的可读性不是很强,所以有了此类专门针对Dephi程序的工具。用DeDe调试Dephi程序可以轻松的得到其相关的资源,如窗体,模块信息,单元信息,项目等,从中可以得到木马高手感兴趣的东西,如前所述,如注册码,后门,程序设计流程以及程序缺陷等。一句话,木马高手用DeDe的主要目的就是为了调试木马程序,为己所用。
十六进制编辑器可以用十六进制方式编辑文件,修改文件的内容。虽然Hiew就是一款是十六进制工具,但它是DOS界面,因此很多解密高手又准备了一款Windows下的工具,这样的工具很多,如:UltraEdit、WinHex、HexWorkshop等,其中UltraEdit比较有特色,操作方便,更有汉化版可用。
WinHex是一款优秀的、和UltraEdit齐名的16进制文件与磁盘编辑软件。WinHex以文件小、速度快,功能不输于其它的Hex十六进位编辑器,从而得到了ZDNetSoftwareLibrary五颗星最高评价!除了可做Hex与ASCII码编辑修改、多文件寻替换功能、磁盘磁区编辑(支持FAT16、FAT32和NTFS)自动搜寻编辑等功能外,其最具特色的是其自8.3版以后新增的RAM编辑功能!离开了RAM编辑功能WinHex也只能算作一个普通的16进制文件编辑软件,但有了这个功能,使WinHex得以进入优秀16进制编辑软件行列!
注册表监视工具主要有RegShot、Regmon或RegSnap等。在微软操作系统中,众多的设置都存放在注册表中,注册表是Windows的核心数据库,表中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序的正常运行。在应用软件安装时,有可能将一些必要的信息放进去,如安装时间、使用次数、注册码等,其中也有解密高手们感兴趣的信息。
RegShot、Regmon或RegSnap就是监视注册表变化的工具,通过它可以了解、监视应用程序在注册表中的动作,解密高手常利用它们来监视应用软件在注册表中的变化,如在注册表中建立了哪些键值,在哪个位置。如果在运行软件前先运行注册表监视软件,那么它们在注册表中的一举一动都逃不过你的眼睛!
7、文件监视工具
Filemon是文件监视工具。可监视系统中指定文件运行状况,如指定文件打开了哪个文件,关闭了哪个文件,对哪个文件进行了数据读取等。通过它,任何您指定监控的文件有任何读、写、打开其它文件的操作都能被它监视下来,并提供完整的报告信息。解密高手经常利用Filemon监控文件系统,查看在文件运行后系统中的文件变化情况,如建立了哪个文件,打开并写入了哪些文件,以便窥视木马的一举一动。
8、自动脱壳工具
现在许多软件都加了壳,使得解密工作较之当初难多了。那么什么是“壳”呢?壳是一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。经过加壳的软件在跟踪时已无法看到其真实的十六进制代码,因此可以起到保护软件的目的。大部分的程序加壳是为了防止反跟踪,防止程序被人跟踪调试,防止程序算法被别人静态分析。
Procdump就是个对付软件加壳的脱壳工具,它可剥去许多种壳,还文件本来面目,这样再修改文件内容就容易多了。由于它还允许使用者自己编写脚本文件,因此利用它能脱去新版加壳软件的壳。它同时还是一款优秀的PE格式修改工具。解密高手用它来脱去软件的“壳”(好比将甲鱼的壳给扒去了,这样再对付甲鱼就容易多了——宰杀全由他们!),进而再用其它软件来分析它。
9、侦测文件类型和入口点工具
这样的工具有Typ、FileInfo、Language2000和冲击波2000等。它们被用来侦测软件被加壳类型或程序入口点。其中冲击波2000能轻易的找到任何加密壳的入口点,包括ASProtect以及幻影的加密壳都行;Language2000更是解密高手的称心武器,该软件是用什么软件编制的,用的是什么软件加的壳,只要用Language2000加载运行该软件,就可以一清二楚,明明白白。
这类软件一般是配合Procdump和调试软件使用的,用它们找到程序加壳类型和入口点,用Procdump或Soft-ICE、Trw2000脱壳。解密高手用这类软件的目的是为了了解木马是用什么软件加的“壳”,用什么软件编制的程序,为脱壳和用相应的软件跟踪调试做准备。
10、手动脱壳(加)工具
解密高手用加壳工具干什么?当然是用来脱壳和加壳了。一方面可以用加壳软件给软件脱壳(一般说来,用什么软件加的壳就可以用什么软件脱壳,当然最好版本相同。当然也有例外,如ASPack、PECompact等就没有内建解压缩功能,所以就不能解自己压缩的壳。);另一方面解密高手要发布自己的作品,为减少文件体积便于上传,或出于保护自己的作品等考虑,他们也需要给自己的作品加壳。现在网上有很多专门的加壳程序可供给软件加壳。
如果你对加壳的概念还有些含糊,在这里我们再提提它。加壳,其实就是给可执行文件加上个外衣。用户执行的只是这个外壳程序,也就是当你执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后以后的工作就交给真正的程序了。所以,这些工作只是在内存中运行,而我们是无法知道程序具体是怎么样在内存中运行的。
11、资源修改工具
eXeScope是一个可以修改软件资源的工具,功能强大。eXeScope能在没有资源文件的情况下分析、显示不同的信息,重写可执行文件的资源,包括EXE,DLL,OCX等文件的资源它都可以修改编辑。它可以直接修改用VC++及DELPHI编制的程序的资源,包括菜单、对话框、字串表等,是汉化软件的常用工具。在解密高手手中,它常被用来修改文件资源中的菜单、对话框、字串表等,用以显示他所需要的信息,例如更改版本号、版权信息等。
12、API调用查询工具
顾名思义,这个程序是用来侦测软件都调用了哪些API。API就是Windows程序执行时所呼叫的函数,跟DOS下的INT(中断)差不多,Windows提供了很多这样的函数让程序设计者套用,主要目的是为了节省软件开发的时间,方便大家开发软件。APISpy就是这样一个监控API调用的软件,可以工作在Windows95/98/NT/2000平台下。它可以查看应用程序调用了哪些API,从而得出对解密高手有用的API调用信息,通过这些API调用来设定断点,进而一步一步达到调试软件的目的。
13、注册机制作工具
何为注册机?注册机就是针对某一软件,通过一定算法算出注册码的程序。CrackCode可以从另一进程的内存中取出你想要的注册码,有了它,很多软件可以用二十秒时间写出注册机来。令人惊奇的是用CrackCode制作的“注册机”在运行后,可以让注册码自己跳出来,直接显示在屏幕上!
二、关于软件反盗版
(一)反盗版的主要技术
1、硬加密
目前最常用的软件保护硬加密产品是接在串口(并口或USB口)上的加密狗(加密锁、软件狗)或插在机内的加密卡,从理论上,用硬件解决盗版问题是一种较安全的技术;但是,用硬件解决盗版问题的成本很高。现在市面上有大量几十元(人民币)到一千元(人民币)的软件狗销售,似乎很便宜,实际上这类软件狗是采用廉价芯片加简单算法,一味追求价低的产品,毫无安全可言,黑市中的盗版软件九成以上就是通过破解这种软件狗取得的。这类产品的对象安全就不符合要求,加上为了销售方便,入口安全就更不重视,入口安全的算法复杂度趋于零。
要生产较为安全的硬件加密狗,每个的成本不能低于千元,一万元以上的软件狗可以视为安全的产品。事实上,硬件安全产品要实现安全算法,其运算能力要相当于一台性能较高的微机才能有效完成,专用芯片可以提高效率,但对入口安全的解决会碰到更棘手的问题,成本一样少不了。目前也较常见的防盗版技术还有口令方式、字符串校检和钥匙盘等,这些方式的安全级别很低,对发行量不大,开发成本小的软件适合采用这些技术。
2、软加密
纯软件加密因经济方便而蓬勃发展,当前最常见的是外壳加密技术,相关工具(加壳软件)有:ACProtect、Armadillo、Aspack、ASProtect、Krypont、Obsidium、PE-Protector、tElock、SVK、Upx、Xtreme-Protector等等。它们会采用一些AntiDebug、AntiTrace、AntiDump机制,并结合API嵌入来增加破解难度,但因为外壳加密存在原理缺陷:受保护程序代码总要被还原成加密前的状态才能运行,这就给破解者、破解工具以很多取巧空间。
3、认证许可
认证许可技术是安全技术发展到今天的产物,是各种信息安全的基础技术。但因为政治原因,从国外进入我国的这类反盗版技术,安全级别是很低的,而且在入口安全上没有投入成本。
(二)软件反盗版需要解决的主要安全问题
1、对象安全问题
从技术理论上讲,软件反盗版就是对具有唯一性的数据对象授权,通过判断是否有授权对象来决定防盗版行为(或称运行状态)。可见,授权数据对象应具备难以复制的特征,如果该授权对象可以伪造,防盗版措施将失去意义。
所谓对象安全问题,即授权对象是否可以伪造的问题。对象安全建立在某一唯一性与授权标志不可伪造的基础上,从技术理论上看,实际上是对唯一性进行加密(数字签字),使唯一性难以伪造。对象破解即对唯一性的加密进行破解,达到能对伪造数据(授权对象)的目的,即对伪造的唯一性伪造(加密)成授权标志。
比方说,反盗版即把软件加一把锁,对象安全问题即这把锁是否锁得住的问题。对象破解即通过研究锁的原理,从而得到开锁的方法或者说找到钥匙的唯一性(特征)伪造钥匙,把锁打开。现代的密码学表明,在不考虑成本的情况下,对象安全可以做到任意的安全级别。
2、入口安全问题
所谓入口安全问题,即软件主体与安全保护体相结合所产生的安全问题。比方说,软件主体是一个房间,安全体即是这个房间门上的锁,对象破解是对锁进行研究(往往是对加密进行研究,即密码分析),而入口破解是想办法不开锁即进入房间里,如把门叶撬了,或者干脆就在门上或墙上直接打一个洞进去。
可见入口安全问题与对象安全问题是两个完全不一样的问题。目前在数学基础理论上很少人对这一问题进行研究,实际上是凭经验加强,按上比方即简单地把门和墙加厚,而对墙、门和锁的关系以及它们内在特性没进行深入的理论研究。事实上,在目前的计算机体系结构下,密码学中认为只依赖密码保密才算安全的原则在入口安全问题上是不正确的。因为执行代码总是公开的,而且它往往不再与其它控制代码发生关系,因此其密匙总是以“明文”方式存在于公开的地方,密匙本身是无法保密的。
在现有的计算机体系结构上,解决入口安全问题的唯一办法是依靠算法的复杂度,主要有功能相关法、算法检验法和功能代码检测法三种方法,它们都要依靠算法的复杂度。理论研究表明,存在安全体系结构可彻底杜绝入口破解盗版
3、安全源问题
所谓安全源问题,是指安全所依赖的数据可复制的问题(或称安全原点问题、安全不动点问题、认证参照问题)。一个系统如果存在这个问题,其安全强度就无法使用密码手段加强。
例如,在使用软件加密狗的过程中,如果把用于识别授权标志的密码交给用户来初始化;那么,由于用户可以复制这关键数据,如果所有安全数据都由它决定,这种狗就存在安全源问题。作为传统的软件加密狗,为了避免这个问题,其厂商就把这权力留给自己,这种处理方法确实可以避免这个问题,但会产生另一个安全隐患,即(安全)提供商肯定可以破解用自己产品保护的软件。
再如,在软件商提供的有限制软件试用中,从理论上讲,任何一种试用,都必须对使用权力进行记录,依据这记录进行试用处理,然而这一记录肯定是可复制的。目前Internet网上公开破解各种试用版软件、使其没有试用限制的方法,大约有一半就是修改安全源数据(还有近一半是由于代码没写好,从入口安全方面进行破解)。
(三)反盗版软件
1、软件防盗版战士
《软件防盗版战士》是一个以数字许可的形式为MicrosoftWindows下(PE格式)应用程序提供版权保护以及数字化销售支持的纯软件产品。它含有认证版、序列号版这两个可选版本。认证版以128位二进制证书文件作为被保护软件的最终用户使用许可,并且主要以最终用户的硬盘、CPU、网卡及操作系统等特征信息为版权保护的安全源(保守地说,理论上认证版的版权保护强度达到3-5年内不可破解)。
安全指标:1、对象安全强度——《软件防盗版战士》的各种对象安全都尽可能地加入了加密算法中,其强度相当于对称算法的128位加密,比普通硬件狗的8位、16位、32位和64位(很少有64位的)安全强度强许多。2、入口安全强度——《软件防盗版战士》采用功能相关法解决入口安全问题。入口安全的最小复杂度大于40位的安全强度。《软件防盗版战士》的入口安全强度最大限定为128位(含128位)。
2、比泰软件防盗版战士2005J
比泰软件防盗版战士2005J(BS-APC),是比泰科技出品的一个软件加密保护产品系列(含L版、A版、J版等产品线),它们为商业软件提供可靠的防盗版保护并支持数字化发行。|它采用比泰公司世界领先的“执行代码抽取加密”技术,软硬件结合,以“认证技术”保证软件“对象安全”、以“功能相关法”保证软件“入口安全”、以具有唯一性的计算机(物理)特征数据作为身份认证指纹,并以软件用户计算机本身的运算能力进行防盗版保护。具有64位以上,到128位的加密安全强度。安全强度远胜传统的外壳加密式加密狗、API内嵌式加密狗,软件保护的功能范围及运行效率超过智能狗,且无须学习加密狗编程,不引入附加硬件维护问题。|适合对C/MFC/VisualC++(VC++)/BorlandC++Builder(BCB)、Delphi/ObjectPascal、PowerBuilder(PB)、Authorware、Director等开发工具所编译程序的保护。|因为它是对真实指令进行代码抽取加密,因此暂不保护伪编译程序,如VB、VFP、C#、JAVA。
ACProtect是由国人研究开发并拥有自主知识产权的加密软件精品,它有许多技术已经达到并超过了国外同类产品,是一个为Windows下的EXE/DLL/OCX/SCR等32位可运行文件加密系统。它通过为程序加上一层坚硬的保护壳,可以非常有效的防止盗版。还可以为程序设置限制注册功能。
即使你没有程序的原代码,你也可以用ACProtect在程序上加上运行次数限制,运行天数限制,运行有效日期限制。通过公匙加密算法(RSA)创建并校验注册KEY,只有在RSAKEY正确的情况下,才对那些受保护的代码进行正常解码。同时使用了内嵌式加密,可以有效的防止加密软件从内存中被抓取,也就是无法被脱壳。
内置反调试引擎,有效的增加了破解的难度。
专用的API系统,可以使ACProtect和你的软件紧密的接合在一起,这样,你就可以通过使用ACProtect来创建你的全功能评估版。
4、XQBOX软件保护安装系统
XQBoxSoftwareProtecting是一个以数字许可的形式为应用程序提供版权保护以及数字化销售支持的纯软件产品。它采用机器具有唯一性的数据做指纹,利用宿主计算机的运算能力进行防盗版保护。
XQBox保护系统是集软件保护和安装工具于一身的集成工具。XQBox核心代码是遵守标准c的规则来编写,它可以在,windows3.x/9x/2000/nt,unix,linux等各种操作系统下编译运行。作为中间件,它可在c、c++、java、delphi、vc、vb、vf、Masm32、pb、php、Authorware等。各种工具开发的软件中嵌入使用,它的兼容性非常好。核心代码经全域均匀抽值测试,各种特值测试和可行的全域测试均通过。
5、秦赢甲胄反盗版加密软件
这款反盗版软件的用户注册方便,终端用户不需要手动输入序列号认证码等等,一切由注册端软件自动完成;用户机器的硬件信息作为注册码/加密密钥;一个拷贝只能在同一台机器上注册;只要是同一台机器,可以在这台机器上注册多次;只能在注册的那台机器上运行
使用理论上安全的密码学协议和算法,保证不可脱机破解。不能通过注册机破解;不能通过散发序列号破解。
更改检测(可以检测病毒和破解者更改);反跟踪功能(Anti-Debug)。
运行时代码完整性校验,可防止Cracker跟踪时设置断点;可防止通过补丁程序破解。
反Dump功能(Anti-Dump);反反汇编功能(Anit-Disassembler);可以有效的管理经销商和序列号的发放;可以统计软件的销售数量;可以有效的管理用户注册。
6、PE加密保护软件EncryptPE
EncryptPE能加密保护常规PE文件(EXE、DLL、OCX等一般程序或NT服务程序),防静态分析修改,反动态跟踪调试,有效地保护软件,防止盗版。除常规的对抗调试器(SoftIce、TRW、OllyDbg等)、监视器、DUMP工具方法外,EncryptPE采用的加密保护的手段还有:随机加密算法、CRC校验、变形、代码替换、进程注入、APIHOOK、多线程、调试运行、全程监控等。
能将普通软件变成共享软件,增加定时注册提醒、限制试用日期、限制试用次数、限制试用天数、限制每次试用多长时间等功能。
能根据最终用户的机器信息、注册用户及加密时的保护密码计算注册码,从诸多加密算法中随机选择一种用于注册码的计算。
支持多语言,并为待加密软件提供多语言接口。
向待加密软件提供丰富的方便的编程接口,便于设计个性注册方式,同时使被加密程序与加密壳之间融为一个整体,增加破解难度。
可以运行于多种Windows平台,包括9X/ME/NT/2000/XP/2003。
本软件可以自动随机生成2至32位注册序列号及对应的注册码,并将这些注册信息包含到一个动态联接库DLL文件中,这样软件开发者可以将这个DLL文件同应用程序一并发行,并在应用程序的相关模块中调用这个DLL文件中提供的函数获得注册号及相对应的注册码,注册号及相对应的注册码对软件使用者来说是不透明的,它可以用效的避免软件的盗版及其重复注册,切实保护软件开发者的版权。随软件一同提供免费的DLL源程序生成器工具,DLL注册码查询工具,启动应用程序时的注册对话框示例程序及全部C++源代码等。
计算机软件防盗版系统具有国际领先水平的保护知识产权的新技术。现该技术已顺利完成了全部研制。利用嵌入式加密,动态激活解密,工具化设计特征,检测体系,产品形态技术。于1999年7月通过公安部计算机信息安全检测中心的检测。计算机软件防盗版磁盘、光盘获公安部颁发的计算机信息安全产品销售许可证。