- UID
- 37101
注册时间2007-11-4
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
发表前的说明:昨天晚上第一次做教程,没有什么经验,做完后,看到没有时间了,本想把破文整理好发表的,但是光上传动画就用了我很久,我这儿网速慢,同学还下东西,更慢了!觉得破文留着也没用,给和我一样的菜鸟分享一下,并且把原来的crack和注册机也一起上传!希望这不会破会论坛的版规!也希望大家指点!(最近期末考试了,学习破解的时间也少了,只有寒假和过年到学校在好好学习了!/:002 )
发表动画的地址:https://www.chinapyg.com/viewthr ... &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, [442C30]
- 00441A5D . 8B00 mov eax, [eax]
-
复制代码 然后我们右键,选择超级字符串参考-->查找ASCII,我们找到 wrong code 后双击来到下面的地方:- 00441829 |. BA 8C184400 mov edx, 0044188C ; wrong code
- 0044182E |. A1 302C4400 mov eax, [442C30]
- 00441833 |. 8B00 mov eax, [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, [442C30]
- 00441819 |. 8B00 mov eax, [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, [442C30]
- 00441833 |. 8B00 mov eax, [eax]
- 00441835 |. E8 BAD6FFFF call 0043EEF4
-
复制代码 00441806 75 1A jnz short 00441822 这个地方就是关键跳了,我们把jnz改成jz就可以实现爆破了
我们随便输入看看
爆破成功
第二种方法:找注册码
下面我们来找注册码:
我们还是先注册一个用户名:unpack,注册码:111
然后注册,提示 wrong code!
按照第一种方法,我们来到- 00441829 |. BA 8C184400 mov edx, 0044188C ; wrong code
- 0044182E |. A1 302C4400 mov eax, [442C30]
- 00441833 |. 8B00 mov eax, [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, [ebp-4] ; 这里开始出现我们输入的假码
- 004417E3 |. 50 push eax
- 004417E4 |. 8D55 F4 lea edx, [ebp-C]
- 004417E7 |. 8B83 C4020000 mov eax, [ebx+2C4]
- 004417ED |. E8 B219FEFF call 004231A4
- 004417F2 |. 8B45 F4 mov eax, [ebp-C] ; 这个是我们输入的用户名
- 004417F5 |. 8D55 F8 lea edx, [ebp-8]
- 004417F8 |. E8 FBFEFFFF call 004416F8
- 004417FD |. 8B55 F8 mov edx, [ebp-8] ; 这里出现真码
- 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, [442C30]
- 00441819 |. 8B00 mov eax, [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, [442C30]
- 00441833 |. 8B00 mov eax, [eax]
-
复制代码 在 004417E0 |. 8B45 FC mov eax, [ebp-4] 这个地方,信息窗口出现了
堆栈 ss:[0013F408]=00D45E4C, (ASCII "111")
eax=00000003
“111”就是我们的假注册码
在 004417F2 |. 8B45 F4 mov eax, [ebp-C] 这个地方,信息窗口出现了我们输入的用户名
堆栈 ss:[0013F400]=00D45E5C, (ASCII "unpack")
eax=00000006
在这里 004417FD |. 8B55 F8 mov edx, [ebp-8] 出现了真码,信息窗口显示如下:
堆栈 ss:[0013F404]=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 编辑 ] |
评分
-
查看全部评分
|