发新话题
打印

[转载]Multi desktop V3.00 注册算法分析

[转载]Multi desktop V3.00 注册算法分析

文章作者:KuNgBiM
信息来源:看雪论坛

【破文标题】:Multi desktop V3.00 注册算法分析

【破文作者】:KuNgBiM[DFCG]

【作者邮箱】:gb_1227@163.com

【软件名称】:Multi desktop V3.00

【软件大小】:528 KB

【软件语言】:英文

【软件类别】:国外软件 / 共享版 / 桌面工具

【整理时间】:2005-10-27

【开 发 商】:http://www.8848soft.com/

【下载地址】:http://www.8848soft.com/d1/multidesktop_setup.exe

【软件简介】:Multi Desktop 是一个非常不错的虚拟桌面管理软件!支持4个虚拟桌面;支持为各个虚拟桌面建立自己的图标、名字、壁纸,通过拖放操作将窗口在虚拟桌面之间移动;支持使用快捷键在虚拟桌面之间切换;支持为虚拟桌面选择壁纸风格。

【保护方式】:注册码 + 启动NAG + 15天试用限制

【编译语言】:Microsoft Visual C++ 6.0

【调试环境】:WinXP、PEiD、Ollydbg

【破解日期】:2005-10-29

【破解目的】:研究算法分析

【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

—————————————————————————————————
【破解过程】:

侦测:用PEiD查壳,无壳,Microsoft Visual C++ 6.0 编译。

试探:运行主程序注册,输入试炼码,确认!程序提示:"Registration failed, please check the code and try again!"

下药:Ollydbg载入主程序,命令下断:bpx MessageBoxA,回车,F9运行,输入试炼信息:

************* 试炼信息 **************

Registered name:KuNgBiM

Registered code:1111-2222-3333-4444

*************************************

0041CB34   51          push ecx
0041CB35   FF15 2CD34200  call dword ptr ds:[<&USER32.MessageBoxA>]  ; 这里中断,Alt+F9返回!
0041CB3B   5E          pop esi
0041CB3C   C2 0C00      retn 0C
........

返回到:

00409E60   64:A1 00000000  mov eax,dword ptr fs:[0]        ; 这里F2下断!Ctrl+F2重新加载程序!
00409E66   6A FF        push -1
00409E68   68 68BD4200    push MultiDes.0042BD68
00409E6D   50          push eax
00409E6E   64:8925 0000000>mov dword ptr fs:[0],esp
00409E75   83EC 14      sub esp,14
00409E78   53          push ebx
00409E79   55          push ebp
00409E7A   56          push esi
00409E7B   8BF1        mov esi,ecx
00409E7D   57          push edi
00409E7E   8B86 70010000  mov eax,dword ptr ds:[esi+170]
00409E84   83F8 02      cmp eax,2
00409E87   0F8F E8010000  jg MultiDes.0040A075
00409E8D   40          inc eax
00409E8E   6A 01        push 1
00409E90   8986 70010000  mov dword ptr ds:[esi+170],eax
00409E96   E8 A2350100    call MultiDes.0041D43D
00409E9B   8D86 60010000  lea eax,dword ptr ds:[esi+160]
00409EA1   8DBE 5C010000  lea edi,dword ptr ds:[esi+15C]
00409EA7   50          push eax
00409EA8   8D4C24 1C     lea ecx,dword ptr ss:[esp+1C]
00409EAC   57          push edi
00409EAD   51          push ecx
00409EAE   E8 154D0100    call MultiDes.0041EBC8
00409EB3   8D96 64010000  lea edx,dword ptr ds:[esi+164]
00409EB9   33DB        xor ebx,ebx
00409EBB   52          push edx
00409EBC   50          push eax
00409EBD   8D4424 1C     lea eax,dword ptr ss:[esp+1C]
00409EC1   895C24 34     mov dword ptr ss:[esp+34],ebx
00409EC5   50          push eax
00409EC6   E8 FD4C0100    call MultiDes.0041EBC8
00409ECB   8D8E 68010000  lea ecx,dword ptr ds:[esi+168]
00409ED1   8D5424 10     lea edx,dword ptr ss:[esp+10]
00409ED5   51          push ecx
00409ED6   50          push eax
00409ED7   52          push edx
00409ED8   C64424 38 01   mov byte ptr ss:[esp+38],1
00409EDD   E8 E64C0100    call MultiDes.0041EBC8
00409EE2   50          push eax
00409EE3   8BCF        mov ecx,edi
00409EE5   C64424 30 02   mov byte ptr ss:[esp+30],2
00409EEA   E8 E34B0100    call MultiDes.0041EAD2
00409EEF   8D4C24 10     lea ecx,dword ptr ss:[esp+10]
00409EF3   C64424 2C 01   mov byte ptr ss:[esp+2C],1
00409EF8   E8 E84A0100    call MultiDes.0041E9E5
00409EFD   8D4C24 14     lea ecx,dword ptr ss:[esp+14]
00409F01   885C24 2C     mov byte ptr ss:[esp+2C],bl
00409F05   E8 DB4A0100    call MultiDes.0041E9E5
00409F0A   8D4C24 18     lea ecx,dword ptr ss:[esp+18]
00409F0E   C74424 2C FFFFF>mov dword ptr ss:[esp+2C],-1
00409F16   E8 CA4A0100    call MultiDes.0041E9E5
00409F1B   68 90C54300    push MultiDes.0043C590
00409F20   8D4C24 14     lea ecx,dword ptr ss:[esp+14]
00409F24   E8 2A4B0100    call MultiDes.0041EA53
00409F29   8DAE 58010000  lea ebp,dword ptr ds:[esi+158]
00409F2F   8D4424 18     lea eax,dword ptr ss:[esp+18]
00409F33   BB 03000000    mov ebx,3
00409F38   55          push ebp
00409F39   50          push eax
00409F3A   B9 88C64300    mov ecx,MultiDes.0043C688
00409F3F   895C24 34     mov dword ptr ss:[esp+34],ebx
00409F43   E8 D8F4FFFF    call MultiDes.00409420          ; ★用户名检测CALL★F7跟进
00409F48   50          push eax
00409F49   8D4C24 14     lea ecx,dword ptr ss:[esp+14]
00409F4D   C64424 30 04   mov byte ptr ss:[esp+30],4
00409F52   E8 7B4B0100    call MultiDes.0041EAD2
00409F57   8D4C24 18     lea ecx,dword ptr ss:[esp+18]
00409F5B   885C24 2C     mov byte ptr ss:[esp+2C],bl
00409F5F   E8 814A0100    call MultiDes.0041E9E5          ; 取用户名前2位转为大写后与“wfeewwf3deda”相连
00409F64   8B4424 10     mov eax,dword ptr ss:[esp+10]     ; ASCII "KUwfeewwf3deda"
00409F68   8B48 F8      mov ecx,dword ptr ds:[eax-8]      ; 得到组合后的计算名长度,ds:[009138C8]=0000000E
00409F6B   51          push ecx                   ; ecx=0000000E,(14位)
00409F6C   8D4C24 18     lea ecx,dword ptr ss:[esp+18]
00409F70   50          push eax                   ; 计算名压栈,ASCII "KUwfeewwf3deda"
00409F71   51          push ecx
00409F72   E8 59C9FFFF    call MultiDes.004068D0          ; ★重要CALL★F7跟进
00409F77   83C4 0C      add esp,0C
00409F7A   50          push eax
00409F7B   8D4C24 14     lea ecx,dword ptr ss:[esp+14]
00409F7F   C64424 30 05   mov byte ptr ss:[esp+30],5
00409F84   E8 494B0100    call MultiDes.0041EAD2
00409F89   8D4C24 14     lea ecx,dword ptr ss:[esp+14]
00409F8D   885C24 2C     mov byte ptr ss:[esp+2C],bl
00409F91   E8 4F4A0100    call MultiDes.0041E9E5
00409F96   8D5424 1C     lea edx,dword ptr ss:[esp+1C]
00409F9A   6A 10        push 10
00409F9C   52          push edx
00409F9D   8D4C24 18     lea ecx,dword ptr ss:[esp+18]
00409FA1   E8 4CE00000    call MultiDes.00417FF2
00409FA6   50          push eax
00409FA7   8D4C24 14     lea ecx,dword ptr ss:[esp+14]
00409FAB   C64424 30 06   mov byte ptr ss:[esp+30],6
00409FB0   E8 1D4B0100    call MultiDes.0041EAD2
00409FB5   8D4C24 1C     lea ecx,dword ptr ss:[esp+1C]
00409FB9   885C24 2C     mov byte ptr ss:[esp+2C],bl
00409FBD   E8 234A0100    call MultiDes.0041E9E5          ; 获得用户输入的假注册码
00409FC2   8B07        mov eax,dword ptr ds:[edi]
00409FC4   50          push eax                   ; 假码压栈,ASCII "1111222233334444"
00409FC5   8B4424 14     mov eax,dword ptr ss:[esp+14]     ; 取出真注册码,准备与假码比较!
00409FC9   50          push eax                   ; 真码压栈,ASCII "687fcda714009cf4"
00409FCA   E8 653E0000    call MultiDes.0040DE34          ; ★真假码经典比较CALL★
00409FCF   83C4 08      add esp,8
00409FD2   85C0        test eax,eax
00409FD4   75 53        jnz short MultiDes.0040A029      ; 若不相等,跳走则Game Over!
00409FD6   83CB FF      or ebx,FFFFFFFF
00409FD9   8D4C24 10     lea ecx,dword ptr ss:[esp+10]
00409FDD   895C24 2C     mov dword ptr ss:[esp+2C],ebx
00409FE1   E8 FF490100    call MultiDes.0041E9E5
00409FE6   8D4C24 1C     lea ecx,dword ptr ss:[esp+1C]
00409FEA   51          push ecx
00409FEB   B9 88C64300    mov ecx,MultiDes.0043C688
00409FF0   E8 BBF5FFFF    call MultiDes.004095B0
00409FF5   8B00        mov eax,dword ptr ds:[eax]
00409FF7   6A 40        push 40
00409FF9   50          push eax
00409FFA   68 9C874300    push MultiDes.0043879C          ; ASCII "Registration finished, thank for your registration!"
00409FFF   8BCE        mov ecx,esi
0040A001   C74424 38 07000>mov dword ptr ss:[esp+38],7
0040A009   E8 FF2A0100    call MultiDes.0041CB0D
0040A00E   8D4C24 1C     lea ecx,dword ptr ss:[esp+1C]
0040A012   895C24 2C     mov dword ptr ss:[esp+2C],ebx
0040A016   E8 CA490100    call MultiDes.0041E9E5
0040A01B   57          push edi
0040A01C   55          push ebp
0040A01D   B9 88C64300    mov ecx,MultiDes.0043C688
0040A022   E8 99F2FFFF    call MultiDes.004092C0
0040A027   EB 45        jmp short MultiDes.0040A06E
0040A029   83CF FF      or edi,FFFFFFFF
0040A02C   8D4C24 10     lea ecx,dword ptr ss:[esp+10]
0040A030   897C24 2C     mov dword ptr ss:[esp+2C],edi
0040A034   E8 AC490100    call MultiDes.0041E9E5
0040A039   8D5424 20     lea edx,dword ptr ss:[esp+20]
0040A03D   B9 88C64300    mov ecx,MultiDes.0043C688
0040A042   52          push edx
0040A043   E8 68F5FFFF    call MultiDes.004095B0
0040A048   8B00        mov eax,dword ptr ds:[eax]
0040A04A   6A 10        push 10
0040A04C   50          push eax
0040A04D   68 60874300    push MultiDes.00438760      ; ASCII "Registration failed, please check the code and try again!"
0040A052   8BCE        mov ecx,esi
0040A054   C74424 38 08000>mov dword ptr ss:[esp+38],8
0040A05C   E8 AC2A0100    call MultiDes.0041CB0D
0040A061   8D4C24 20     lea ecx,dword ptr ss:[esp+20]     ; 返回到这里,向上找到可以处下断!
0040A065   897C24 2C     mov dword ptr ss:[esp+2C],edi
0040A069   E8 77490100    call MultiDes.0041E9E5
0040A06E   8BCE        mov ecx,esi
0040A070   E8 500D0100    call MultiDes.0041ADC5
0040A075   8B4C24 24     mov ecx,dword ptr ss:[esp+24]
0040A079   5F          pop edi
0040A07A   5E          pop esi
0040A07B   5D          pop ebp
0040A07C   5B          pop ebx
0040A07D   64:890D 0000000>mov dword ptr fs:[0],ecx
0040A084   83C4 20      add esp,20
0040A087   C3          retn                      ; 返回程序界面
........

========================= 跟进 00409F43   E8 D8F4FFFF    call MultiDes.00409420 =========================

00409420   6A FF        push -1                    ; 跟进来到这里
00409422   68 8FBB4200    push MultiDes.0042BB8F
00409427   64:A1 00000000  mov eax,dword ptr fs:[0]
0040942D   50          push eax
0040942E   64:8925 0000000>mov dword ptr fs:[0],esp
00409435   83EC 0C      sub esp,0C
00409438   8B4424 20     mov eax,dword ptr ss:[esp+20]
0040943C   53          push ebx
0040943D   56          push esi
0040943E   50          push eax
0040943F   8D4C24 2C     lea ecx,dword ptr ss:[esp+2C]
00409443   C74424 14 00000>mov dword ptr ss:[esp+14],0
0040944B   E8 0A530100    call MultiDes.0041E75A
00409450   BB 01000000    mov ebx,1
00409455   8D4C24 28     lea ecx,dword ptr ss:[esp+28]
00409459   895C24 1C     mov dword ptr ss:[esp+1C],ebx
0040945D   E8 EDEF0000    call MultiDes.0041844F          ; 取用户名
00409462   8D4C24 28     lea ecx,dword ptr ss:[esp+28]     ; ASCII "KuNgBiM"
00409466   E8 98EF0000    call MultiDes.00418403
0040946B   8D4C24 28     lea ecx,dword ptr ss:[esp+28]
0040946F   E8 125A0100    call MultiDes.0041EE86          ; 用户名所有字符由小写转为大写
00409474   6A 42        push 42                    ; ASCII "KUNGBIM"
00409476   6A 2E        push 2E
00409478   8D4C24 30     lea ecx,dword ptr ss:[esp+30]     ; 转换完毕后,重新赋值给ecx
0040947C   E8 34EB0000    call MultiDes.00417FB5
00409481   6A 42        push 42
00409483   6A 20        push 20
00409485   8D4C24 30     lea ecx,dword ptr ss:[esp+30]
00409489   E8 27EB0000    call MultiDes.00417FB5
0040948E   8B4C24 28     mov ecx,dword ptr ss:[esp+28]     ; 取转换后的用户名,ASCII "KUNGBIM"
00409492   8B41 F8      mov eax,dword ptr ds:[ecx-8]      ; 取用户名长度,ds:[009139B8]=00000007
00409495   83F8 02      cmp eax,2                  ; 用户名长度与2比较
00409498   7E 4C        jle short MultiDes.004094E6      ; 若用户名长度小于或等于2就跳向自定义用户名
0040949A   8D5424 0C     lea edx,dword ptr ss:[esp+C]
0040949E   6A 02        push 2                    ; (取用户名个数)2入栈
004094A0   52          push edx
004094A1   8D4C24 30     lea ecx,dword ptr ss:[esp+30]     ; 取前2位转换后的用户名,ASCII "KUNGBIM"
004094A5   E8 48EB0000    call MultiDes.00417FF2          ; 取固定字符串
004094AA   68 44844300    push MultiDes.00438444          ; ASCII "wfeewwf3deda"
004094AF   50          push eax
004094B0   8D4424 10     lea eax,dword ptr ss:[esp+10]
004094B4   C64424 24 02   mov byte ptr ss:[esp+24],2
004094B9   50          push eax
004094BA   E8 6F570100    call MultiDes.0041EC2E
004094BF   50          push eax
004094C0   8D4C24 2C     lea ecx,dword ptr ss:[esp+2C]
004094C4   C64424 20 03   mov byte ptr ss:[esp+20],3
004094C9   E8 04560100    call MultiDes.0041EAD2
004094CE   8D4C24 08     lea ecx,dword ptr ss:[esp+8]
004094D2   C64424 1C 02   mov byte ptr ss:[esp+1C],2
004094D7   E8 09550100    call MultiDes.0041E9E5
004094DC   885C24 1C     mov byte ptr ss:[esp+1C],bl
004094E0   8D4C24 0C     lea ecx,dword ptr ss:[esp+C]
004094E4   EB 58        jmp short MultiDes.0040953E
004094E6   68 40844300    push MultiDes.00438440          ; 程序自定义用户名为“AA”来计算,ASCII "AA"
004094EB   8D4C24 2C     lea ecx,dword ptr ss:[esp+2C]
004094EF   E8 81580100    call MultiDes.0041ED75
004094F4   8D4C24 08     lea ecx,dword ptr ss:[esp+8]
004094F8   6A 02        push 2
004094FA   51          push ecx
004094FB   8D4C24 30     lea ecx,dword ptr ss:[esp+30]     ; 取自定义用户名,ASCII "AA"
004094FF   E8 EEEA0000    call MultiDes.00417FF2          ; 取固定字符串
00409504   68 44844300    push MultiDes.00438444          ; ASCII "wfeewwf3deda"
00409509   8D5424 10     lea edx,dword ptr ss:[esp+10]
0040950D   50          push eax
0040950E   52          push edx
0040950F   C64424 28 04   mov byte ptr ss:[esp+28],4
00409514   E8 15570100    call MultiDes.0041EC2E
00409519   50          push eax
0040951A   8D4C24 2C     lea ecx,dword ptr ss:[esp+2C]
0040951E   C64424 20 05   mov byte ptr ss:[esp+20],5
00409523   E8 AA550100    call MultiDes.0041EAD2
00409528   8D4C24 0C     lea ecx,dword ptr ss:[esp+C]
0040952C   C64424 1C 04   mov byte ptr ss:[esp+1C],4
00409531   E8 AF540100    call MultiDes.0041E9E5
00409536   885C24 1C     mov byte ptr ss:[esp+1C],bl
0040953A   8D4C24 08     lea ecx,dword ptr ss:[esp+8]
0040953E   E8 A2540100    call MultiDes.0041E9E5
00409543   8B7424 24     mov esi,dword ptr ss:[esp+24]
00409547   8D4424 28     lea eax,dword ptr ss:[esp+28]
0040954B   50          push eax
0040954C   8BCE        mov ecx,esi
0040954E   E8 07520100    call MultiDes.0041E75A
00409553   895C24 10     mov dword ptr ss:[esp+10],ebx
00409557   8D4C24 28     lea ecx,dword ptr ss:[esp+28]
0040955B   C64424 1C 00   mov byte ptr ss:[esp+1C],0
00409560   E8 80540100    call MultiDes.0041E9E5
00409565   8B4C24 14     mov ecx,dword ptr ss:[esp+14]
00409569   8BC6        mov eax,esi
0040956B   5E          pop esi
0040956C   5B          pop ebx
0040956D   64:890D 0000000>mov dword ptr fs:[0],ecx
00409574   83C4 18      add esp,18
00409577   C2 0800      retn 8
........

========================= 跟进 00409F72   E8 59C9FFFF    call MultiDes.004068D0 =========================

004068D0   6A FF        push -1                        ; 跟进来到这里
004068D2   68 F8B54200    push MultiDes.0042B5F8
004068D7   64:A1 00000000  mov eax,dword ptr fs:[0]             ; 取出计算名,ASCII "KUwfeewwf3deda"
004068DD   50          push eax
004068DE   64:8925 0000000>mov dword ptr fs:[0],esp
004068E5   83EC 60      sub esp,60
004068E8   56          push esi
004068E9   8B7424 7C     mov esi,dword ptr ss:[esp+7C]          ; 得到计算名位数
004068ED   57          push edi
004068EE   8B7C24 7C     mov edi,dword ptr ss:[esp+7C]          ; 得到计算名
004068F2   6A 00        push 0
004068F4   56          push esi                        ; esi=0000000E(14位)
004068F5   57          push edi                        ; edi=009138D0, (ASCII "KUwfeewwf3deda")
004068F6   C74424 14 00000>mov dword ptr ss:[esp+14],0
004068FE   E8 9E1B0100    call MultiDes.004184A1
00406903   8D4C24 0C     lea ecx,dword ptr ss:[esp+C]
00406907   E8 A40A0000    call MultiDes.004073B0              ; ★调用MD5标准算法常数★F7跟进
0040690C   56          push esi
0040690D   57          push edi
0040690E   8D4C24 14     lea ecx,dword ptr ss:[esp+14]
00406912   C74424 78 00000>mov dword ptr ss:[esp+78],0
0040691A   E8 810C0000    call MultiDes.004075A0              ; ★调用MD5标准算法机制★F7跟进
0040691F   8B7424 78     mov esi,dword ptr ss:[esp+78]
00406923   8D4C24 0C     lea ecx,dword ptr ss:[esp+C]
00406927   56          push esi
00406928   E8 130B0000    call MultiDes.00407440              ; ★使用MD5标准算法,转换计算名★
0040692D   8B4C24 68     mov ecx,dword ptr ss:[esp+68]
00406931   8BC6        mov eax,esi
00406933   5F          pop edi
00406934   5E          pop esi
00406935   64:890D 0000000>mov dword ptr fs:[0],ecx
0040693C   83C4 6C      add esp,6C
0040693F   C3          retn
........

========================= 跟进 00406907   E8 A40A0000    call MultiDes.004073B0 =========================

004073B0   8BD1        mov edx,ecx                      ; 下面是MD5算法的标准常数
004073B2   57          push edi
004073B3   B9 10000000    mov ecx,10
004073B8   33C0        xor eax,eax
004073BA   8D7A 04      lea edi,dword ptr ds:[edx+4]
004073BD   C702 78DE4200  mov dword ptr ds:[edx],MultiDes.0042DE78
004073C3   F3:AB        rep stos dword ptr es:[edi]
004073C5   8942 48      mov dword ptr ds:[edx+48],eax
004073C8   8942 44      mov dword ptr ds:[edx+44],eax
004073CB   C742 4C 0123456>mov dword ptr ds:[edx+4C],67452301
004073D2   C742 50 89ABCDE>mov dword ptr ds:[edx+50],EFCDAB89
004073D9   C742 54 FEDCBA9>mov dword ptr ds:[edx+54],98BADCFE
004073E0   C742 58 7654321>mov dword ptr ds:[edx+58],10325476
004073E7   8BC2        mov eax,edx
004073E9   5F          pop edi
004073EA   C3          retn
........

========================= 跟进 0040691A   E8 810C0000    call MultiDes.004075A0 =========================

004075A0   53          push ebx                      ; 以下是MD5算法的标准变换运算机制
004075A1   8BD9        mov ebx,ecx
004075A3   8B4C24 0C     mov ecx,dword ptr ss:[esp+C]
004075A7   55          push ebp
004075A8   8B53 44      mov edx,dword ptr ds:[ebx+44]
004075AB   56          push esi
004075AC   8BC2        mov eax,edx
004075AE   8D34CD 00000000 lea esi,dword ptr ds:[ecx*8]
004075B5   C1E8 03      shr eax,3
004075B8   8D14CA       lea edx,dword ptr ds:[edx+ecx*8]
004075BB   83E0 3F      and eax,3F
004075BE   3BD6        cmp edx,esi
004075C0   57          push edi
004075C1   8953 44      mov dword ptr ds:[ebx+44],edx
004075C4   73 03        jnb short MultiDes.004075C9
004075C6   FF43 48      inc dword ptr ds:[ebx+48]
004075C9   8B7B 48      mov edi,dword ptr ds:[ebx+48]
004075CC   8BD1        mov edx,ecx
004075CE   BD 40000000    mov ebp,40
004075D3   C1EA 1D      shr edx,1D
004075D6   2BE8        sub ebp,eax
004075D8   03FA        add edi,edx
004075DA   3BCD        cmp ecx,ebp
004075DC   897B 48      mov dword ptr ds:[ebx+48],edi
004075DF   72 52        jb short MultiDes.00407633
004075E1   8B7424 14     mov esi,dword ptr ss:[esp+14]
004075E5   8BCD        mov ecx,ebp
004075E7   8D7C18 04     lea edi,dword ptr ds:[eax+ebx+4]
004075EB   8BC1        mov eax,ecx
004075ED   C1E9 02      shr ecx,2
004075F0   F3:A5        rep movs dword ptr es:[edi],dword ptr ds:[esi]
004075F2   8BC8        mov ecx,eax
004075F4   83E1 03      and ecx,3
004075F7   F3:A4        rep movs byte ptr es:[edi],byte ptr ds:[esi]
004075F9   8D4B 04      lea ecx,dword ptr ds:[ebx+4]
004075FC   51          push ecx
004075FD   8BCB        mov ecx,ebx
004075FF   E8 8CF3FFFF    call MultiDes.00406990
00407604   8BFD        mov edi,ebp
00407606   8D75 3F      lea esi,dword ptr ss:[ebp+3F]
00407609   8B6C24 18     mov ebp,dword ptr ss:[esp+18]
0040760D   3BF5        cmp esi,ebp
0040760F   73 1A        jnb short MultiDes.0040762B
00407611   8B5424 14     mov edx,dword ptr ss:[esp+14]
00407615   8BCB        mov ecx,ebx
00407617   8D4432 C1     lea eax,dword ptr ds:[edx+esi-3F]
0040761B   50          push eax
0040761C   E8 6FF3FFFF    call MultiDes.00406990
00407621   83C6 40      add esi,40
00407624   83C7 40      add edi,40
00407627   3BF5        cmp esi,ebp
00407629  ^ 72 E6        jb short MultiDes.00407611
0040762B   8B4C24 18     mov ecx,dword ptr ss:[esp+18]
0040762F   33C0        xor eax,eax
00407631   EB 02        jmp short MultiDes.00407635
00407633   33FF        xor edi,edi
00407635   8B5424 14     mov edx,dword ptr ss:[esp+14]
00407639   2BCF        sub ecx,edi
0040763B   8D3417       lea esi,dword ptr ds:[edi+edx]
0040763E   8D7C18 04     lea edi,dword ptr ds:[eax+ebx+4]
00407642   8BC1        mov eax,ecx
00407644   C1E9 02      shr ecx,2
00407647   F3:A5        rep movs dword ptr es:[edi],dword ptr ds:[esi]
00407649   8BC8        mov ecx,eax
0040764B   83E1 03      and ecx,3
0040764E   F3:A4        rep movs byte ptr es:[edi],byte ptr ds:[esi]
00407650   5F          pop edi
00407651   5E          pop esi
00407652   5D          pop ebp
00407653   5B          pop ebx
00407654   C2 0800      retn 8
........

-------------------------------------------------------------------------------------------------------------------------
【算法总结】:

注册验证非常简单:

1、注册码固定为16位。

2、用户名位数小于或等于2位,则调用程序固定用户名“AA”来作为用户名。

3、把用户名所有字符由小写转为大写,结果记为N1。

4、N1前两位与固定字符串“wfeewwf3deda”连接组合成计算名,结果记为N2。

5、将N2进行标准MD5运算转换,结果记为KEY1。

6、取KEY1前16位转换为小写输出,则为注册码,结果记为KEY2。

【完美爆破点】:

00409FD4   75 53        jnz short MultiDes.0040A029      ; nop掉!

-------------------------------------------------------------------------------------------------------------------------
【注册机】:

注册机我就不写了,很简单的。。。

【注册信息】:

Registered name:KuNgBiM

Registered code:687f-cda7-1400-9cf4
http://iittss.com/ kijs与牛人在一起不是有理由的让自己变懒,那是为了让视野更开阔

TOP

发新话题