【破文标题】我酷单词连连看1.00(DES+Base64)
【破文作者】风间仁
【作者邮箱】fenjianzhun@gmail.com
【破解工具】OD
【软件名称】我酷单词连连看
【原版下载】自己搜索下载
【保护方式】序列号
【软件简介】软件采用热门休闲游戏连连看的方式记忆英文单词。只要用户点击选取显示有英文单词及其相应释

义的图案,游戏自动消去这对图案。游戏包括四种模式:混合模式、分离模式、释义选择模式及单词选择模式,

用户可以根据自身情况,选择喜欢的游戏模式。
【破解声明】只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------
【破解过程】此软件网上已经内存注册机,偶只拿来练手,学习一下其注册算法!
新手发贴,大侠别笑话偶就行了。

合法注册信息:
注册名:fenjianren
注册码:0VY3-QM7E-UPGU-Y4E4

00414560  /$  6A FF       push -1                                     ;  下面是关键注册部分
00414562  |.  68 848A4200 push Wordllk.00428A84                       ;  SE 句柄安装
00414567  |.  64:A1 00000>mov eax,dword ptr fs:[0]
0041456D  |.  50          push eax
0041456E  |.  64:8925 000>mov dword ptr fs:[0],esp
00414575  |.  81EC 900100>sub esp,190
0041457B  |.  53          push ebx
0041457C  |.  55          push ebp
0041457D  |.  56          push esi
0041457E  |.  57          push edi
0041457F  |.  C74424 38 0>mov dword ptr ss:[esp+38],0
00414587  |.  A1 D8844300 mov eax,dword ptr ds:[4384D8]
0041458C  |.  8B0D DC8443>mov ecx,dword ptr ds:[4384DC]
00414592  |.  8A15 E08443>mov dl,byte ptr ds:[4384E0]
00414598  |.  8B35 44BA42>mov esi,dword ptr ds:[<&MSVCRT.strncpy>]    ;  msvcrt.strncpy
0041459E  |.  894424 18   mov dword ptr ss:[esp+18],eax
004145A2  |.  33C0        xor eax,eax
004145A4  |.  894C24 1C   mov dword ptr ss:[esp+1C],ecx
004145A8  |.  8B8C24 B401>mov ecx,dword ptr ss:[esp+1B4]
004145AF  |.  885424 20   mov byte ptr ss:[esp+20],dl
004145B3  |.  894424 24   mov dword ptr ss:[esp+24],eax
004145B7  |.  6A 08       push 8                                      ; /maxlen = 8
004145B9  |.  8D5424 28   lea edx,dword ptr ss:[esp+28]               ; |
004145BD  |.  894424 2C   mov dword ptr ss:[esp+2C],eax               ; |
004145C1  |.  51          push ecx                                    ; |src
004145C2  |.  52          push edx                                    ; |dest
004145C3  |.  C78424 B401>mov dword ptr ss:[esp+1B4],1                ; |
004145CE  |.  884424 38   mov byte ptr ss:[esp+38],al                 ; |
004145D2  |.  FFD6        call esi                                    ; \strncpy 复制8位用户名
004145D4  |.  8B8424 C001>mov eax,dword ptr ss:[esp+1C0]
004145DB  |.  6A 08       push 8                                      ; /maxlen = 8
004145DD  |.  8D8C24 8400>lea ecx,dword ptr ss:[esp+84]               ; |
004145E4  |.  50          push eax                                    ; |src
004145E5  |.  51          push ecx                                    ; |dest
004145E6  |.  FFD6        call esi                                    ; \strncpy 复制8位用户名
004145E8  |.  83C4 18     add esp,18
004145EB  |.  33C0        xor eax,eax                                 ;  i=0
004145ED  |.  8D4C24 7C   lea ecx,dword ptr ss:[esp+7C]
004145F1  |>  8A11        /mov dl,byte ptr ds:[ecx]                   ;  取name[8-i]
004145F3  |.  885404 24   |mov byte ptr ss:[esp+eax+24],dl            ;  移动用户名
004145F7  |.  40          |inc eax                                    ;  i++
004145F8  |.  49          |dec ecx
004145F9  |.  83F8 08     |cmp eax,8
004145FC  |.^ 7C F3       \jl short Wordllk.004145F1
004145FE  |.  33C0        xor eax,eax
00414600  |>  8A4C04 24   /mov cl,byte ptr ss:[esp+eax+24]            ;  依次取倒序后的用户名每1位

(8位)
00414604  |.  8A5C04 18   |mov bl,byte ptr ss:[esp+eax+18]            ;  依次取串"12345678"的每1位
00414608  |.  02D9        |add bl,cl                                  ;  相加
0041460A  |.  885C04 18   |mov byte ptr ss:[esp+eax+18],bl
0041460E  |.  40          |inc eax
0041460F  |.  83F8 08     |cmp eax,8
00414612  |.^ 7C EC       \jl short Wordllk.00414600

地址[esp+eax+18]的内容为:
0013F964  31 A4 A1 95 9E A0 A5 9D;这就是DES的8位密钥

00414614  |.  8B0D CC8443>mov ecx,dword ptr ds:[4384CC]               ;  ecx=34333231
0041461A  |.  8B15 C48443>mov edx,dword ptr ds:[4384C4]               ;  edx=64636261
00414620  |.  A1 C8844300 mov eax,dword ptr ds:[4384C8]               ;  eax=68676665
00414625  |.  894C24 48   mov dword ptr ss:[esp+48],ecx
00414629  |.  895424 40   mov dword ptr ss:[esp+40],edx
0041462D  |.  8B15 D08443>mov edx,dword ptr ds:[4384D0]               ;  edx=38373635
00414633  |.  894424 44   mov dword ptr ss:[esp+44],eax
00414637  |.  A0 D4844300 mov al,byte ptr ds:[4384D4]
0041463C  |.  8D4C24 18   lea ecx,dword ptr ss:[esp+18]
00414640  |.  6A 00       push 0
00414642  |.  51          push ecx
00414643  |.  895424 54   mov dword ptr ss:[esp+54],edx

地址[esp+40]的内容为:
0013F98C  61 62 63 64 65 66 67 68 31 32 33 34 35 36 37 38  abcdefgh12345678

00414647  |.  884424 58   mov byte ptr ss:[esp+58],al
0041464B  |.  E8 80E3FEFF call Wordllk.004029D0                       ;  对密钥的处理
00414650  |.  8D9424 8800>lea edx,dword ptr ss:[esp+88]
00414657  |.  8D4424 48   lea eax,dword ptr ss:[esp+48]
0041465B  |.  52          push edx                                    ;  返回地址13F9CC
0041465C  |.  50          push eax                                    ;  "abcdefgh"
0041465D  |.  E8 6EE5FEFF call Wordllk.00402BD0                       ;  DES加密

0013F9CC  D1 5C B7 A8 CE C4 BA 98

00414662  |.  8D8C24 9800>lea ecx,dword ptr ss:[esp+98]
00414669  |.  8D5424 58   lea edx,dword ptr ss:[esp+58]               ;  ASCII "12345678"
0041466D  |.  51          push ecx                                    ;  返回地址13F9D4
0041466E  |.  52          push edx                                    ;  要加密的串"12345678"
0041466F  |.  E8 5CE5FEFF call Wordllk.00402BD0                       ;  DES加密

0013F9D4  2E 63 87 B8 9F 5B 2E C5                          .c.?..

00414674  |.  B9 10000000 mov ecx,10
00414679  |.  BE 80844300 mov esi,Wordllk.00438480                    ;  ASCII 

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
0041467E  |.  8DBC24 7401>lea edi,dword ptr ss:[esp+174]
00414685  |.  83C4 18     add esp,18
00414688  |.  F3:A5       rep movs dword ptr es:[edi],dword ptr ds:[e>
0041468A  |.  A4          movs byte ptr es:[edi],byte ptr ds:[esi]
0041468B  |.  B9 10000000 mov ecx,10
00414690  |.  BE 80844300 mov esi,Wordllk.00438480                    ;  ASCII 

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
00414695  |.  8DBC24 D400>lea edi,dword ptr ss:[esp+D4]
0041469C  |.  8D9C24 8000>lea ebx,dword ptr ss:[esp+80]
004146A3  |.  F3:A5       rep movs dword ptr es:[edi],dword ptr ds:[e>
004146A5  |.  A4          movs byte ptr es:[edi],byte ptr ds:[esi]
004146A6  |.  B9 10000000 mov ecx,10
004146AB  |.  BE 80844300 mov esi,Wordllk.00438480                    ;  ASCII 

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
004146B0  |.  8DBC24 1801>lea edi,dword ptr ss:[esp+118]
004146B7  |.  8D6C24 54   lea ebp,dword ptr ss:[esp+54]
004146BB  |.  F3:A5       rep movs dword ptr es:[edi],dword ptr ds:[e>
004146BD  |.  A4          movs byte ptr es:[edi],byte ptr ds:[esi]
004146BE  |.  B9 10000000 mov ecx,10
004146C3  |.  BE 80844300 mov esi,Wordllk.00438480                    ;  ASCII 

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
004146C8  |.  8DBC24 9000>lea edi,dword ptr ss:[esp+90]
004146CF  |.  C74424 10 0>mov dword ptr ss:[esp+10],5
004146D7  |.  F3:A5       rep movs dword ptr es:[edi],dword ptr ds:[e>
004146D9  |.  A4          movs byte ptr es:[edi],byte ptr ds:[esi]
004146DA  |>  8B03        /mov eax,dword ptr ds:[ebx]     ; 取DES加密后的串“法文.c.”
004146DC  |.  8BC8        |mov ecx,eax                    ; 下面是对加密后的串进行Base64变换
004146DE  |.  C1E9 02     |shr ecx,2
004146E1  |.  83E1 3F     |and ecx,3F
004146E4  |.  7C 0E       |jl short Wordllk.004146F4
004146E6  |.  83F9 40     |cmp ecx,40
004146E9  |.  7D 09       |jge short Wordllk.004146F4
004146EB  |.  8A8C0C 5C01>|mov cl,byte ptr ss:[esp+ecx+15C]
004146F2  |.  EB 02       |jmp short Wordllk.004146F6
004146F4  |>  B1 3D       |mov cl,3D
004146F6  |>  0FBEF1      |movsx esi,cl
004146F9  |.  8BC8        |mov ecx,eax
004146FB  |.  8BD0        |mov edx,eax
004146FD  |.  C1E9 0C     |shr ecx,0C
00414700  |.  83E2 03     |and edx,3
00414703  |.  83E1 0F     |and ecx,0F
00414706  |.  C1E2 04     |shl edx,4
00414709  |.  0BCA        |or ecx,edx
0041470B  |.  7C 0E       |jl short Wordllk.0041471B
0041470D  |.  83F9 40     |cmp ecx,40
00414710  |.  7D 09       |jge short Wordllk.0041471B
00414712  |.  8A8C0C D400>|mov cl,byte ptr ss:[esp+ecx+D4]
00414719  |.  EB 02       |jmp short Wordllk.0041471D
0041471B  |>  B1 3D       |mov cl,3D
0041471D  |>  0FBED1      |movsx edx,cl
00414720  |.  8BC8        |mov ecx,eax
00414722  |.  8BF8        |mov edi,eax
00414724  |.  C1E9 08     |shr ecx,8
00414727  |.  83E1 0F     |and ecx,0F
0041472A  |.  C1EF 16     |shr edi,16
0041472D  |.  C1E1 02     |shl ecx,2
00414730  |.  83E7 03     |and edi,3
00414733  |.  0BCF        |or ecx,edi
00414735  |.  7C 0E       |jl short Wordllk.00414745
00414737  |.  83F9 40     |cmp ecx,40
0041473A  |.  7D 09       |jge short Wordllk.00414745
0041473C  |.  8A8C0C 1801>|mov cl,byte ptr ss:[esp+ecx+118]
00414743  |.  EB 02       |jmp short Wordllk.00414747
00414745  |>  B1 3D       |mov cl,3D
00414747  |>  C1E8 10     |shr eax,10
0041474A  |.  83E0 3F     |and eax,3F
0041474D  |.  0FBEC9      |movsx ecx,cl
00414750  |.  7C 0E       |jl short Wordllk.00414760
00414752  |.  83F8 40     |cmp eax,40
00414755  |.  7D 09       |jge short Wordllk.00414760
00414757  |.  8A8404 9000>|mov al,byte ptr ss:[esp+eax+90]
0041475E  |.  EB 02       |jmp short Wordllk.00414762
00414760  |>  B0 3D       |mov al,3D
00414762  |>  0FBEC0      |movsx eax,al
00414765  |.  C1E0 08     |shl eax,8
00414768  |.  0BC1        |or eax,ecx
0041476A  |.  83C5 04     |add ebp,4
0041476D  |.  C1E0 08     |shl eax,8
00414770  |.  0BC2        |or eax,edx
00414772  |.  83C3 03     |add ebx,3
00414775  |.  C1E0 08     |shl eax,8
00414778  |.  0BC6        |or eax,esi
0041477A  |.  8945 FC     |mov dword ptr ss:[ebp-4],eax
0041477D  |.  8B4424 10   |mov eax,dword ptr ss:[esp+10]
00414781  |.  48          |dec eax
00414782  |.  894424 10   |mov dword ptr ss:[esp+10],eax
00414786  |.^ 0F85 4EFFFF>\jnz Wordllk.004146DA
0041478C  |.  8A03        mov al,byte ptr ds:[ebx]
0041478E  |.  B9 10000000 mov ecx,10
00414793  |.  BE 80844300 mov esi,Wordllk.00438480                    ;  ASCII 

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
00414798  |.  8DBC24 9000>lea edi,dword ptr ss:[esp+90]
0041479F  |.  F3:A5       rep movs dword ptr es:[edi],dword ptr ds:[e>
004147A1  |.  C74424 10 0>mov dword ptr ss:[esp+10],0
004147A9  |.  884424 10   mov byte ptr ss:[esp+10],al
004147AD  |.  8B5424 10   mov edx,dword ptr ss:[esp+10]
004147B1  |.  8BC2        mov eax,edx
004147B3  |.  C1E8 02     shr eax,2
004147B6  |.  83E0 3F     and eax,3F
004147B9  |.  A4          movs byte ptr es:[edi],byte ptr ds:[esi]
004147BA  |.  7C 0E       jl short Wordllk.004147CA
004147BC  |.  83F8 40     cmp eax,40
004147BF  |.  7D 09       jge short Wordllk.004147CA
004147C1  |.  8A8404 9000>mov al,byte ptr ss:[esp+eax+90]
004147C8  |.  EB 02       jmp short Wordllk.004147CC
004147CA  |>  B0 3D       mov al,3D
004147CC  |>  B9 10000000 mov ecx,10
004147D1  |.  BE 80844300 mov esi,Wordllk.00438480                    ;  ASCII 

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
004147D6  |.  8DBC24 9000>lea edi,dword ptr ss:[esp+90]
004147DD  |.  8845 00     mov byte ptr ss:[ebp],al
004147E0  |.  F3:A5       rep movs dword ptr es:[edi],dword ptr ds:[e>
004147E2  |.  8BC2        mov eax,edx
004147E4  |.  83E2 03     and edx,3
004147E7  |.  C1E8 0C     shr eax,0C
004147EA  |.  83E0 0F     and eax,0F
004147ED  |.  C1E2 04     shl edx,4
004147F0  |.  0BC2        or eax,edx
004147F2  |.  A4          movs byte ptr es:[edi],byte ptr ds:[esi]
004147F3  |.  7C 0E       jl short Wordllk.00414803
004147F5  |.  83F8 40     cmp eax,40
004147F8  |.  7D 09       jge short Wordllk.00414803
004147FA  |.  8A8404 9000>mov al,byte ptr ss:[esp+eax+90]
00414801  |.  EB 02       jmp short Wordllk.00414805
00414803  |>  B0 3D       mov al,3D
00414805  |>  8845 01     mov byte ptr ss:[ebp+1],al
00414808  |.  C645 02 3D  mov byte ptr ss:[ebp+2],3D
0041480C  |.  C645 03 3D  mov byte ptr ss:[ebp+3],3D
00414810  |.  83C5 04     add ebp,4
00414813  |.  8D7C24 54   lea edi,dword ptr ss:[esp+54]               ;  Base64结

果"0Vy3qM7EupguY4e4n1suxQ=="
00414817  |.  83C9 FF     or ecx,FFFFFFFF
0041481A  |.  33C0        xor eax,eax
0041481C  |.  C645 00 00  mov byte ptr ss:[ebp],0
00414820  |.  F2:AE       repne scas byte ptr es:[edi]
00414822  |.  F7D1        not ecx
00414824  |.  49          dec ecx
00414825  |.  85C9        test ecx,ecx                                ;  ecx=24
00414827  |.  7E 29       jle short Wordllk.00414852                  ;  依次取Base64变换后的每1位
00414829  |>  807C04 54 2>/cmp byte ptr ss:[esp+eax+54],2F            ;  如果是/
0041482E  |.  75 05       |jnz short Wordllk.00414835
00414830  |.  C64404 54 3>|mov byte ptr ss:[esp+eax+54],31            ;  替换为'1'
00414835  |>  807C04 54 2>|cmp byte ptr ss:[esp+eax+54],2B            ;  如果是+
0041483A  |.  75 05       |jnz short Wordllk.00414841
0041483C  |.  C64404 54 3>|mov byte ptr ss:[esp+eax+54],32            ;  替换为'2'
00414841  |>  807C04 54 3>|cmp byte ptr ss:[esp+eax+54],3D            ;  如果是=
00414846  |.  75 05       |jnz short Wordllk.0041484D
00414848  |.  C64404 54 0>|mov byte ptr ss:[esp+eax+54],0             ;  替换为0
0041484D  |>  40          |inc eax
0041484E  |.  3BC1        |cmp eax,ecx
00414850  |.^ 7C D7       \jl short Wordllk.00414829
00414852  |>  8D4C24 54   lea ecx,dword ptr ss:[esp+54]               ;  ASCII 

"0Vy3qM7EupguY4e4n1suxQ"
00414856  |.  51          push ecx                                    ; /s
00414857  |.  FF15 B0B942>call dword ptr ds:[<&MSVCRT._strupr>]       ; \_strupr 转换为大写
0041485D  |.  83C4 04     add esp,4
00414860  |.  8D5424 54   lea edx,dword ptr ss:[esp+54]               ;  ASCII 

"0VY3QM7EUPGUY4E4N1SUXQ"
00414864  |.  8D4C24 14   lea ecx,dword ptr ss:[esp+14]
00414868  |.  52          push edx
00414869  |.  E8 600D0100 call <jmp.&MFC42.#537>
0041486E  |.  6A 10       push 10
00414870  |.  8D4424 14   lea eax,dword ptr ss:[esp+14]
00414874  |.  B3 02       mov bl,2
00414876  |.  6A 00       push 0
00414878  |.  50          push eax
00414879  |.  8D4C24 20   lea ecx,dword ptr ss:[esp+20]
0041487D  |.  889C24 B401>mov byte ptr ss:[esp+1B4],bl
00414884  |.  E8 6F0D0100 call <jmp.&MFC42.#4278>
00414889  |.  50          push eax
0041488A  |.  8D4C24 18   lea ecx,dword ptr ss:[esp+18]
0041488E  |.  C68424 AC01>mov byte ptr ss:[esp+1AC],3
00414896  |.  E8 570D0100 call <jmp.&MFC42.#858>
0041489B  |.  8D4C24 10   lea ecx,dword ptr ss:[esp+10]
0041489F  |.  889C24 A801>mov byte ptr ss:[esp+1A8],bl
004148A6  |.  E8 ED0C0100 call <jmp.&MFC42.#800>
004148AB  |.  6A 04       push 4                              ;取4位
004148AD  |.  8D4C24 38   lea ecx,dword ptr ss:[esp+38]
004148B1  |.  6A 0C       push 0C                             ;从第12位开始取
004148B3  |.  51          push ecx                            ;返回地址
004148B4  |.  8D4C24 20   lea ecx,dword ptr ss:[esp+20]
004148B8  |.  E8 3B0D0100 call <jmp.&MFC42.#4278>
004148BD  |.  8BF0        mov esi,eax
004148BF  |.  6A 04       push 4                              ;取4位
004148C1  |.  8D5424 40   lea edx,dword ptr ss:[esp+40]
004148C5  |.  6A 08       push 8                              ;从第8位开始取
004148C7  |.  52          push edx                            ;返回地址
004148C8  |.  8D4C24 20   lea ecx,dword ptr ss:[esp+20]
004148CC  |.  C68424 B401>mov byte ptr ss:[esp+1B4],4
004148D4  |.  E8 1F0D0100 call <jmp.&MFC42.#4278>
004148D9  |.  8BF8        mov edi,eax
004148DB  |.  6A 04       push 4                              ;取4位
004148DD  |.  8D4424 34   lea eax,dword ptr ss:[esp+34]
004148E1  |.  6A 04       push 4                              ;从第4位开始取
004148E3  |.  50          push eax                            ;返回地址
004148E4  |.  8D4C24 20   lea ecx,dword ptr ss:[esp+20]
004148E8  |.  C68424 B401>mov byte ptr ss:[esp+1B4],5
004148F0  |.  E8 030D0100 call <jmp.&MFC42.#4278>
004148F5  |.  8BE8        mov ebp,eax
004148F7  |.  6A 04       push 4                              ;取4位
004148F9  |.  8D4C24 14   lea ecx,dword ptr ss:[esp+14]
004148FD  |.  6A 00       push 0                              ;从第0位开始取
004148FF  |.  51          push ecx                            ;返回地址
00414900  |.  8D4C24 20   lea ecx,dword ptr ss:[esp+20]
00414904  |.  C68424 B401>mov byte ptr ss:[esp+1B4],6
0041490C  |.  E8 E70C0100 call <jmp.&MFC42.#4278>
00414911  |.  8B16        mov edx,dword ptr ds:[esi]                  ;  EDX="Y4E4"
00414913  |.  8B0F        mov ecx,dword ptr ds:[edi]                  ;  ECX="UPGU"
00414915  |.  8B00        mov eax,dword ptr ds:[eax]                  ;  EAX="0VY3"
00414917  |.  52          push edx                                    ;  edx入栈
00414918  |.  8B55 00     mov edx,dword ptr ss:[ebp]                  ;  edx="QM7E"
0041491B  |.  51          push ecx
0041491C  |.  52          push edx
0041491D  |.  50          push eax
0041491E  |.  8D8C24 C401>lea ecx,dword ptr ss:[esp+1C4]
00414925  |.  68 74844300 push Wordllk.00438474                       ;  ASCII "%s-%s-%s-%s"
0041492A  |.  51          push ecx                                    ;  返回值地址
0041492B  |.  C68424 C001>mov byte ptr ss:[esp+1C0],7
00414933  |.  E8 7E0C0100 call <jmp.&MFC42.#2818>                     ;  格式化字符串
00414938  |.  83C4 18     add esp,18                                  ;  ecx="0VY3-QM7E-UPGU-Y4E4"
0041493B  |.  8D4C24 10   lea ecx,dword ptr ss:[esp+10]
0041493F  |.  C68424 A801>mov byte ptr ss:[esp+1A8],6


下面是0041464B  |.  E8 80E3FEFF call Wordllk.004029D0 
其实下面就是对DES密钥的处理,偶比较笨,一开始没看出来,所以就跟了一遍,看来得多学习才行啊,呵呵

004029D0  /$  81EC F40000>sub esp,0F4
004029D6  |.  33C9        xor ecx,ecx
004029D8  |.  53          push ebx
004029D9  |.  55          push ebp
004029DA  |.  56          push esi
004029DB  |.  8BB424 0401>mov esi,dword ptr ss:[esp+104]
004029E2  |.  57          push edi
004029E3  |>  33C0        /xor eax,eax
004029E5  |.  8A81 107443>|mov al,byte ptr ds:[ecx+437410]            ;  取表1
004029EB  |.  8BD0        |mov edx,eax
004029ED  |.  83E0 07     |and eax,7                                  ;  eax界于0到7之间
004029F0  |.  C1FA 03     |sar edx,3                                  ;  edx界于0到7之间
004029F3  |.  8A1C45 A073>|mov bl,byte ptr ds:[eax*2+4373A0]          ;  取表2
004029FA  |.  8A1432      |mov dl,byte ptr ds:[edx+esi]               ;  取表3
004029FD  |.  84D3        |test bl,dl
004029FF  |.  0F95C0      |setne al
00402A02  |.  88440C 4C   |mov byte ptr ss:[esp+ecx+4C],al
00402A06  |.  41          |inc ecx
00402A07  |.  83F9 38     |cmp ecx,38
00402A0A  |.^ 7C D7       \jl short Wordllk.004029E3
00402A0C  |.  B8 1E000000 mov eax,1E
00402A11  |.  33D2        xor edx,edx
00402A13  |.  894424 10   mov dword ptr ss:[esp+10],eax
00402A17  |>  66:83BC24 0>/cmp word ptr ss:[esp+10C],1
00402A20  |.  74 03       |je short Wordllk.00402A25
00402A22  |.  8D0412      |lea eax,dword ptr ds:[edx+edx]
00402A25  |>  8DBC84 8800>|lea edi,dword ptr ss:[esp+eax*4+88]
00402A2C  |.  8DAC84 8400>|lea ebp,dword ptr ss:[esp+eax*4+84]
00402A33  |.  33C0        |xor eax,eax
00402A35  |.  33C9        |xor ecx,ecx
00402A37  |.  8A8A 487443>|mov cl,byte ptr ds:[edx+437448]
00402A3D  |.  C707 000000>|mov dword ptr ds:[edi],0
00402A43  |.  C745 00 000>|mov dword ptr ss:[ebp],0
00402A4A  |.  8BF1        |mov esi,ecx
00402A4C  |>  83F9 1C     |/cmp ecx,1C
00402A4F  |.  7D 06       ||jge short Wordllk.00402A57
00402A51  |.  8A5C0C 4C   ||mov bl,byte ptr ss:[esp+ecx+4C]           ;  取0,1表
00402A55  |.  EB 04       ||jmp short Wordllk.00402A5B
00402A57  |>  8A5C0C 30   ||mov bl,byte ptr ss:[esp+ecx+30]           ;  移动位置
00402A5B  |>  885C04 14   ||mov byte ptr ss:[esp+eax+14],bl
00402A5F  |.  40          ||inc eax
00402A60  |.  41          ||inc ecx
00402A61  |.  83F8 1C     ||cmp eax,1C
00402A64  |.^ 7C E6       |\jl short Wordllk.00402A4C
00402A66  |.  B8 1C000000 |mov eax,1C
00402A6B  |.  8D4E 1C     |lea ecx,dword ptr ds:[esi+1C]
00402A6E  |>  83F9 38     |/cmp ecx,38
00402A71  |.  7D 06       ||jge short Wordllk.00402A79
00402A73  |.  8A5C0C 4C   ||mov bl,byte ptr ss:[esp+ecx+4C]           ;  取0,1表
00402A77  |.  EB 04       ||jmp short Wordllk.00402A7D               
00402A79  |>  8A5C0C 30   ||mov bl,byte ptr ss:[esp+ecx+30]           
00402A7D  |>  885C04 14   ||mov byte ptr ss:[esp+eax+14],bl
00402A81  |.  40          ||inc eax
00402A82  |.  41          ||inc ecx
00402A83  |.  83F8 38     ||cmp eax,38
00402A86  |.^ 7C E6       |\jl short Wordllk.00402A6E
00402A88  |.  33C0        |xor eax,eax
00402A8A  |>  33C9        |/xor ecx,ecx
00402A8C  |.  8A88 587443>||mov cl,byte ptr ds:[eax+437458]
00402A92  |.  8A5C0C 14   ||mov bl,byte ptr ss:[esp+ecx+14]
00402A96  |.  84DB        ||test bl,bl
00402A98  |.  74 0F       ||je short Wordllk.00402AA9
00402A9A  |.  8B0C85 B073>||mov ecx,dword ptr ds:[eax*4+4373B0]
00402AA1  |.  8B75 00     ||mov esi,dword ptr ss:[ebp]
00402AA4  |.  0BF1        ||or esi,ecx
00402AA6  |.  8975 00     ||mov dword ptr ss:[ebp],esi
00402AA9  |>  33C9        ||xor ecx,ecx
00402AAB  |.  8A88 707443>||mov cl,byte ptr ds:[eax+437470]
00402AB1  |.  8A5C0C 14   ||mov bl,byte ptr ss:[esp+ecx+14]
00402AB5  |.  84DB        ||test bl,bl
00402AB7  |.  74 0D       ||je short Wordllk.00402AC6
00402AB9  |.  8B0C85 B073>||mov ecx,dword ptr ds:[eax*4+4373B0]
00402AC0  |.  8B37        ||mov esi,dword ptr ds:[edi]
00402AC2  |.  0BF1        ||or esi,ecx
00402AC4  |.  8937        ||mov dword ptr ds:[edi],esi
00402AC6  |>  40          ||inc eax
00402AC7  |.  83F8 18     ||cmp eax,18
00402ACA  |.^ 7C BE       |\jl short Wordllk.00402A8A
00402ACC  |.  8B4424 10   |mov eax,dword ptr ss:[esp+10]
00402AD0  |.  42          |inc edx
00402AD1  |.  83E8 02     |sub eax,2
00402AD4  |.  83F8 FE     |cmp eax,-2
00402AD7  |.  894424 10   |mov dword ptr ss:[esp+10],eax
00402ADB  |.^ 0F8F 36FFFF>\jg Wordllk.00402A17
00402AE1  |.  8D9424 8400>lea edx,dword ptr ss:[esp+84]
00402AE8  |.  52          push edx
00402AE9  |.  E8 12000000 call Wordllk.00402B00
00402AEE  |.  83C4 04     add esp,4
00402AF1  |.  5F          pop edi
00402AF2  |.  5E          pop esi
00402AF3  |.  5D          pop ebp
00402AF4  |.  5B          pop ebx
00402AF5  |.  81C4 F40000>add esp,0F4
00402AFB  \.  C3          retn
------------------------------------------------------------------------
【破解总结】算法不难,偶比较笨,就用C来解释吧
1.
unsigned char name[9]="fenjianr",temp[8],str[9]="12345678";
int i;
for (i=0;i<8;i++) {
  temp[i]=name[8-i];
  temp[i]+=str[i];
}

2. 得出来的8字节temp的Hex形式为:31A4A1959EA0A59D,做为DES密钥,
DES加密“abcdefgh12345678”,得到串1="法文.c.",其Hex形式为

D15CB7A8CEC4BA982E6387B89F5B2EC5
3. Base64Encode(串1)=0Vy3qM7EupguY4e4n1suxQ==,转换为大写并取前16位用'-'连接即可
------------------------------------------------------------------------
【版权声明】本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢! 2007年4月6日