菜鸟简单爆破和追码做注册机动画的破文补上
发表前的说明:昨天晚上第一次做教程,没有什么经验,做完后,看到没有时间了,本想把破文整理好发表的,但是光上传动画就用了我很久,我这儿网速慢,同学还下东西,更慢了!觉得破文留着也没用,给和我一样的菜鸟分享一下,并且把原来的crack和注册机也一起上传!希望这不会破会论坛的版规!也希望大家指点!(最近期末考试了,学习破解的时间也少了,只有寒假和过年到学校在好好学习了!/:002 )发表动画的地址:https://www.chinapyg.com/viewthread.php?tid=24867&extra=page%3D1
【文章标题】: 303-一个crack的爆破和寻找注册码
【文章作者】: unpack
【作者邮箱】: *
【作者主页】: *
【软件名称】: 303.exe
【软件大小】: 303 KB
【下载地址】: 自己搜索下载
【加壳方式】: 未加壳
【保护方式】: 注册码
【编写语言】: Borland Delphi 4.0 - 5.0
【使用工具】: OD、PEiD
【操作平台】: windows xp
【软件介绍】: 瑞雪波斯猫一个爆破教程中的crack。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
前几天,不知在哪个论坛下了瑞雪波斯猫的破解教程,主要是教菜鸟识别一些破解的基础知识,方法用的是爆破法,好像是
用w32dsm爆破的,爆破的是301的,然后留给我们学习的是303的教程。我想我学了有段时间了,也想爆破爆破啊!以前爆破
过一个crack,但是那个太简单了,不敢被老鸟们笑话,就没有发表了。而今天是我实践了找注册码,并做了一个补丁和一个
注册机,算是这段时间的鉴证吧!希望老鸟看后能够给我指点,可惜的是现在还不会算法分析!希望能过有老鸟指点算法分
析!
好了,我们开始吧!
第一种方法,爆破!
首先,出于习惯,先用PEiD查壳
Borland Delphi 4.0 - 5.0
接着,我们先随便注册一下,提示wrong code!
我们用OD载入:来到这儿00441A48 > $55 push ebp '程序的入口
00441A49 .8BEC mov ebp, esp
00441A4B .83C4 F4 add esp, -0C
00441A4E .B8 40194400 mov eax, 00441940
00441A53 .E8 4C41FCFF call 00405BA4
00441A58 .A1 302C4400 mov eax,
00441A5D .8B00 mov eax,
然后我们右键,选择超级字符串参考-->查找ASCII,我们找到wrong code 后双击来到下面的地方:00441829|.BA 8C184400 mov edx, 0044188C ;wrong code
0044182E|.A1 302C4400 mov eax,
00441833|.8B00 mov eax,
00441835|.E8 BAD6FFFF call 0043EEF4
我们往上查找,可以看到00441800|.58 pop eax
00441801|.E8 3E23FCFF call 00403B44
00441806 75 1A jnz short 00441822 ;和真码比较,如果不相等就跳到wrong code
00441808|.6A 40 push 40
0044180A|.B9 6C184400 mov ecx, 0044186C ;u made it
0044180F|.BA 78184400 mov edx, 00441878 ;right code
00441814|.A1 302C4400 mov eax,
00441819|.8B00 mov eax,
0044181B|.E8 D4D6FFFF call 0043EEF4
00441820|.EB 18 jmp short 0044183A
00441822|>6A 10 push 10
00441824|.B9 84184400 mov ecx, 00441884 ;error
00441829|.BA 8C184400 mov edx, 0044188C ;wrong code
0044182E|.A1 302C4400 mov eax,
00441833|.8B00 mov eax,
00441835|.E8 BAD6FFFF call 0043EEF4
00441806 75 1A jnz short 00441822 这个地方就是关键跳了,我们把jnz改成jz就可以实现爆破了
我们随便输入看看
爆破成功
第二种方法:找注册码
下面我们来找注册码:
我们还是先注册一个用户名:unpack,注册码:111
然后注册,提示 wrongcode!
按照第一种方法,我们来到00441829|.BA 8C184400 mov edx, 0044188C ;wrong code
0044182E|.A1 302C4400 mov eax,
00441833|.8B00 mov eax,
这个地方,我们往上不远处找到下面的地方004417B8/.55 push ebp
004417B9|.8BEC mov ebp, esp
004417BB|.6A 00 push 0
004417BD|.6A 00 push 0
004417BF|.6A 00 push 0
004417C1|.53 push ebx
004417C2|.8BD8 mov ebx, eax
我们在 004417B8/.55 push ebp 这个地方F2下断
然后ctrl+F2重新运行,然后按F9运行(也可以下断后直接F9运行)
输入刚刚我们我们的用户名:unpack,和假注册码:111
然后点击确定
来到刚刚下断的地方 004417B8/.55 push ebp
我们按F8单步向下走来到这个地方004417E0|.8B45 FC mov eax, ;这里开始出现我们输入的假码
004417E3|.50 push eax
004417E4|.8D55 F4 lea edx,
004417E7|.8B83 C4020000 mov eax,
004417ED|.E8 B219FEFF call 004231A4
004417F2|.8B45 F4 mov eax, ;这个是我们输入的用户名
004417F5|.8D55 F8 lea edx,
004417F8|.E8 FBFEFFFF call 004416F8
004417FD|.8B55 F8 mov edx, ;这里出现真码
00441800|.58 pop eax
00441801|.E8 3E23FCFF call 00403B44
00441806 75 1A jnz short 00441822 ;和真码比较,如果不相等就跳到wrong code
00441808|.6A 40 push 40
0044180A|.B9 6C184400 mov ecx, 0044186C ;u made it
0044180F|.BA 78184400 mov edx, 00441878 ;right code
00441814|.A1 302C4400 mov eax,
00441819|.8B00 mov eax,
0044181B|.E8 D4D6FFFF call 0043EEF4
00441820|.EB 18 jmp short 0044183A
00441822|>6A 10 push 10
00441824|.B9 84184400 mov ecx, 00441884 ;error
00441829|.BA 8C184400 mov edx, 0044188C ;wrong code
0044182E|.A1 302C4400 mov eax,
00441833|.8B00 mov eax,
在 004417E0|.8B45 FC mov eax, 这个地方,信息窗口出现了
堆栈 ss:=00D45E4C, (ASCII "111")
eax=00000003
“111”就是我们的假注册码
在 004417F2|.8B45 F4 mov eax, 这个地方,信息窗口出现了我们输入的用户名
堆栈 ss:=00D45E5C, (ASCII "unpack")
eax=00000006
在这里 004417FD|.8B55 F8 mov edx, 出现了真码,信息窗口显示如下:
堆栈 ss:=00D45E70, (ASCII "E79F-0068-A8D1-383D")
edx=00000000
那么E79F-0068-A8D1-383D 这个就是用户名 unpack 的注册码了,我们可以用来一试
打开程序,输入用户名 :unpack 注册码:E79F-0068-A8D1-383D
提示 right code
ok,这样,我们就找到了程序的注册码了!
--------------------------------------------------------------------------------
【经验总结】
刚刚学习脱壳破解,没什么经验,只会找一些简单的crack爆破和追注册码!
00441801|.E8 3E23FCFF call 00403B44 利用这个地方,我做了一个注册机
利用第一种方法我做了一个补丁!
让大家见笑了
还没有学会算法,希望高手指点!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于PYG论坛, 转载请注明作者并保持文章的完整, 谢谢!
2008年01月04日 23:13:37
[ 本帖最后由 unpack 于 2008-1-5 16:57 编辑 ] 适合咱菜鸟看,,,学习 /:001 我为什么下载不了? 原帖由 cxcxs 于 2008-1-5 20:24 发表 https://www.chinapyg.com/images/common/back.gif
我为什么下载不了?
你多试几次看看,我的能下啊
我也没有设置权限啊
难道我的权限大了一点,我发的附件跟那有关?
不过好像看你也快到了和我一样的权限了啊 ~~ 这么巧,我也有这个CM
我记得我追这个注册码的时候曾经遇到shr和sar的难题,跑来论坛问。不过没有人回复。自己瞎折腾了一个晚上,原来自己把进制弄错了。
楼主的注册机我这边用不到,我把我自己的发上来,用VB写的 注册机VB源码
Private Sub regname_Change()
Dim regnamestr As String
Dim regcodedbl1 As Double
Dim regcodedbl2 As Double
regnamestr = regname.Text
regcodedbl1 = 1228473093
regcodedbl2 = 1214452256
Dim iint As Integer
Dim lenint As Integer
lenint = Len(regnamestr)
For iint = 1 To lenint
regcodedbl1 = regcodedbl1 Xor Asc(Mid(regnamestr, iint, 1))
regcodedbl2 = regcodedbl1 Xor regcodedbl2
If regcodedbl1 Mod 2 = 0 Then
regcodedbl1 = regcodedbl1 \ 2
Else
regcodedbl1 = regcodedbl1 \ 2
regcodedbl1 = regcodedbl1 Xor 18875153
End If
Next
Dim regcodedbl(0 To 3) As Double
regcodedbl(0) = regcodedbl1 And 65535
regcodedbl(1) = regcodedbl1 \ 2 ^ 16
regcodedbl(2) = regcodedbl2 And 65535
regcodedbl(3) = regcodedbl2 \ 2 ^ 16
Dim regcodestr(0 To 3) As String
regcodestr(0) = Hex(regcodedbl(0))
regcodestr(1) = Hex(regcodedbl(1))
regcodestr(2) = Hex(regcodedbl(2))
regcodestr(3) = Hex(regcodedbl(3))
For i = 1 To 3
While Len(regcodestr(i)) < 4
regcodestr(i) = "0" & regcodestr(i)
Wend
Next
regcode.Text = regcodestr(0) & "-" & regcodestr(1) & "-" & regcodestr(2) & "-" & regcodestr(3)
End Sub 原帖由 sailorcwx 于 2008-1-5 23:46 发表 https://www.chinapyg.com/images/common/back.gif
这么巧,我也有这个CM
我记得我追这个注册码的时候曾经遇到shr和sar的难题,跑来论坛问。不过没有人回复。自己瞎折腾了一个晚上,原来自己把进制弄错了。
楼主的注册机我这边用不到,我把我自己的发上来,用VB写的 ...
已经在群里给你解释了,只不过当时你没有明白而已 很好的教程,学习一下 我也用keymake作了个注册机,没有看懂算法/:L
我也只是会这些简单的,希望有高手能多指点一下算法
页:
[1]
2