发布时间:2023-12-17 来源:win7旗舰版 浏览量:
网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。 【前 言】:这是我用ME以外的操作系统破的第一个软件!这个软件对于架设<传奇>私服的朋友是再熟悉不过了!以前这个软件下载的地方都有破解补丁放在一起的,可是我找了好久都没有找到,看来还是自己动手的好! 【软件名称】:DB Commander 2000 PRO(简称DBC_2000) 【作者声明】:本人发表这篇文章只是为了学习!!!请不用于商业用途或是将本文方法制作的注册机任意传播,读者看了文章后所做的事情与我无关,我也不会负责,请读者看了文章后三思而后行!最后希望大家在经济基础好的时候,支持共享软件! 【破解工具】:Ollydbg ————————————————————————————————— 【过 程】: 用Ollydbg加载主程序DB_Commander.exe 根据字符参考知道出错的地方一共有三处,分别对这三个地方下断! 输入用户名Yock和注册码987-654-321后,按注册,拦下: 00541398 . 53 PUSH EBX 00541399 . 56 PUSH ESI 0054139A . 8BF2 MOV ESI,EDX 0054139C . 8BD8 MOV EBX,EAX 0054139E . BA E4135400 MOV EDX,TKDB_Com.005413E4 005413A3 . B8 1C145400 MOV EAX,TKDB_Com.0054141C 005413A8 . E8 5F2FECFF CALL TKDB_Com.0040430C //这里好像是验证注册表是否有"Tsapanidis"这个值! //但是我注册表里面没有这个值! //这里可能是一个暗桩吧! 005413AD . 85C0 TEST EAX,EAX 005413AF . 7E 0C JLE SHORT TKDB_Com.005413BD //这里不能跳,以跳下去就挂了! //我这里是跳的,所以我把这里NOP掉了! 005413B1 . 8BD6 MOV EDX,ESI 005413B3 . 8BC3 MOV EAX,EBX 005413B5 . E8 76FCFFFF CALL TKDB_Com.00541030 //这里是关键,根进去! 005413BA . 5E POP ESI 005413BB . 5B POP EBX 005413BC . C3 RETN 005413BD > E8 5AB4ECFF CALL TKDB_Com.0040C81C 005413C2 . 6A 00 PUSH 0 005413C4 . 66:8B0D 281454>MOV CX,WORD PTR DS:[541428] 005413CB . 33D2 XOR EDX,EDX 005413CD . B8 34145400 MOV EAX,TKDB_Com.00541434 //这里就是出错的地方了! 005413D2 . E8 3569F0FF CALL TKDB_Com.00447D0C 005413D7 . 5E POP ESI 005413D8 . 5B POP EBX 005413D9 . C3 RETN ----------------------------------------------------------------- 上面5413b5的CALL来到这里! 00541030 /$ 55 PUSH EBP 00541031 |. 8BEC MOV EBP,ESP 00541033 |. 6A 00 PUSH 0 00541035 |. 6A 00 PUSH 0 00541037 |. 6A 00 PUSH 0 00541039 |. 53 PUSH EBX 0054103A |. 33C0 XOR EAX,EAX 0054103C |. 55 PUSH EBP 0054103D |. 68 20125400 PUSH TKDB_Com.00541220 00541042 |. 64:FF30 PUSH DWORD PTR FS:[EAX] 00541045 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 00541048 |. A1 AC215700 MOV EAX,DWORD PTR DS:[5721AC] 0054104D |. FF00 INC DWORD PTR DS:[EAX] 0054104F |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4] 00541052 |. A1 383B5700 MOV EAX,DWORD PTR DS:[573B38] 00541057 |. 8B80 EC010000 MOV EAX,DWORD PTR DS:[EAX+1EC] 0054105D |. E8 EA8CF0FF CALL TKDB_Com.00449D4C 00541062 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 00541065 |. 50 PUSH EAX 00541066 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] 00541069 |. A1 383B5700 MOV EAX,DWORD PTR DS:[573B38] 0054106E |. 8B80 E0010000 MOV EAX,DWORD PTR DS:[EAX+1E0] 00541074 |. E8 8B3DEEFF CALL TKDB_Com.00424E04 00541079 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] //这里是用户名! 0054107C |. 5A POP EDX //这里是输入的假注册码! 0054107D |. E8 8EF6FFFF CALL TKDB_Com.00540710 //关键跟进去! 00541082 |. 84C0 TEST AL,AL 00541084 |. 0F84 C1000000 JE TKDB_Com.0054114B //这里不跳的话,就把正确的注册信息保存起来! //跳走的话就出错咯! 0054108A |. A1 C81C5700 MOV EAX,DWORD PTR DS:[571CC8] 0054108F |. C600 01 MOV BYTE PTR DS:[EAX],1 00541092 |. A1 B0215700 MOV EAX,DWORD PTR DS:[5721B0] 00541097 |. C600 00 MOV BYTE PTR DS:[EAX],0 ............................ ............. 00541144 |. E8 C36BF0FF CALL TKDB_Com.00447D0C 00541149 |. EB 49 JMP SHORT TKDB_Com.00541194 0054114B |> 6A 40 PUSH 40 0054114D |. E8 2E64ECFF CALL <JMP.&user32.MessageBeep> 00541152 |. A1 AC215700 MOV EAX,DWORD PTR DS:[5721AC] 00541157 |. 8338 03 CMP DWORD PTR DS:[EAX],3 0054115A |. 7C 23 JL SHORT TKDB_Com.0054117F 0054115C |. 6A 00 PUSH 0 0054115E |. 66:8B0D 981254>MOV CX,WORD PTR DS:[541298] 00541165 |. 33D2 XOR EDX,EDX 00541167 |. B8 14135400 MOV EAX,TKDB_Com.00541314 Goodbye..." //这里是注册成功的地方! 0054116C |. E8 9B6BF0FF CALL TKDB_Com.00447D0C 00541171 |. A1 D41F5700 MOV EAX,DWORD PTR DS:[571FD4] 00541176 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 00541178 |. E8 634FEFFF CALL TKDB_Com.004360E0 0054117D |. EB 15 JMP SHORT TKDB_Com.00541194 0054117F |> 6A 00 PUSH 0 00541181 |. 66:8B0D 981254>MOV CX,WORD PTR DS:[541298] 00541188 |. 33D2 XOR EDX,EDX 0054118A |. B8 50135400 MOV EAX,TKDB_Com.00541350 //这里是另外一个出错的地方了! 0054118F |. E8 786BF0FF CALL TKDB_Com.00447D0C 00541194 |> A1 C81C5700 MOV EAX,DWORD PTR DS:[571CC8] 00541199 |. 8038 00 CMP BYTE PTR DS:[EAX],0 0054119C |. 74 52 JE SHORT TKDB_Com.005411F0 ----------------------------------------------------------------- 上面54107d的CALL来到这里! 00540710 /$ 55 PUSH EBP 00540711 |. 8BEC MOV EBP,ESP 00540713 |. 83C4 F0 ADD ESP,-10 00540716 |. 53 PUSH EBX 00540717 |. 56 PUSH ESI 00540718 |. 57 PUSH EDI 00540719 |. 33C9 XOR ECX,ECX 0054071B |. 894D F0 MOV DWORD PTR SS:[EBP-10],ECX 0054071E |. 894D F4 MOV DWORD PTR SS:[EBP-C],ECX 00540721 |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX 00540724 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 00540727 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0054072A |. E8 A93AECFF CALL TKDB_Com.004041D8 0054072F |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 00540732 |. E8 A13AECFF CALL TKDB_Com.004041D8 00540737 |. 33C0 XOR EAX,EAX 00540739 |. 55 PUSH EBP 0054073A |. 68 4C085400 PUSH TKDB_Com.0054084C 0054073F |. 64:FF30 PUSH DWORD PTR FS:[EAX] 00540742 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 00540745 |. 33FF XOR EDI,EDI 00540747 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] //输入的用户名! 0054074A |. E8 D538ECFF CALL TKDB_Com.00404024 //取用户名的位数! 0054074F |. 8BF0 MOV ESI,EAX 00540751 |. 85F6 TEST ESI,ESI //是否有用户名! 00540753 |. 7E 34 JLE SHORT TKDB_Com.00540789 //没有就跳走咯! 00540755 |. BB 01000000 MOV EBX,1 //赋值1,EBX作为计数器! 0054075A |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4] 0054075D |. 8A4418 FF |MOV AL,BYTE PTR DS:[EAX+EBX-1] 00540761 |. 8BD0 |MOV EDX,EAX 00540763 |. 80C2 D0 |ADD DL,0D0 00540766 |. 80EA 0A |SUB DL,0A 00540769 |. 72 10 |JB SHORT TKDB_Com.0054077B //比较当前用户名是否是数字,是的话就跳下去直接累加! 0054076B |. 80C2 F9 |ADD DL,0F9 0054076E |. 80EA 1A |SUB DL,1A 00540771 |. 72 08 |JB SHORT TKDB_Com.0054077B //比较当前用户名是否是大写字母,是的话就跳下取直接累加! 00540773 |. 80C2 FA |ADD DL,0FA 00540776 |. 80EA 1A |SUB DL,1A 00540779 |. 73 0A |JNB SHORT TKDB_Com.00540785 //比较当前用户名是否是小写字母,是的话就不跳! //如果不是小写字母的话跳走不累加了! 0054077B |> 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4] 0054077E |. 25 FF000000 |AND EAX,0FF 00540783 |. 03F8 |ADD EDI,EAX 00540785 |> 43 |INC EBX 00540786 |. 4E |DEC ESI 00540787 |.^75 D1 \JNZ SHORT TKDB_Com.0054075A //从0054075A到这里的循环是把用户名的值累加起来 //累加的结果保存再EDI里面! //注意:要是用户名有非法字符和空格的话,就不作计算! //也就是说,只计算用户名的"A-Z"和"a-z"和"0-9"之间的数! 00540789 |> 8BC7 MOV EAX,EDI //累加值=EDI=EAX 0054078B |. C1E0 02 SHL EAX,2 //逻辑左移 0054078E |. 8BD7 MOV EDX,EDI //EDI=EDX=累加值 00540790 |. 4A DEC EDX //减一 00540791 |. 8BCA MOV ECX,EDX //EDX=ECX=累加值减一 00540793 |. 99 CDQ 00540794 |. F7F9 IDIV ECX //整数除法 00540796 |. 8BD7 MOV EDX,EDI //累加值=EDI=EDX 00540798 |. 85D2 TEST EDX,EDX //这里我理解是--是否有累加值,有的话就跳! 0054079A |. 79 03 JNS SHORT TKDB_Com.0054079F //我这里是跳下去的! 0054079C |. 83C2 03 ADD EDX,3 0054079F |> C1FA 02 SAR EDX,2 //算术右移 005407A2 |. 0FAFD7 IMUL EDX,EDI //EDX=EDX*EDI 005407A5 |. 03C2 ADD EAX,EDX //EAX=EAX+EDX 005407A7 |. 05 391B0000 ADD EAX,1B39 //累加1B39 005407AC |. 8BF8 MOV EDI,EAX //EAX=EDI 005407AE |. 81C7 00E1F505 ADD EDI,5F5E100 //累加5F5E100 //这里的EDI的十进制就十真的注册码了! //注册码就是怎么练成的! //对于我来说,我有学到了一些宝贵的东西了,你呢??? 005407B4 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 005407B7 |. E8 EC35ECFF CALL TKDB_Com.00403DA8 005407BC |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] //这里是输入的假注册码! 005407BF |. E8 6038ECFF CALL TKDB_Com.00404024 //取假注册码的位数! 005407C4 |. 8BF0 MOV ESI,EAX 005407C6 |. 85F6 TEST ESI,ESI //有没有输入? 005407C8 |. 7E 3C JLE SHORT TKDB_Com.00540806 //没有输入注册码就跳走咯! 005407CA |. BB 01000000 MOV EBX,1 //赋值1,EBX作为计数器! 005407CF |> 8B45 F8 /MOV EAX,DWORD PTR SS:[EBP-8] 005407D2 |. 8A4418 FF |MOV AL,BYTE PTR DS:[EAX+EBX-1] 005407D6 |. 04 D0 |ADD AL,0D0 005407D8 |. 2C 0A |SUB AL,0A 005407DA |. 72 0C |JB SHORT TKDB_Com.005407E8 005407DC |. 04 F9 |ADD AL,0F9 005407DE |. 2C 1A |SUB AL,1A 005407E0 |. 72 06 |JB SHORT TKDB_Com.005407E8 005407E2 |. 04 FA |ADD AL,0FA 005407E4 |. 2C 1A |SUB AL,1A 005407E6 |. 73 1A |JNB SHORT TKDB_Com.00540802 005407E8 |> 8D45 F0 |LEA EAX,DWORD PTR SS:[EBP-10] 005407EB |. 8B55 F8 |MOV EDX,DWORD PTR SS:[EBP-8] 005407EE |. 8A541A FF |MOV DL,BYTE PTR DS:[EDX+EBX-1] 005407F2 |. E8 5537ECFF |CALL TKDB_Com.00403F4C 005407F7 |. 8B55 F0 |MOV EDX,DWORD PTR SS:[EBP-10] 005407FA |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C] 005407FD |. E8 2A38ECFF |CALL TKDB_Com.0040402C 00540802 |> 43 |INC EBX 00540803 |. 4E |DEC ESI 00540804 |.^75 C9 \JNZ SHORT TKDB_Com.005407CF //从005407CF到这里的循环是把注册码的"-"去掉的! //举个例子,我输入的注册码是"987-654-321" //经过这里有就变成"987654321"了! 00540806 |> 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10] 00540809 |. 8BC7 MOV EAX,EDI 0054080B |. E8 F47FECFF CALL TKDB_Com.00408804 00540810 |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] //这里就是真的注册码了! 00540813 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] //这里是我输入的假注册码! 00540816 |. E8 1939ECFF CALL TKDB_Com.00404134 0054081B |. 0F94C3 SETE BL 0054081E |. BA 64085400 MOV EDX,TKDB_Com.00540864 ; ASCII "Beverly Saunders Site" //这个就是万能注册名了! 00540823 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] //这里是输入的用户名! //可见这个软件有一个万能注册名的! 00540826 |. E8 E13AECFF CALL TKDB_Com.0040430C 0054082B |. 85C0 TEST EAX,EAX 0054082D |. 7E 02 JLE SHORT TKDB_Com.00540831 0054082F |. 33DB XOR EBX,EBX 00540831 |> 33C0 XOR EAX,EAX 00540833 |. 5A POP EDX 00540834 |. 59 POP ECX 00540835 |. 59 POP ECX ------------------------------------------------------------------ 【总 结】: 又来到我最怕的地方了---总结! 说起来,这个软件又一个地方我搞不懂的就是为什么要检查注册表的 [\Software\T&T Solutions\DB Commander 2000 PRO] Tsapanidis 我的机子里面没有这个项目,所以要把 005413AF . 7E 0C JLE SHORT TKDB_Com.005413BD NOP掉才可以注册成功!如果大虾们愿意研究的话,可以告诉我一个究竟吗? 把用户名的字符的ASCII码累加以来!(非法字符和空格除外,只累加这些值.包括"A-Z"/"a-z"/"0-9") 最后把累加值经过下面的运算得出得结果的十进制就是真的注册码了! 累加值=EAX=EDI MOV EAX,EDI SHL EAX,2 MOV EDX,EDI DEC EDX MOV ECX,EDX CDQ IDIV ECX SAR EDX,2 IMUL EDX,EDI ADD EAX,EDX ADD EAX,1B39 MOV EDI,EAX ADD EDI,5F5E100 最后注册码的结果=EDI的十进制值! 注册信息保存在: [HKEY_LOCAL_MACHINE\SOFTWARE\T&T Solutions\DB Commander 2000 PRO\5.0.0.0] "RegNumber"="005F69C6B" //保存方式是注册码的十六进制! 一组可用的注册码: Yock 100-047-979 -------------------------------------------------------------------- 最后在这里真心感谢你花了那么多时间看这篇文章!谢谢了... 网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。 |
DB Commander 2000 PRO(简称DBC_2000)笔记
【前 言】:这是我用ME以外的操作系统破的第一个软件!这个软件对于架设<传奇>私