首页
社区
课程
招聘
[原创]WYSIWYG Web Build V5.5.4 算法+网络验证分析
发表于: 2008-11-23 11:49 8183

[原创]WYSIWYG Web Build V5.5.4 算法+网络验证分析

2008-11-23 11:49
8183

【破文标题】WYSIWYG Web Build V5.5.4 算法+网络验证分析
【破文作者】Playboysen
【作者邮箱】playboysen@126.com
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件大小】3.33 MB
【软件授权】国外软件/网页制作
【软件语言】英文
【原版下载】http://www.wysiwygwebbuilder.com/webbuilder5.zip
【保护方式】网络验证
【软件简介】WYSIWYG Web Builder 是一个很小巧的‘所见即所得’网页编辑器,非常适合初学者或想要做个简单网页的人使用,当然你也能手动去更改网页的程式码。
【破解声明】一点心得,愿与大家分享o(∩_∩)o 版权所有,转载注明作者!
【破解内容】

   首先,我不得不提醒各位This is an long long long long article,如果你没有耐心,就不要往下看了,我光分析代码就用了近5个小时,可见一斑吧o(∩_∩)o...
   程序是网络验证,但是不同于一般验证方式,用户输入注册码后并不验证,而是先进行很长很麻烦的一段算法比较,看输入的像不像注册码等等,验证过程极其繁琐(作者很有耐心啊)。有好几个错误提示,MFC程序,可以用MFCSpy或者这里的脚本
http://bbs.pediy.com/showthread.php?t=76990&viewgoodnees=1查找按钮事件(已找到00465B60)或者下GetWindowTextA查找关键部分。我们设假码为“WB500-2L6W-560F-9X6G-5A38-2CF2”,且以“-”为界分别设每一部分注册码为T1-T2-T3-T4-T5-T6(具体为什么这么设,你看了下面的算法比较就知道了,为了节约时间,少走弯路)
   OK,follow me!

00465BE2   .  8D8F 94010000   lea ecx,dword ptr ds:[edi+194]
00465BE8   .  E8 C78A1300     call <jmp.&MFC42.#3874_CWnd::GetWindowTextA>
00465BED   .  8D55 EC         lea edx,dword ptr ss:[ebp-14]                     ;  用户名
00465BF0   .  8D8F 54010000   lea ecx,dword ptr ds:[edi+154]
00465BF6   .  52              push edx
00465BF7   .  E8 B88A1300     call <jmp.&MFC42.#3874_CWnd::GetWindowTextA>
00465BFC   .  8D4D E8         lea ecx,dword ptr ss:[ebp-18]                     ;  注册码
......
00465C30   .  8B45 E8         mov eax,dword ptr ss:[ebp-18]                     ;  用户名放入
00465C33   .  8B48 F8         mov ecx,dword ptr ds:[eax-8]                      ;  用户名长度放入
00465C36   .  85C9            test ecx,ecx
00465C38   .  0F84 34070000   je cf.00466372
00465C3E   .  6A 40           push 40
00465C40   .  8D4D E8         lea ecx,dword ptr ss:[ebp-18]                     ;  用户名地址放入
00465C43   .  E8 468C1300     call <jmp.&MFC42.#2763_CString::Find>             ;  猜测是检测用户名中"@"前的字符数
00465C48   .  83CE FF         or esi,FFFFFFFF
00465C4B   .  3BC6            cmp eax,esi
00465C4D   .  0F84 22070000   je cf.00466375
00465C53   .  8B4D EC         mov ecx,dword ptr ss:[ebp-14]                     ;  假码放入
00465C56   .  8B41 F8         mov eax,dword ptr ds:[ecx-8]                      ;  假码长度放入
00465C59   .  85C0            test eax,eax
00465C5B   .  0F84 14070000   je cf.00466375
00465C61   .  6A 2D           push 2D                                           ;  "-"
00465C63   .  8D4D EC         lea ecx,dword ptr ss:[ebp-14]
00465C66   .  E8 238C1300     call <jmp.&MFC42.#2763_CString::Find>             ;  检测注册码中第一个“-”出现的位置
00465C6B   .  3BC6            cmp eax,esi
00465C6D   .  0F84 02070000   je cf.00466375
00465C73   .  E8 548A1300     call <jmp.&MFC42.#1168_AfxGetModuleState>
00465C78   .  8B55 EC         mov edx,dword ptr ss:[ebp-14]
00465C7B   .  8B58 04         mov ebx,dword ptr ds:[eax+4]
00465C7E   .  68 8C267600     push cf.0076268C                                  ; /s2 = "KFW9K-7J2G8-BQT4Y-V3GXV-QM4RF"
00465C83   .  52              push edx                                          ; |s1
00465C84   .  895D D8         mov dword ptr ss:[ebp-28],ebx                     ; |
00465C87   .  FF15 40966D00   call dword ptr ds:[<&msvcrt._mbscmp>]             ; \_mbscmp
00465C8D   .  83C4 08         add esp,8
00465C90   .  85C0            test eax,eax
00465C92   .  75 12           jnz short cf.00465CA6                             ;  这里很明显是在比较……
00465C94   .  50              push eax
00465C95   .  6A 30           push 30
00465C97   .  68 30267600     push cf.00762630                        ;  "You've entered a serial number which can only be used to activate WYSIWYG Web Builder 3.x"
00465C9C   .  E8 038E1300     call <jmp.&MFC42.#1200_AfxMessageBox>
00465CA1   .  E9 DC060000     jmp cf.00466382
00465CA6   >  68 28267600     push cf.00762628                       ;  ASCII "WB400-"
00465CAB   .  8D4D EC         lea ecx,dword ptr ss:[ebp-14]
00465CAE   .  E8 BD8B1300     call <jmp.&MFC42.#2764_CString::Find>             ;  检测注册码开头是不是“WB400-”
00465CB3   .  3BC6            cmp eax,esi
00465CB5   .  6A 00           push 0
00465CB7   .  74 11           je short cf.00465CCA
00465CB9   .  6A 30           push 30
00465CBB   .  68 CC257600     push cf.007625CC              ;  "You've entered a serial number which can only be used to activate WYSIWYG Web Builder 4.x"
00465CC0   .  E8 DF8D1300     call <jmp.&MFC42.#1200_AfxMessageBox>
00465CC5   .  E9 B8060000     jmp cf.00466382
00465D52   > \8B87 D4010000   mov eax,dword ptr ds:[edi+1D4]
00465D58   .  85C0            test eax,eax
00465D5A   .  74 1E           je short cf.00465D7A
00465D5C   .  8BCF            mov ecx,edi
00465D5E   .  E8 FD0D0000     call cf.00466B60                                  ;  一个较大的缓冲,在测试是否联网
00465D63   .  85C0            test eax,eax
00465D65   .  75 13           jnz short cf.00465D7A
00465D67   .  6A FF           push -1
00465D69   .  6A 30           push 30
00465D6B   .  68 EF730000     push 73EF
00465D70   .  E8 C38C1300     call <jmp.&MFC42.#1199_AfxMessageBox>             ;  提示需要联网
00465D75   .  E9 93050000     jmp cf.0046630D
00465D7A   >  56              push esi                                          ;  写入注册信息
00465D7B   .  68 C0257600     push cf.007625C0                      ;  ASCII "NagCount"
00465D80   .  68 08A77500     push cf.0075A708                      ;  ASCII "Settings"
......
00465DB4   .  E8 A78C0100     call cf.0047EA60
00465DB9   .  8B4F 60         mov ecx,dword ptr ds:[edi+60]
00465DBC   .  E8 DF890100     call cf.0047E7A0                                  ;  多次跟踪发现这里比较关键,F7
00465DC1   .  8B4F 60         mov ecx,dword ptr ds:[edi+60]
00465DC4   .  E8 B7850100     call cf.0047E380                                  ;  多次跟踪发现这里比较关键,F7
00465DC9   .  85C0            test eax,eax
00465DCB   .  75 13           jnz short cf.00465DE0                             ;  关键跳
00465DCD   .  6A FF           push -1
00465DCF   .  6A 30           push 30
00465DD1   .  68 F1730000     push 73F1
00465DD6   .  E8 5D8C1300     call <jmp.&MFC42.#1199_AfxMessageBox>             ;  错误提示
00465DDB   .  E9 2D050000     jmp cf.0046630D
00465DE0   >  8B87 D4010000   mov eax,dword ptr ds:[edi+1D4]
......
0047E452  |.  52              push edx
0047E453  |.  E8 6E051200     call <jmp.&MFC42.#1140_AfxExtractSubString>
0047E458  |.  56              push esi                                          ; /String
0047E459  |.  FF15 98826D00   call dword ptr ds:[<&kernel32.lstrlen>]           ; \lstrlenA
0047E45F  |.  83F8 1E         cmp eax,1E                                        ;  比较注册码长度是否是30位
0047E462  |.  0F85 48020000   jnz cf.0047E6B0
0047E468  |.  8B4424 20       mov eax,dword ptr ss:[esp+20]                     ;  比较注册码开头是不是"WB500"
0047E46C  |.  68 E0367600     push cf.007636E0                                  ; /s2 = "WB500"
0047E471  |.  50              push eax                                          ; |s1
0047E472  |.  FF15 40966D00   call dword ptr ds:[<&msvcrt._mbscmp>]             ; \_mbscmp
0047E478  |.  83C4 08         add esp,8
0047E47B  |.  85C0            test eax,eax
0047E47D  |.  0F85 2D020000   jnz cf.0047E6B0
0047E4BE  |. /0F85 EC010000   jnz cf.0047E6B0
0047E4C4  |. |68 C0367600     push cf.007636C0                                  ; /String2 = "WB500-7J2G-BQT4-V3GX-QM4R-FFFF"
0047E4C9  |. |56              push esi                                          ; |String1
0047E4CA  |. |FF15 90826D00   call dword ptr ds:[<&kernel32.lstrcmp>]           ; \lstrcmpA
0047E4D0  |. |85C0            test eax,eax
0047E4D2  |. |75 2C           jnz short cf.0047E500                             ;很不幸,这不是注册码
0047E4D4  |. |E8 F3011200     call <jmp.&MFC42.#1168_AfxGetModuleState>
0047E4D9  |. |8B40 04         mov eax,dword ptr ds:[eax+4]
0047E4DC  |. |56              push esi
0047E4DD  |. |68 B4257600     push cf.007625B4                        ;  ASCII "SerialNum"
0047E4E2  |. |68 08A77500     push cf.0075A708                        ;  ASCII "Settings"
0047E4E7  |. |8BC8            mov ecx,eax
0047E4E9  |. |E8 02021200     call <jmp.&MFC42.#6403_CWinApp::WriteProfileStrin>

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
2
学习下网络验证的.
2008-11-23 16:08
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看不懂,学习中。
2008-11-23 19:19
0
雪    币: 136
活跃值: (135)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
hehe 狂暴这样的程序就行了
2008-11-23 20:42
0
雪    币: 89
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还是代码清晰的分析起来也好弄
2008-11-24 15:19
0
雪    币: 590
活跃值: (177)
能力值: ( LV9,RANK:680 )
在线值:
发帖
回帖
粉丝
6
此程序是全功能试用30天
爆破也只是几个字节的问题,大家练手

我们只是拿来练习代码分析……
2008-11-24 20:20
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主和我一样也是初级者嘛 来个QQ交流下 我的是377827477
2008-11-24 20:24
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
在浏览器里面输入http://vip.cj63.cn/Login/sjsf.asp?Ver=1.23&HardDiskID=V206DFMG&RegID=0000000000000000
返回“您还未注册! sj” 伪装注册码不像的话返回“注册码错误”
这个怎么处理啊
2008-12-3 01:22
0
雪    币: 590
活跃值: (177)
能力值: ( LV9,RANK:680 )
在线值:
发帖
回帖
粉丝
9
具体情况具体分析,没有万能的方法
仔细跟踪返回值和关键算法找破绽吧
2008-12-3 06:53
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我在弄的一个程序和你这个情况很相似,在这里http://vip.cj63.cn/Login/sjsf.asp?Ver=1.23&HardDiskID=V206DFMG&RegID=0000000000000000验证,程序里有文本字串参考找到它所在,用任意16位注册码去注册返回“您还未注册! sj”,如果伪装注册码不像的话返回“注册码错误”,但是比较菜,不知道关键算法在哪里,楼主愿意帮下忙吗
2008-12-3 09:49
0
游客
登录 | 注册 方可回帖
返回
//