软件爆破.docx
- 文档编号:9964215
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:16
- 大小:1.70MB
软件爆破.docx
《软件爆破.docx》由会员分享,可在线阅读,更多相关《软件爆破.docx(16页珍藏版)》请在冰豆网上搜索。
软件爆破
爆破,让注册机制形同虚设
在注册时,如果输入的注册码不对,就会提示注册失败。
能不能我们任意输入一个数,都会显示注册成功,让注册机制形同虚设?
爆破就可以做到这样,不用知道注册码到底是什么,很强,很暴力,很简单。
原理分析:
给出这样一个软件的注册验证算法:
1、输入自己获得的注册码(简称输入码)。
2、调用储存在软件中的真正注册码(简称真码),与输入码比较。
如果二者相同,即输入的是正确的码,则继续进行下一步。
如果二者不同,则跳转到步骤4。
3、显示“注册成功”。
结束。
4、显示“注册失败”。
结束。
显然,这里的第二步的判断是一个关键。
如果将第二步改为“调用储存在软件中的真正注册码(简称真码),与输入码比较。
如果二者不同,即输入的是错误的码,则继续进行下一步。
如果二者相同,则跳转到步骤4。
”会出现怎样的情况呢?
对了,当我们随便输入一个数字时,软件都会提示注册成功。
这不就是破解了吗?
而像这样通过修改判断的方法就是爆破。
简单直接,但是需要你找到关键的跳转判断。
一些有用的语句
cmpa,b比较a与b
mova,b把b的值送给a
ret返回主程序
nop无作用,英文“nooperation”的简写,意思是“donothing”(机器码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备份了)。
看到随意输入一个注册码,都可以注册成功,再打开软件,没有注册的提示框,信息变成了已经注册。
至此,爆破成功。
爆破方法比较简单,但是不是万能的,重点是要找到判断跳转的地址。
三、追踪注册码,名正言顺的注册成功。
另外一个思路,其实软件已经在寄存器中放置了真码,只是我们看不见。
我们可以用调试工具让软件一步步运行
3、追踪注册码,名正言顺的注册成功。
另外一个思路,其实软件已经在寄存器中放置了真码,只是我们看不见。
我们可以用调试工具让软件一步步运行,我们查看寄存器,找到真码。
原理分析:
真码已经在寄存器中储存,调试工具可以查看寄存器内容。
在软件中很重要的是CALL命令,CALL是调用,存在一个关键CALL,调用的就是寄存器里的真码。
找到这个关键CALL,就可以看到真码,用它来注册,当然会成功。
一般来说,关键CALL在判断的上方。
工具:
步骤:
1、按照爆破方法,找到判断jnz。
2、上方有很多CALL需要尝试,而且软件运行的时候是从上到下,所以找到jnz附近最上方的CALL下断点。
在地址006E63E1,按下F2,地址变红,设置了断点。
断点意思是软件运行到这里,会被停止,我们可以进一步操作。
我们并不知道哪一个是关键CALL,只是从上面开始尝试。
3、按下F9开始运行软件,当出现注册的提示时,随意输入注册码,点击注册,发现没有跳出错误提示,因为软件运行到断点时候就停住了。
此时按F8让软件单步运行,同时我们注意观察右边寄存器中的ASCII值。
当运行到地址006E6435时,寄存器出现了一长串字符,引起了我们的注意。
A32D725C66BG3099224B7796D9HA22AAGAG3,这一串字符不是机器码,有无规律可循,有理由猜想是储存在寄存器中的注册码。
4、右键,将寄存器的信息复制出来,也就得到了注册码。
我们可以用这个注册码去注册软件了。
5、注册结果当然是成功了。
至此,我们成功的追踪到了注册码。
追踪注册码的方法具有普适性,而且可以为制作注册机打下基础。
四、制作注册机,咱也当一回高手。
很多朋友觉得注册机很神奇,是高手的专利品。
其实,一个内存注册机只是把我们人工追注册码的过程自动完成,没什么神秘的。
还是以这个软件为例,有了前面追码的基础,我们可以制作一个属于自己的注册机。
原理分析:
我们为注册机规定读取ASCII的寄存器地址,运行寄存器以后,它会自动到该地址读取,并将读到的内容显示出来,就生成了注册码。
但注册机不是算号器,不涉及注册码的算法,只是走捷径取出寄存器中的东西。
基础还是调试工具中看到的信息
工具:
keymake(下载地址:
步骤:
1、打开工具软件keymake。
依次选择其它,内存注册机。
2、点击浏览,找到软件所在位置。
在设置注册机信息的界面中,点击左下角的添加。
3、中断地址就是006E6435,中断次数为1,第一字节E8,指令长度5(每两个字母是一个长度),这些是可以在调试工具中的HEX数据中看到的。
寄存器方式EAX。
填写完,点击添加。
4、界面如图所示,点击用户信息,可以添加自己的网页和邮箱。
5、设置好以后,点击生成。
6、选择一个界面样式,点击确定。
7、注册机必须放到软件安装目录下。
8、使用时,双击注册机,跳出来软件注册界面,随意输入注册码,提示注册码错误,注册机会显示正确的注册码。
但是,前8位数字要略去,因为我做的是一个简单的演示,一些有关地址等等的多余字节没去掉,注意一下就可以了。
这样,我们就制作了注册机,比破解更有水准了。
五、注册本质分析。
本来想做一个算法的分析,可是时间比较紧,没弄明白,就用这个来代替。
到底注册软件改变了什么?
工具:
Regshot(下载地址:
在未注册的状态下扫描了注册表为第一快照,然后用追到的注册码注册,最后扫描注册成功后的注册表为第二快照。
得到了比较结果。
Com这一项的变化是因为我们注册的公司名称有改变,day这一项是因为我们启动了软件,导致试用次数减少。
而id这一项是真正注册成功前后的变化。
而这一项的数值我们非常熟悉,它就是软件的机器识别码!
因此,这个软件注册的本质就是,注册表中id的值若是机器识别码,就会变成注册版。
因此,我们又得到了一种破解方法,不用追踪注册码,不用爆破,只要将机器识别码写入id这一个注册表文件,就会注册成功!
而机器识别码是软件显示出来的。
想不到吧。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 爆破