- UID
- 50356
注册时间2008-5-1
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
【文章标题】: 超级抓书狂 3.0(200902) 破解教程
【文章作者】: kelvar(老马)
【作者邮箱】: [email protected]
【作者QQ号】: 44232165
【软件名称】: 超级抓书狂 3.0(200902)
【软件大小】: 3403KB
【下载地址】: 自己搜索下载
【加壳方式】: 无
【编写语言】: Delphi
【使用工具】: PEID,FlyOD,windowxp2
【操作平台】: Win9x/Me/NT/2000/XP/2003
【作者声明】: 悼念飘雪,发文纪念。
--------------------------------------------------------------------------------
【详细过程】
怀念飘雪,菜鸟水平有限,爆破纪念。
首先PEID查壳,Borland Delphi 6.0 - 7.0无壳,心下大慰。再看看安装目录下有个SysCfg.ini的文件。打开看看
- [system]
- language=chinese
- regtype=0
- regcode1=11111
- regcode2=11111
- savepath=D:\Software\试用软件\catchbook3\新建文件夹
- proxy=...
- proxyport=80
- autodown=1
-
复制代码 我们先试着改改,将
“regtype=0
regcode1=11111
regcode2=11111”
改为
“regtype=1
regcode1=11111
regcode2=11111”注释:我第一次改了以后,未注册消失了,但是有弹出框。
嘿嘿还是按正经的开工吧。点击开始运行,随便输入假注册码"1234567890123456789".弹出"注册码错误"。好有错误提示。
在汇编窗口右键超级字符串查找"注册"果然发现
"
00539194 --未注册
005391BD --未注册
"
好了,找到两个地方,直接双击来到代码窗口。然后在段首F2下断。见下面
- 0053916A \. C3 retn
- 0053916B .^ E9 FCABECFF jmp BookDown.00403D6C
- 00539170 .^ EB F0 jmp short BookDown.00539162 //向上跳转
- 00539172 . A1 D83D5400 mov eax,dword ptr ds:[543DD8] //看来只能在这里下断了
- 00539177 . 8B00 mov eax,dword ptr ds:[eax]
- 00539179 . 33D2 xor edx,edx
- 0053917B . E8 846AFFFF call BookDown.0052FC04 ; 关键Call
- 00539180 . 85C0 test eax,eax
- 00539182 . 75 29 jnz short BookDown.005391AD
- 00539184 . 8D55 C8 lea edx,dword ptr ss:[ebp-38]
- 00539187 . A1 60705400 mov eax,dword ptr ds:[547060]
- 0053918C . E8 2384F2FF call BookDown.004615B4
- 00539191 . 8D45 C8 lea eax,dword ptr ss:[ebp-38]
- 00539194 . BA 24935300 mov edx,BookDown.00539324 ; --未注册
- 00539199 . E8 52B5ECFF call BookDown.004046F0
- 0053919E . 8B55 C8 mov edx,dword ptr ss:[ebp-38]
- 005391A1 . A1 60705400 mov eax,dword ptr ds:[547060]
- 005391A6 . E8 3984F2FF call BookDown.004615E4
- 005391AB . EB 27 jmp short BookDown.005391D4
- 005391AD > 8D55 C4 lea edx,dword ptr ss:[ebp-3C]
- 005391B0 . A1 60705400 mov eax,dword ptr ds:[547060]
- 005391B5 . E8 FA83F2FF call BookDown.004615B4
- 005391BA . 8D45 C4 lea eax,dword ptr ss:[ebp-3C]
- 005391BD . BA 38935300 mov edx,BookDown.00539338 ; --已注册
- 005391C2 . E8 29B5ECFF call BookDown.004046F0
- 005391C7 . 8B55 C4 mov edx,dword ptr ss:[ebp-3C]
- 005391CA . A1 60705400 mov eax,dword ptr ds:[547060]
-
复制代码 我们看到
- 00539182 /75 29 jnz short BookDown.005391AD ; 关键跳转
-
复制代码 我们试试改这个跳转为JMP试试,发现还是有开始的要求注册提示的框框,虽然里面显示为已注册,但是这显然还有一个地方
要调用到或者检测这里。
那我们试试修改eax里面的值吧,将
- 00539180 . 85C0 test eax,eax ; 将它改为XOR eax试试
-
复制代码 发现不行,还是跟前面的一样会跳出注册提示框。看来只能跟进关键Call里面了,
Shift+F9运行,然后断在了0053917B这个位置,我们F7进去,来到
- 0052FC04 /$ 55 push ebp
- 0052FC05 |. 8BEC mov ebp,esp
- 0052FC07 |. B9 05000000 mov ecx,5
- 0052FC0C |> 6A 00 /push 0
- 0052FC0E |. 6A 00 |push 0
- 0052FC10 |. 49 |dec ecx
- 0052FC11 |.^ 75 F9 \jnz short BookDown.0052FC0C
- 0052FC13 |. 51 push ecx
- 0052FC14 |. 53 push ebx
- 0052FC15 |. 8955 F8 mov [local.2],edx
- 0052FC18 |. 8945 FC mov [local.1],eax
- 0052FC1B |. 8B45 F8 mov eax,[local.2]
- 0052FC1E |. E8 B54CEDFF call BookDown.004048D8
- 0052FC23 |. 33C0 xor eax,eax
- 0052FC25 |. 55 push ebp
- 0052FC26 |. 68 8AFD5200 push BookDown.0052FD8A
- 0052FC2B |. 64:FF30 push dword ptr fs:[eax]
- 0052FC2E |. 64:8920 mov dword ptr fs:[eax],esp
- 0052FC31 |. 8D55 E0 lea edx,[local.8]
- 0052FC34 |. A1 14425400 mov eax,dword ptr ds:[544214]
- 0052FC39 |. 8B00 mov eax,dword ptr ds:[eax]
- 0052FC3B |. E8 B822F5FF call BookDown.00481EF8
- 0052FC40 |. 8B45 E0 mov eax,[local.8]
- 0052FC43 |. 8D55 E4 lea edx,[local.7]
- 0052FC46 |. E8 CD9AEDFF call BookDown.00409718
- 0052FC4B |. 8D45 E4 lea eax,[local.7]
- 0052FC4E |. BA A4FD5200 mov edx,BookDown.0052FDA4 ; syscfg.ini
- 0052FC53 |. E8 984AEDFF call BookDown.004046F0
- 0052FC58 |. 8B4D E4 mov ecx,[local.7]
- 0052FC5B |. B2 01 mov dl,1
- 0052FC5D |. A1 E8D84300 mov eax,dword ptr ds:[43D8E8]
- 0052FC62 |. E8 31DDF0FF call BookDown.0043D998
- 0052FC67 |. 8945 F0 mov [local.4],eax
- 0052FC6A |. 33C0 xor eax,eax
- 0052FC6C |. 55 push ebp
- 0052FC6D |. 68 13FD5200 push BookDown.0052FD13
- 0052FC72 |. 64:FF30 push dword ptr fs:[eax]
- 0052FC75 |. 64:8920 mov dword ptr fs:[eax],esp
- 0052FC78 |. 837D F8 00 cmp [local.2],0
- 0052FC7C |. 74 0D je short BookDown.0052FC8B
- 0052FC7E |. 8D45 EC lea eax,[local.5]
- 0052FC81 |. 8B55 F8 mov edx,[local.2]
- 0052FC84 |. E8 3748EDFF call BookDown.004044C0
- 0052FC89 |. EB 1A jmp short BookDown.0052FCA5
- 0052FC8B |> 68 B8FD5200 push BookDown.0052FDB8 ; 0
- 0052FC90 |. 8D45 EC lea eax,[local.5]
- 0052FC93 |. 50 push eax
- 0052FC94 |. B9 C4FD5200 mov ecx,BookDown.0052FDC4 ; regcode1
- 0052FC99 |. BA D8FD5200 mov edx,BookDown.0052FDD8 ; system
- 0052FC9E |. 8B45 F0 mov eax,[local.4]
- 0052FCA1 |. 8B18 mov ebx,dword ptr ds:[eax]
- 0052FCA3 |. FF13 call dword ptr ds:[ebx]
- 0052FCA5 |> 68 B8FD5200 push BookDown.0052FDB8 ; 0
- 0052FCAA |. 8D45 E8 lea eax,[local.6]
- 0052FCAD |. 50 push eax
- 0052FCAE |. B9 E8FD5200 mov ecx,BookDown.0052FDE8 ; regcode2
- 0052FCB3 |. BA D8FD5200 mov edx,BookDown.0052FDD8 ; system
- 0052FCB8 |. 8B45 F0 mov eax,[local.4]
- 0052FCBB |. 8B18 mov ebx,dword ptr ds:[eax]
- 0052FCBD |. FF13 call dword ptr ds:[ebx]
- 0052FCBF |. 6A 00 push 0
- 0052FCC1 |. 8D45 DC lea eax,[local.9]
- 0052FCC4 |. 50 push eax
- 0052FCC5 |. B9 FCFD5200 mov ecx,BookDown.0052FDFC ; regtype
- 0052FCCA |. BA D8FD5200 mov edx,BookDown.0052FDD8 ; system
- 0052FCCF |. 8B45 F0 mov eax,[local.4]
- 0052FCD2 |. 8B18 mov ebx,dword ptr ds:[eax]
- 0052FCD4 |. FF13 call dword ptr ds:[ebx]
- 0052FCD6 |. 8B55 DC mov edx,[local.9]
- 0052FCD9 |. 8B45 FC mov eax,[local.1]
- 0052FCDC |. 05 18030000 add eax,318
- 0052FCE1 |. E8 9647EDFF call BookDown.0040447C
- 0052FCE6 |. 8B45 FC mov eax,[local.1]
- 0052FCE9 |. 8B80 18030000 mov eax,dword ptr ds:[eax+318]
- 0052FCEF |. E8 8093EDFF call BookDown.00409074
- 0052FCF4 |. 8B55 FC mov edx,[local.1]
- 0052FCF7 |. 8982 1C030000 mov dword ptr ds:[edx+31C],eax
- 0052FCFD |. 33C0 xor eax,eax
- 0052FCFF |. 5A pop edx
- 0052FD00 |. 59 pop ecx
- 0052FD01 |. 59 pop ecx
- 0052FD02 |. 64:8910 mov dword ptr fs:[eax],edx
- 0052FD05 |. 68 1AFD5200 push BookDown.0052FD1A
- 0052FD0A |> 8B45 F0 mov eax,[local.4]
- 0052FD0D |. E8 C638EDFF call BookDown.004035D8
- 0052FD12 \. C3 retn //由于不知道程序在那里返回我们每个
- 0052FD13 .^ E9 5440EDFF jmp BookDown.00403D6C //retn上都下断点
- 0052FD18 .^ EB F0 jmp short BookDown.0052FD0A
- 0052FD1A . 33C0 xor eax,eax
- 0052FD1C . 8945 F4 mov dword ptr ss:[ebp-C],eax
- 0052FD1F . 8D55 D8 lea edx,dword ptr ss:[ebp-28]
- 0052FD22 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
- 0052FD25 . E8 32020000 call BookDown.0052FF5C
- 0052FD2A . 8B4D D8 mov ecx,dword ptr ss:[ebp-28]
- 0052FD2D . 8B55 EC mov edx,dword ptr ss:[ebp-14]
- 0052FD30 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
- 0052FD33 . E8 CC000000 call BookDown.0052FE04
- 0052FD38 . 84C0 test al,al
- 0052FD3A . 74 07 je short BookDown.0052FD43
- 0052FD3C . C745 F4 01000000 mov dword ptr ss:[ebp-C],1
- 0052FD43 > 8D55 D4 lea edx,dword ptr ss:[ebp-2C]
- 0052FD46 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
- 0052FD49 . E8 0E020000 call BookDown.0052FF5C
- 0052FD4E . 8B4D D4 mov ecx,dword ptr ss:[ebp-2C]
- 0052FD51 . 8B55 E8 mov edx,dword ptr ss:[ebp-18]
- 0052FD54 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
- 0052FD57 . E8 A8000000 call BookDown.0052FE04
- 0052FD5C . 84C0 test al,al
- 0052FD5E . 74 07 je short BookDown.0052FD67
- 0052FD60 . C745 F4 02000000 mov dword ptr ss:[ebp-C],2
- 0052FD67 > 33C0 xor eax,eax
- 0052FD69 . 5A pop edx
- 0052FD6A . 59 pop ecx
- 0052FD6B . 59 pop ecx
- 0052FD6C . 64:8910 mov dword ptr fs:[eax],edx
- 0052FD6F . 68 91FD5200 push BookDown.0052FD91
- 0052FD74 > 8D45 D4 lea eax,dword ptr ss:[ebp-2C]
- 0052FD77 . BA 07000000 mov edx,7
- 0052FD7C . E8 CB46EDFF call BookDown.0040444C
- 0052FD81 . 8D45 F8 lea eax,dword ptr ss:[ebp-8]
- 0052FD84 . E8 9F46EDFF call BookDown.00404428
- 0052FD89 . C3 retn //由于不知道程序会在那里返回
- 0052FD8A .^ E9 DD3FEDFF jmp BookDown.00403D6C //我们在每个retn都下断看看先触发那个
- 0052FD8F .^ EB E3 jmp short BookDown.0052FD74
- 0052FD91 . 8B45 F4 mov eax,dword ptr ss:[ebp-C]
- 0052FD94 . 5B pop ebx
- 0052FD95 . 8BE5 mov esp,ebp
- 0052FD97 . 5D pop ebp
- 0052FD98 C3 retn //到达这里后发现Eax的值为0
- 0052FD99 0000 add byte ptr ds:[eax],al
- 0052FD9B 00FF add bh,bh
- 0052FD9D FFFF ??? ; Unknown command
- 0052FD9F FF0A dec dword ptr ds:[edx]
-
-
复制代码 实际运行发现最后程序在0052FD98这里开始返回,此时的EAX值为0。为了使程序中EAX为1
我们讲0052FD98开始的代码改为如下并保存,
- 0052FD98 B8 01000000 mov eax,1 //注意,运行后我们发现此处程序会读取三次。
- 0052FD9D C3 retn
- 0052FD9E 90 nop
-
复制代码 并保存,然后关掉OD试试,呵呵大功告成。
由于只是会爆破的菜鸟一只,追注册码的事情只能请大侠出马了。
--------------------------------------------------------------------------------
【经验总结】
爆破没多少技术含量,天草教程里有讲到这种方法。小试一把果然得逞。
--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!
2009年03月16日 20:54:13
Cracked file download link:
http://www.rayfile.com/files/cfb ... -8220-0019d11a795f/
[ 本帖最后由 kelvar 于 2009-3-16 21:32 编辑 ] |
评分
-
查看全部评分
|