首页
社区
课程
招聘
爆破软件管理专家V1.22a
发表于: 2004-5-14 18:04 5729

爆破软件管理专家V1.22a

2004-5-14 18:04
5729
爆破软件管理专家V1.22a

【破文标题】 爆破软件管理专家 V1.22a

【破文作者】 aki

【住址】http://www.newhua.com/soft/15188.htm

【难 度】:简单,献给像我等这样的菜鸟学习

【作者邮箱】 58216365@163com

【使用工具】 Peid,W32Dasm,ollydbg

【破解平台】 WinXP

【软件名称】FlashSoftManager(软件管理专家)

【价格】25.00¥/每注册用户

【未注册限制】未注册版部分功能不能使用。

【软件简介】本软件就是用来管理下载文件的,你只要选中一个软件,将它拖拽到Flash Soft Manager的窗口中,填写一些备忘的信息,就把这个下载软件分门别类地放到文件盒中了,下次需要的话,不用去找,直接在软件中调用就ok了,是不是挺方便的?

-----------------------------------------------------
【破解过程】
用peid查壳(习惯)无壳,Borland Delphi 写的。呵呵,我喜欢。主程序为Dfbox.exe,未注册时标题有No register字样。在安装目录下有Dfbox.ini配置文件,打开看看,有UserName和UserCode项,说明它是把注册信息放在了这里,启动时检验。用od载入,下断bpx getprivateprofilestringa大体跟了一下,由于不太懂汇编,所以也没看出什么眉目来。用W32d载入,查找No register,我们来到这里
* Referenced by a CALL at Address:
|:004EB277   
|
:00491308 53                      push ebx
:00491309 56                      push esi
:0049130A 8BF2                    mov esi, edx
:0049130C 8BD8                    mov ebx, eax

* Possible StringData Ref from Code Obj ->"No register"
                                  |
:0049130E 6830134900              push 00491330
:00491313 56                      push esi

* Possible StringData Ref from Code Obj ->"UserCode"
                                  |
:00491314 B944134900              mov ecx, 00491344

* Possible StringData Ref from Code Obj ->"UserInfo"
                                  |
:00491319 BA58134900              mov edx, 00491358

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004912A9(C)
|
:0049131E 8B4304                  mov eax, dword ptr [ebx+04]
:00491321 8B18                    mov ebx, dword ptr [eax]
:00491323 FF13                    call dword ptr [ebx]
:00491325 5E                      pop esi
:00491326 5B                      pop ebx
:00491327 C3                      ret

和这儿
* Referenced by a CALL at Addresses:
|:004E8903   , :004EB289   
|
:00491364 53                      push ebx
:00491365 56                      push esi
:00491366 8BF2                    mov esi, edx
:00491368 8BD8                    mov ebx, eax

* Possible StringData Ref from Code Obj ->"No register"
                                  |
:0049136A 688C134900              push 0049138C
:0049136F 56                      push esi

* Possible StringData Ref from Code Obj ->"UserName"
                                  |
:00491370 B9A0134900              mov ecx, 004913A0

* Possible StringData Ref from Code Obj ->"UserInfo"
                                  |
:00491375 BAB4134900              mov edx, 004913B4
三个调用的Call分别是:004EB277,004E8903,004EB289逐个检查, 004E8903没什么用,其他两个是这样
:004EB267 C6832C05000000          mov byte ptr [ebx+0000052C], 00
:004EB26E 8D55D8                  lea edx, dword ptr [ebp-28]
:004EB271 8B8320050000            mov eax, dword ptr [ebx+00000520]
:004EB277 E88C60FAFF              call 00491308                            //这是第一个
:004EB27C 8B45D8                  mov eax, dword ptr [ebp-28]              //eax中为假注册码
:004EB27F 50                      push eax
:004EB280 8D55D4                  lea edx, dword ptr [ebp-2C]
:004EB283 8B8320050000            mov eax, dword ptr [ebx+00000520]
:004EB289 E8D660FAFF              call 00491364                            //这是第二个
:004EB28E 8B45D4                  mov eax, dword ptr [ebp-2C]             //eax中为注册名
:004EB291 5A                      pop edx                                  //假注册码给edx
:004EB292 E8655AFAFF              call 00490CFC                            //判断的call
:004EB297 84C0                    test al, al                              //若注册码正确,al=1,否则al=0
:004EB299 7407                    je 004EB2A2                              //若al=0就跳,可在此点爆破
:004EB29B C6832C05000001          mov byte ptr [ebx+0000052C], 01          //给标志位赋值1,说明已注册
跟入判断的call
:00490CFC 55                      push ebp
:00490CFD 8BEC                    mov ebp, esp
:00490CFF 83C4F4                  add esp, FFFFFFF4
:00490D02 53                      push ebx
:00490D03 33C9                    xor ecx, ecx
:00490D05 894DF4                  mov dword ptr [ebp-0C], ecx
:00490D08 8955F8                  mov dword ptr [ebp-08], edx                                           //edx中为假码,放入dword ptr[ebp-08]
:00490D0B 8945FC                  mov dword ptr [ebp-04], eax                                          //eax中为注册名,放入dword ptr[ebp-04]
:00490D0E 8B45FC                  mov eax, dword ptr [ebp-04]
:00490D11 E85241F7FF              call 00404E68
:00490D16 8B45F8                  mov eax, dword ptr [ebp-08]                                 
:00490D19 E84A41F7FF              call 00404E68
:00490D1E 33C0                    xor eax, eax
:00490D20 55                      push ebp
:00490D21 68780D4900              push 00490D78
:00490D26 64FF30                  push dword ptr fs:[eax]
:00490D29 648920                  mov dword ptr fs:[eax], esp
:00490D2C 8D55F4                  lea edx, dword ptr [ebp-0C]
:00490D2F 8B45FC                  mov eax, dword ptr [ebp-04]
:00490D32 E861000000              call 00490D98                                                    //计算注册码的call
:00490D37 8B45F4                  mov eax, dword ptr [ebp-0C]                                  //真码放入eax
:00490D3A 8B55F8                  mov edx, dword ptr [ebp-08]                                 //假码放入edx
:00490D3D E88240F7FF              call 00404DC4                                              //比较
:00490D42 7504                    jne 00490D48                                                       //不相同就跳,也可在此点爆破
:00490D44 B301                    mov bl, 01

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00490CF2(C)
|
:00490D46 EB02                    jmp 00490D4A

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00490D42(C)
|
:00490D48 33DB                    xor ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00490D46(U)
|
:00490D4A 8B55FC                  mov edx, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"ttdown"                                          //黑名单?^-^
                                  |
:00490D4D B8900D4900              mov eax, 00490D90
:00490D52 E86542F7FF              call 00404FBC
:00490D57 85C0                    test eax, eax
:00490D59 7402                    je 00490D5D                                                      //不是黑名单就跳
:00490D5B 33DB                    xor ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00490D59(C)
|
:00490D5D 33C0                    xor eax, eax
:00490D5F 5A                      pop edx                                                   
:00490D60 59                      pop ecx
:00490D61 59                      pop ecx
:00490D62 648910                  mov dword ptr fs:[eax], edx
:00490D65 687F0D4900              push 00490D7F

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00490D7D(U)
|
:00490D6A 8D45F4                  lea eax, dword ptr [ebp-0C]
:00490D6D BA03000000              mov edx, 00000003
:00490D72 E8753CF7FF              call 004049EC
:00490D77 C3                      ret

由于功力所限,计算注册码的call就不跟了,以后有能力再追吧^--^
-----------------------------------------------------------------------------------------
写的有点乱,整理一下。
爆破点:004EB299 和00490D44处随便选一点就可以了。
如果做注册机,可在00490D37下断,具体做法就不说了吧。
如果想在软件标题上出现你的名字,在安装目录下dfbox.ini中"UserName="后加上你的名字,保存一下就OK了。
这是我写的第三篇破文,希望你能喜欢。(很奇怪,碰到的软件中10个有6个是用标志位,保护太弱了)。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 6
支持
分享
最新回复 (1)
雪    币: 319
活跃值: (1086)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
谢谢了,正好看到此文~~~~~~~~~~~~~
2004-5-15 14:24
0
游客
登录 | 注册 方可回帖
返回
//