现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

软件破解让注册机制形同虚设

2013-01-29 22:32 工业·编程 ⁄ 共 4197字 ⁄ 字号 暂无评论

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

原理分析:一般来说,试用次数被记录在注册表中,不管使用了多少次,我们如果能找到这个注册表文件,把已经使用的次数改为0,又可以重头计算,那样不就是无限循环使用了吗?
工具:Regshot,一款体积小巧的注册表比较软件能在操作前后对注册表进行两次快照,自动比较。
步骤:
1、    安装好软件以后,先不要启动软件。打开regshot,选择第一快照。这记录的是试用次数还有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/KasperskyLab/LicStorage /f
@reg delete HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Cryptography/RNG /f
@reg delete HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/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”的简写,意思是“do 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、    我们关闭调试工具,打开爆破处理以后的Unpacked.exe软件(原文件已经变成Unpacked.bak备份了)。看到随意输入一个注册码,都可以注册成功,再打开软件,没有注册的提示框,信息变成了已经注册。至此,爆破成功。

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

三、    追踪注册码,名正言顺的注册成功。
另外一个思路,其实软件已经在寄存器中放置了真码,只是我们看不见。我们可以用调试工具让软件一步步运行,我们查看寄存器,找到真码。
原理分析:真码已经在寄存器中储存,调试工具可以查看寄存器内容。在软件中很重要的是CALL命令,CALL是调用,存在一个关键CALL,调用的就是寄存器里的真码。找到这个关键CALL,就可以看到真码,用它来注册,当然会成功。一般来说,关键CALL在判断的上方。
工具:调试工具(我习惯Ollyice)
步骤:
1、    按照爆破方法,找到判断jnz。
2、上方有很多CALL需要尝试,而且软件运行的时候是从上到下,所以找到jnz附近最上方的CALL下断点。在地址006E63E1,按下F2,地址变红,设置了断点。断点意思是软件运行到这里,会被停止,我们可以进一步操作。我们并不知道哪一个是关键CALL,只是从上面开始尝试。

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

4、右键,将寄存器的信息复制出来,也就得到了注册码。我们可以用这个注册码去注册软件了。

5、    注册结果当然是成功了。至此,我们成功的追踪到了注册码。

追踪注册码的方法具有普适性,而且可以为制作注册机打下基础。
四、    制作注册机,咱也当一回高手。
很多朋友觉得注册机很神奇,是高手的专利品。其实,一个内存注册机只是把我们人工追注册码的过程自动完成,没什么神秘的。还是以这个软件为例,有了前面追码的基础,我们可以制作一个属于自己的注册机。
原理分析:我们为注册机规定读取ASCII的寄存器地址,运行寄存器以后,它会自动到该地址读取,并将读到的内容显示出来,就生成了注册码。但注册机不是算号器,不涉及注册码的算法,只是走捷径取出寄存器中的东西。基础还是调试工具中看到的信息

工具:keymake(下载地址:http://www.heibai.net/download/Soft/Soft_3123.htm
步骤:
1、    打开工具软件keymake。依次选择其它,内存注册机。

2、    点击浏览,找到软件所在位置。在设置注册机信息的界面中,点击左下角的添加。

3、中断地址就是006E6435,中断次数为1,第一字节E8,指令长度5(每两个字母是一个长度),这些是可以在调试工具中的HEX数据中看到的。寄存器方式EAX。填写完,点击添加。

、界面如图所示,点击用户信息,可以添加自己的网页和邮箱。 5、设置好以后,点击生成。 6、选择一个界面样式,点击确定。 7、注册机必须放到软件安装目录下。 8、使用时,双击注册机,跳出来软件注册界面,随意输

4、    界面如图所示,点击用户信息,可以添加自己的网页和邮箱。

5、    设置好以后,点击生成。

6、    选择一个界面样式,点击确定。

7、    注册机必须放到软件安装目录下。

8、使用时,双击注册机,跳出来软件注册界面,随意输入注册码,提示注册码错误,注册机会显示正确的注册码。但是,前8位数字要略去,因为我做的是一个简单的演示,一些有关地址等等的多余字节没去掉,注意一下就可以了。

这样,我们就制作了注册机,比破解更有水准了。
五、    注册本质分析。
本来想做一个算法的分析,可是时间比较紧,没弄明白,就用这个来代替。到底注册软件改变了什么?
工具:Regshot(下载地址:http://www.heibai.net/download/Soft/Soft_11727.htm
在未注册的状态下扫描了注册表为第一快照,然后用追到的注册码注册,最后扫描注册成功后的注册表为第二快照。得到了比较结果。

Com这一项的变化是因为我们注册的公司名称有改变,day这一项是因为我们启动了软件,导致试用次数减少。而id这一项是真正注册成功前后的变化。而这一项的数值我们非常熟悉,它就是软件的机器识别码!因此,这个软件注册的本质就是,注册表中id的值若是机器识别码,就会变成注册版。因此,我们又得到了一种破解方法,不用追踪注册码,不用爆破,只要将机器识别码写入id这一个注册表文件,就会注册成功!而机器识别码是软件显示出来的。想不到吧。

给我留言

留言无头像?