当前位置:文档之家› 破解教程__破解收费软件的方法

破解教程__破解收费软件的方法

一、修改注册表文件,清除软件使用次数限制。打开软件,首先跳出来一个注册的框,其中用户名可以随便填写。左下角红色的字显示还可以试用的次数。点击试用以后,可以进入软件。但是试用总共有100次。我们要做的是消除次数限制,无限试用。

原理分析:一般来说,试用次数被记录在注册表中,不管使用了多少次,我们如果能找到这个注册表文件,把已经使用的次数改为0,又可以重头计算,那样不就是无限循环使用了吗?

工具:Regshot,一款体积小巧的注册表比较软件能在操作前后对注册表进行两次快照,自动比较。

步骤:

1、安装好软件以后,先不要启动软件。打开regs hot,选择第一快照。这记录的是试用次数还有100

次的注册表状态。

2、扫描完成后,不要关闭regshot,这时打开软件,点击试用,进入软件,然后可以退出了。

3、启动regshot,选择第二快照。扫描结束后,自动比较两个扫描结果,并弹出如图的报告。

报告显示有3处发生改变,找到显示改变注册表的路径。其中的[HKEY_LOCAL_MACHINE\SOFTWARE\tw\twzc]引起了我们的注意。因为这个路径tw是软件名称拓维的缩写,而且键的名称是day,肯定和时间有关。

4、点击开始—运行—输入regedit,回车,进入注册表编辑器。按照路径找到这个键,选中它,依次点击文件—导出。

可以将这个注册表文件任意命名保存。

这个文件记录的是还能试用99次的状态。当试用次数快结束时,双击导入这个文件,又恢复到可以试用

99次的状态了。至此,我们达到了循环试用的目的。

以前网上流传了一个卡巴斯基30天试用循环的补丁,批处理内容如下:

@echo off

@reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Kaspe rskyLab\LicStorage /f

@reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Micro soft\Cryptography\RNG /f

@reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Micro soft\SystemCertificates\SPC\Certificates /f pause & exit

核心部分就是删除了3个键。想找到这三个键,就可以使用Regshot这个工具,大家可以试一试。在选择激活试用版本前后,对注册表进行快照,比较之后就会得到这三个键,只要做成批处理,此外不管怎么改变外貌,加上个人的标记都行,此话后说。

二、爆破,让注册机制形同虚设。

在注册时,如果输入的注册码不对,就会提示注册失

败。能不能我们任意输入一个数,都会显示注册成功,让注册机制形同虚设?爆破就可以做到这样,不用知道注册码到底是什么,很强,很暴力,很简单。

原理分析:

给出这样一个软件的注册验证算法:

1、输入自己获得的注册码(简称输入码)。

2、调用储存在软件中的真正注册码(简称真码),与输入码比较。如果二者相同,即输入的是正确的码,则继续进行下一步。如果二者不同,则跳转到步骤4。

3、显示“注册成功”。结束。

4、显示“注册失败”。结束。

显然,这里的第二步的判断是一个关键。如果将第二步改为“调用储存在软件中的真正注册码(简称真码),与输入码比较。如果二者不同,即输入的是错误的码,则继续进行下一步。如果二者相同,则跳转到步骤4。”会出现怎样的情况呢?对了,当我们随便输入一个数字时,软件都会提示注册成功。这不就是破解了吗?而像这样通过修改判断的方法就是爆破。简单直接,但是需要你找到关键的跳转判断。

一些有用的语句

cmp a,b比较a与b

mov a,b把b的值送给a

ret返回主程序

nop无作用,英文“no operation”的简写,意思是“d o nothing”(机器码90)

call调用子程序

je 或jz若相等则跳(机器码74 或0F84)

jne或jnz若不相等则跳(机器码75或0F85) jmp无条件跳(机器码EB)

Jb若小于则跳

ja若大于则跳

jg若大于则跳

jge若大于等于则跳

jl若小于则跳

jle若小于等于则跳

pop出栈

push压栈

工具:调试工具(我习惯用Ollyice)

步骤:

1、老规矩还是查壳,发现是Aspack的壳,这个壳老套无比,有脱壳机搞定。

2、脱壳后,得到Unpacked.exe文件

3、打开调试工具,Ollyice,依次点击文件—打开,选择该文件路径,载入。

4、依次点击插件—超级字串参考—查找ASCII。

5、这里显示了所有软件提示的字符。

6、打开软件随意注册一下,看看提示的字符,记住“注册码输入错误”。

7、在ASCII码中查找到这个字符。

8、双击跟进,来到这个地址。从这个地址向上,沿着红线来到判断的地址,这里的jnz的意思就是比较输入码和真码,如果两个值不一样,就会沿着红线跳转到“注册码输入错误”的地址。如果相同,就会向下运行,来到“注册成功”的提示。所以,我们可以将这个jnz的判断改成相反的je。

9、在jnz这一行的地址上,右键,汇编,直接更

改成je。

10、更改完毕,点击汇编按钮,这一行已经变成红色。

11、右键,复制到可执行文件,选择全部,全部复制。保存文件,替换原来的文件。

12、我们关闭调试工具,打开爆破处理以后的Unp acked.exe软件(原文件已经变成Unpacked.bak备份了)。看到随意输入一个注册码,都可以注册成功,再打开软件,没有注册的提示框,信息变成了已经注

册。至此,爆破成功。

爆破方法比较简单,但是不是万能的,重点是要找到判断跳转的地址。

三、追踪注册码,名正言顺的注册成功。

另外一个思路,其实软件已经在寄存器中放臵了真码,只是我们看不见。我们可以用调试工具让软件一步步运行,我们查看寄存器,找到真码。

原理分析:真码已经在寄存器中储存,调试工具可以查看寄存器内容。在软件中很重要的是CALL命令,C

ALL是调用,存在一个关键CALL,调用的就是寄存器里的真码。找到这个关键CALL,就可以看到真码,用它来注册,当然会成功。一般来说,关键CALL在判断的上方。

工具:调试工具(我习惯Ollyice)

步骤:

1、按照爆破方法,找到判断jnz。

2、上方有很多CALL需要尝试,而且软件运行的时候是从上到下,所以找到jnz附近最上方的CALL下断点。在地址006E63E1,按下F2,地址变红,设臵了断点。断点意思是软件运行到这里,会被停止,我们可以进一步操作。我们并不知道哪一个是关键CALL,只是从上面开始尝试。

3、按下F9开始运行软件,当出现注册的提示时,随意输入注册码,点击注册,发现没有跳出错误提示,因为软件运行到断点时候就停住了。此时按F8让软件单步运行,同时我们注意观察右边寄存器中的ASC II值。当运行到地址006E6435时,寄存器出现了一长串字符,引起了我们的注意。A32D725C66BG309922 4B7796D9HA22AAGAG3,这一串字符不是机器码,有无规律可循,有理由猜想是储存在寄存器中的注册码。

册码。我们可以用这个注册码去注册软件了。

踪到了注册码。

相关主题
文本预览
相关文档 最新文档