事实上,有关EXE文件的加密解密已经有很长的历史了,从DOS到现在的Windows XP/2003,无时无刻都在进行矛与盾的较量。对EXE文件的进行加密主要针对两种情况:一是非法盗用,二是非法修改。第一种情况的EXE加密主要针对一些特定的程序,如何非法使用这个程序会对程序的主人造成信息泄漏:第二种情况主要是针对有版权的程序,通过修改程序文件,使得能够任意复制这些程序,也就是常说的盗版。
对EXE文件进行加密能够同时起到防止这两种行为的目的,因为对EXE文件加密后,非法盗用肯定会变得更困难,同时,加密也改变了EXE文件的结构,虽然在运行时,EXE文件会在内存还原,但修改显然也变得更困难了。
目前对EXE文件的加密方法主要是两个:内嵌和加壳。内嵌就是在编写程序的时候就加入检测代码,防止盗用和修改,加壳就是在EXE文件已经产生之后,在EXE文件外面加了一层壳,从而隐藏了EXE文件的原始信息,起到保护的目的。 对EXE文件加口令的原理是什么?
事实上,对EXE文件加口令也是对EXE文件增加了一层壳,由这层壳来完成口令的验证工作,如果验证通过,则壳就会加载原有的EXE文件来运行,否则就退出。不过,不要把自己的知识用于非法目的哦!!!
9.9.1 用Aspack对EXE文件进行加密
对EXE文件进行加壳可以使用一款由俄国人编写的Aspack软件,该软件能够对EXE文件进行压缩,从而达到隐藏EXE文件原始信息的目的。Aspack运行速度相当快,而且稳定,能够将EXE文件压缩到原有的20%~60%。软件界面如图9-9-1所示。 具体操作步骤如下:
① 打开Aspack后,单击【Open】按钮,出现选择文件窗口,选择要压缩的EXE文件,如图9-9-2所示。
图9-9-1 Aspack的运行界面 图9-9-2 选择要压缩的EXE文件
② 单击【打开】按钮之后,Aspack就开始压缩了,同时显示压缩的过程,如图9-9-3所示,压缩完成后,显示压缩比例,如图9-9-4所示。
图9-9-3 显示Aspack的压缩过程 图9-9-4 Aspack压缩完成
③ 压缩完成之后,可以单击【Test it!】按钮来测试压缩后的程序执行是否正确,如果正确则会出现【Erase Bak】和【Restore】按钮,如图9-9-5所示,用以删除原有文件和恢复原有文件。
图9-9-5 Aspack测试结束 图9-9-6 TElock的主界面 9.9.2 用tElock对EXE文件进行加密
tElock是一款集压缩和加密为一体的EXE文件加密工具,其运行主界面如图9-9-6所示,它的压缩比相比于Aspack来说显得并不大,但tElock有很好的加密效果,能够将原有文件的信息进行很好的保护,除非动态进行跟踪,否则无法将原文件恢复出现。
不过tElock对动态跟踪也有很好的防范机制,能够检测到像SoftICE这样的调试工具,而且如果对加密后的文件进行了任何修改,该程序将无法使用。 具体操作步骤如下:
① 单击tElock的【Lock File】按钮,选择要加密的EXE文件,如果这个文件没有被加密过,则tElock直接开始加密,否则会提示用户文件己被加密,是否要再次加密,如图9-9-7所示。
图9-9-7 tElock直接开始加密
② 在加密过程中,tElock显示相应的EXE文件信息,完成后显示压缩比例,如图9-9-8所示。
图9-9-8 出现加密后的信息
③ tElock有相当多的选项,不同的选择会有不同的加密效果,单击【Settting】页,就会出现选项设置,如图9-9-9所示。 图9-9-9 TElock的选项 几个选项的含义如下:
● Add Debugger detection(加入调试器检测):加密后的程序将能够检测像SoftICE这样的调试工具,如果检测到这样的调试工具,程序将不能运行,目的是防止动态跟踪。 ● Don't display detection messages(不显示检测信息):如果选择这个选项,加密后的程序检测到调试工具,将不显示任何信息就退出,否则会提示用户“This program does
not run on machines with active system debugger!”。(程序不能在有调试器激活的机器上运行)。
● Smart compress resources(智能资源压缩):选择该项在对EXE文件中的资源压缩时,不对运行机器信息和版本信息压缩,这样用户在资源管理器中仍能看到原来的版本信息。 ● Enable IAT-Redirection(能够重定向IAT表):选择该项后,程序在运行时会清除在内存中的IAT(输入地址)表,这样会使解密程序更加困难。
● ComDress entire resources(压缩全部资源):选择该项会压缩EXE文件中的所有资源,能够使加密后的程序文件更小,但这样在资源管理器中将无法看到加密后的程序的图标和版本信息。
● Strip overlays(去除覆盖段):去除EXE文件尾部一些无用的数据,但对一些自解压的文件,选择该项可能会无法使用,建议不要选择该项。
● Enable Mutex cbeck(互斥检验):这是一个开发选项,因为互斥对像的检测需要在源代码中进行,对已有的EXE文件不需要这个选项。
● Strip .reloc section ifpossible(如果可能,去除reloc段):将EXE文件中的reloc段去掉,建议不要选择该项。
● Preserve all icons(保护所有图标):不加密EXE文件中的所有图标;
● Don't create backups(不产生备份文件):直接对EXE文件加密,不生成备份,建议不要选择该项,防止加密失败而丢失EXE文件。
● Store Personal string in File(保存个人信息):在EXE文件中加入个人信息,在该选择项下的输入框中可以输入用户的个人信息,该信息被添加在EXE文件的末尾。 ● Register Shell-Extension(注册系统外壳扩展):在系统的右键菜单中加入【Open with tElock】的菜单项。
● Save Settings on exit(退出时保存设置):用户关闭tElock,自动将所有选择保存。 9.9.3 用EXE文件加口令对EXE文件进行加密
上面两个工具都是防止非法修改EXE文件的,防止盗用EXE文件可以用EXE文件加口令,该软件是一款专门用于对EXE文件加口令的国产工具,使用十分方便,能够提供一定的保护功能。
【注意】
如果使用的是未注册版的EXE加口令,结果可以参照如图9-9-10所示,不知作者是否能够改进一下,不过注册费用仅仅只有5元,请大家支持一下国产软件嘛! 具体操作步骤如下:
① 在EXE文件加口令的主界面中输入要加密的EXE文件,然后输入密码,单击【开始加密文件(O)】按钮,就完成对EXE文件的加密,如图9-9-10所示。 图9-9-10 EXE加口令
② 被加密后的程序运行时会提示要求输入密码,否则不能运行,如图9-9-11所示。 另外,PrivateEXE也是一款EXE文件加口令的工具,使用也十分简单,界面如图9-9-12所示。
图9-9-11 提示输入口令 图9-9-12 PrivateEXE加密
PrivateEXE 是一套专门设计来保护用户电脑中目前所有应用程序的加密软件,凡是不知道密码的人都无法启动自己所指定保护的应用程序与可执行文件。当PrivateEXE开始执行保护的动作时,它会将原始的文件以binary code的方式进行加密的动作,可以对所有的EXE执行文件进行加密的动作,支持16与32bit两种不同组态的应用程序,对于已设定的密码,则允许加以变更或者删除,不过当然还是得先提供先前所设定的密码,提供的【校验】功能可以让用户确认自己正在检视的文件是否有经过加密的处理。 9.10 MS SQL Server密码破解
自从和Sybaase联合开发了SQL Server之后,微软将SQL Server注册作为了自己的数据库产品。和微软的其他产品一样,SQL Server具有操作方便、简单、易用的特点,而且速度和稳定性也不错,成为目前在Windows平台下数据库开发的首选。但是,如果丢失了数据库管理员sa的密码,就有可能无法登录至数据库,从而造成不必要的麻烦。
不过,如果自己有运行数据库系统的服务器的系统管理员权限,那么,解决这个问题并不很难。
9.10.1 实现本地用户的帐户登录
SQL SERVER提供了两种登录机制:本地帐户登录和分配的数据库用户登录。前一种登录就是用像Administrator这样的系统帐户来登录,后者则是在SQL SERVER中建立的登录帐户来登录,最典型的例子就是用sa这个帐户。
其中要实现本地用户的帐户登录方法,可以用于拥有系统管理员权限的用户解决丢失sa口令的问题,而且很方便。在服务器上用有系统管理员权限的用户(以Administrator为例)登录后,打开SQLSERVER的“企业管理器”(SQL SERVER2000版,如果是SQL SERVER 7,则是Enterprise Manager),在左边的“Microsoft Sql Servers”下找到相应的SQL SERVER组,再找到相应的SQL SERVER服务器(如果是本机,则选择Local),再选择【安全性】下【登录】选项,在右边窗口中双击登录名sa,在“密码(P)”输入框中输入并验证输入新的密码,此时,sa登录就可以使用新的密码了。 图9-10-1 重建数据库newsy 9.10.2 通过文件拷贝获得相关数据
查询分析器的关键诊断特性是它能够显示某个查询的执行计划。这个执行计划会向用户提供各种类型的有用信息,例如:在查询的执行期间如何以及何时使用或者不使用索引。它还会提供许多其他的细节,例如排序、平行(parallelism)、嵌套循环,以及SQL服务器在执行指定查询时必须做的其他事情,其运行界面如图9-10-1所示。
如果没有系统管理员权限,只要能够搞到相应数据库的文件(一般是两个文件:一个扩展名为.mdf,这是数据文件;另一个扩展名为.ldf,这是日志文件),也能够获得相关的数据。 假定一个数据库的数据文件和日志文件分别为sy.mdf和sy.ldf,并且已经获得了这两个文件,将其放在d:\\下,数据库的名称是“newsy”,接下来的事就好办了。
首先,在自己的机器上安装一个SOL SERVER,这时当然有sa的口令了,然后打开【查询分析器】(这是SOL SERVER2000版,7.0版是Query Analyzer),以sa登录,接着输入sql语句:sp_attach_db 'newsy','d:\\sy.mdf','d:\\sy.ldf'
然后按下F5键,如果系统提示“命令已成功完成。”,那么恭喜,此时已经获得了对这个数据库的控制权。
如果再采用这种方法时不能拷贝数据库文件且系统提示“共享冲突”,则可能是因为相应的数据库文件正在被SQL SERVER使用,在这个过程中,这个文件是被SOL SERVER独占使用的,无法实现Copy,只有停止SQL SERVE服务才行,虽然这个时候能够用backup语句将它们备份了出来,但如果能够backup,就说明有访问权限了。 9.10.3 多功能密码破解软件