【文章标题】: 家家乐相册 2006.10 版 算法分析
【文章作者】: KAN [ DCG ]
【作者邮箱】: tom7411@163.com
【作者主页】: 我都想有,可惜。。。。
【作者QQ号】: 591258070
【软件名称】: 家家乐相册 2006.10 版
【软件大小】: 不知道,但不大
【下载地址】:  http://www.hfjsj.com/PicAlbum/index.htm
【加壳方式】: 好像没
【保护方式】: 作者放水 ^_^
【编写语言】: 好像是 Dephi
【使用工具】: OD 
【操作平台】: 大概是 XP sp2 吧
【软件介绍】: 一个相册生成工具,用了一下感觉不错 (本人推荐 )
【作者声明】: 只是感兴趣,为解密而学破解
  --------------------------------------------------------------------
【详细过程】
  软件用 OD 载入后,按 F9 会不能启动, 按 shift + f9 几次就可以了,说真的写一篇破文真的有点累,比破解这个
  软件辛苦多了,平时破解一个软件,因为不用负责,追出了码(或逆向算出自己要的真码就算了),大不了就来个
  
  “ 狠 的 ”,TIT ^_^ ,但写破文就要写啊写啊,每一步都要看清楚 ,晕,佩服那些大侠写一些高难度的,晕死 
  
  
  004E3394  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]              ;  假码        下断点
  004E3397  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
  004E339A  |.  E8 415CF2FF   CALL PicAlbum.00408FE0
  004E339F  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
  004E33A2  |.  50            PUSH EAX
  004E33A3  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
  004E33A6  |.  8B83 FC020000 MOV EAX,DWORD PTR DS:[EBX+2FC]
  004E33AC  |.  E8 CB6FF6FF   CALL PicAlbum.0044A37C
  004E33B1  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]             ;  用户名
  004E33B4  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
  004E33B7  |.  E8 245CF2FF   CALL PicAlbum.00408FE0
  004E33BC  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
  004E33BF  |.  A1 90EF4F00   MOV EAX,DWORD PTR DS:[4FEF90]
  004E33C4  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]                ;  特定字符串     PicAlbum
  004E33C6  |.  59            POP ECX
  004E33C7  |.  E8 10E5FDFF   CALL PicAlbum.004C18DC                    ;  关键 CALL F7进入
  004E33CC  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
  004E33CF  |.  A1 E8F04F00   MOV EAX,DWORD PTR DS:[4FF0E8]
  004E33D4  |.  E8 FB15F2FF   CALL PicAlbum.004049D4
  004E33D9  |.  A1 E8F04F00   MOV EAX,DWORD PTR DS:[4FF0E8]
  004E33DE  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004E33E0  |.  BA 44364E00   MOV EDX,PicAlbum.004E3644                 ;  ASCII "OK"
  004E33E5  |.  E8 9219F2FF   CALL PicAlbum.00404D7C                    ;  判断 CALL
  004E33EA  |.  0F85 96010000 JNZ PicAlbum.004E3586                     ;  关键跳转
  004E33F0  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
  004E33F3  |.  8B83 FC020000 MOV EAX,DWORD PTR DS:[EBX+2FC]
  004E33F9  |.  E8 7E6FF6FF   CALL PicAlbum.0044A37C
  004E33FE  |.  8B45 E4       MOV EAX,DWORD PTR SS:[EBP-1C]
  004E3401  |.  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]
  004E3404  |.  E8 D75BF2FF   CALL PicAlbum.00408FE0
  004E3409  |.  8B55 E8       MOV EDX,DWORD PTR SS:[EBP-18]
  004E340C  |.  A1 ACF04F00   MOV EAX,DWORD PTR DS:[4FF0AC]
  004E3411  |.  E8 BE15F2FF   CALL PicAlbum.004049D4
  004E3416  |.  8D55 DC       LEA EDX,DWORD PTR SS:[EBP-24]
  004E3419  |.  8B83 00030000 MOV EAX,DWORD PTR DS:[EBX+300]
  004E341F  |.  E8 586FF6FF   CALL PicAlbum.0044A37C
  004E3424  |.  8B45 DC       MOV EAX,DWORD PTR SS:[EBP-24]
  004E3427  |.  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
  004E342A  |.  E8 B15BF2FF   CALL PicAlbum.00408FE0
  004E342F  |.  8B55 E0       MOV EDX,DWORD PTR SS:[EBP-20]
  004E3432  |.  A1 E4F14F00   MOV EAX,DWORD PTR DS:[4FF1E4]
  004E3437  |.  E8 9815F2FF   CALL PicAlbum.004049D4
  004E343C  |.  B2 01         MOV DL,1
  004E343E  |.  A1 50054700   MOV EAX,DWORD PTR DS:[470550]
  004E3443  |.  E8 08D2F8FF   CALL PicAlbum.00470650
  004E3448  |.  8BF0          MOV ESI,EAX
  004E344A  |.  BA 02000080   MOV EDX,80000002
  004E344F  |.  8BC6          MOV EAX,ESI
  004E3451  |.  E8 9AD2F8FF   CALL PicAlbum.004706F0
  004E3456  |.  BA 50364E00   MOV EDX,PicAlbum.004E3650                 ;  ASCII "Software\HwaFullSoft\PicAlbum"
  004E345B  |.  8BC6          MOV EAX,ESI
  004E345D  |.  E8 82D7F8FF   CALL PicAlbum.00470BE4
  004E3462  |.  84C0          TEST AL,AL
  004E3464  |.  75 0C         JNZ SHORT PicAlbum.004E3472
  004E3466  |.  BA 50364E00   MOV EDX,PicAlbum.004E3650                 ;  ASCII "Software\HwaFullSoft\PicAlbum"
  004E346B  |.  8BC6          MOV EAX,ESI
  004E346D  |.  E8 E2D2F8FF   CALL PicAlbum.00470754
  004E3472  |>  B1 01         MOV CL,1
  004E3474  |.  BA 50364E00   MOV EDX,PicAlbum.004E3650                 ;  ASCII "Software\HwaFullSoft\PicAlbum"
  004E3479  |.  8BC6          MOV EAX,ESI
  004E347B  |.  E8 B0D3F8FF   CALL PicAlbum.00470830
  004E3480  |.  84C0          TEST AL,AL
  004E3482  |.  74 31         JE SHORT PicAlbum.004E34B5
  004E3484  |.  8B0D ACF04F00 MOV ECX,DWORD PTR DS:[4FF0AC]             ;  PicAlbum.00550024
  004E348A  |.  8B09          MOV ECX,DWORD PTR DS:[ECX]
  004E348C  |.  BA 78364E00   MOV EDX,PicAlbum.004E3678                 ;  ASCII "REG_NAME"
  004E3491  |.  8BC6          MOV EAX,ESI
  004E3493  |.  E8 34D5F8FF   CALL PicAlbum.004709CC
  004E3498  |.  8B0D E4F14F00 MOV ECX,DWORD PTR DS:[4FF1E4]             ;  PicAlbum.00550028
  004E349E  |.  8B09          MOV ECX,DWORD PTR DS:[ECX]
  004E34A0  |.  BA 8C364E00   MOV EDX,PicAlbum.004E368C                 ;  ASCII "REG_NO"
  004E34A5  |.  8BC6          MOV EAX,ESI
  004E34A7  |.  E8 20D5F8FF   CALL PicAlbum.004709CC
  004E34AC  |.  8BC6          MOV EAX,ESI
  004E34AE  |.  E8 0DD2F8FF   CALL PicAlbum.004706C0
  004E34B3  |.  EB 6A         JMP SHORT PicAlbum.004E351F
  004E34B5  |>  B2 01         MOV DL,1
  004E34B7  |.  8BC6          MOV EAX,ESI
  004E34B9  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
  004E34BB  |.  FF51 FC       CALL DWORD PTR DS:[ECX-4]
  004E34BE  |.  A1 80F14F00   MOV EAX,DWORD PTR DS:[4FF180]
  004E34C3  |.  BA 9C364E00   MOV EDX,PicAlbum.004E369C
  004E34C8  |.  E8 0715F2FF   CALL PicAlbum.004049D4
  004E34CD  |.  A1 80F14F00   MOV EAX,DWORD PTR DS:[4FF180]
  004E34D2  |.  83C0 04       ADD EAX,4
  004E34D5  |.  BA D4364E00   MOV EDX,PicAlbum.004E36D4                 ;  ASCII "Write windows register table error!"
  004E34DA  |.  E8 F514F2FF   CALL PicAlbum.004049D4
  004E34DF  |.  6A 40         PUSH 40
  004E34E1  |.  A1 48EF4F00   MOV EAX,DWORD PTR DS:[4FEF48]
  004E34E6  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004E34E8  |.  8B15 80F14F00 MOV EDX,DWORD PTR DS:[4FF180]             ;  PicAlbum.0055003C
  004E34EE  |.  8B4482 FC     MOV EAX,DWORD PTR DS:[EDX+EAX*4-4]
  004E34F2  |.  E8 3919F2FF   CALL PicAlbum.00404E30
  004E34F7  |.  50            PUSH EAX
  004E34F8  |.  A1 0CF14F00   MOV EAX,DWORD PTR DS:[4FF10C]
  004E34FD  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004E34FF  |.  E8 2C19F2FF   CALL PicAlbum.00404E30
  004E3504  |.  8BC8          MOV ECX,EAX
  004E3506  |.  A1 C4F04F00   MOV EAX,DWORD PTR DS:[4FF0C4]
  004E350B  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004E350D  |.  5A            POP EDX
  004E350E  |.  E8 F170F8FF   CALL PicAlbum.0046A604
  004E3513  |.  8BC3          MOV EAX,EBX
  004E3515  |.  E8 AE38F8FF   CALL PicAlbum.00466DC8
  004E351A  |.  E9 BC000000   JMP PicAlbum.004E35DB
  004E351F  |>  B2 01         MOV DL,1
  004E3521  |.  8BC6          MOV EAX,ESI
  004E3523  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
  004E3525  |.  FF51 FC       CALL DWORD PTR DS:[ECX-4]
  004E3528  |.  A1 80F14F00   MOV EAX,DWORD PTR DS:[4FF180]
  004E352D  |.  BA 00374E00   MOV EDX,PicAlbum.004E3700
  004E3532  |.  E8 9D14F2FF   CALL PicAlbum.004049D4
  004E3537  |.  A1 80F14F00   MOV EAX,DWORD PTR DS:[4FF180]
  004E353C  |.  83C0 04       ADD EAX,4
  004E353F  |.  BA 20374E00   MOV EDX,PicAlbum.004E3720                 ;  ASCII "Register OK!"
  004E3544  |.  E8 8B14F2FF   CALL PicAlbum.004049D4
  004E3549  |.  6A 40         PUSH 40
  004E354B  |.  A1 48EF4F00   MOV EAX,DWORD PTR DS:[4FEF48]
  004E3550  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004E3552  |.  8B15 80F14F00 MOV EDX,DWORD PTR DS:[4FF180]             ;  PicAlbum.0055003C
  004E3558  |.  8B4482 FC     MOV EAX,DWORD PTR DS:[EDX+EAX*4-4]
  004E355C  |.  E8 CF18F2FF   CALL PicAlbum.00404E30
  004E3561  |.  50            PUSH EAX
  004E3562  |.  A1 0CF14F00   MOV EAX,DWORD PTR DS:[4FF10C]
  004E3567  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004E3569  |.  E8 C218F2FF   CALL PicAlbum.00404E30
  004E356E  |.  8BC8          MOV ECX,EAX
  004E3570  |.  A1 C4F04F00   MOV EAX,DWORD PTR DS:[4FF0C4]
  004E3575  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004E3577  |.  5A            POP EDX
  004E3578  |.  E8 8770F8FF   CALL PicAlbum.0046A604
  004E357D  |.  8BC3          MOV EAX,EBX
  004E357F  |.  E8 4438F8FF   CALL PicAlbum.00466DC8
  004E3584  |.  EB 55         JMP SHORT PicAlbum.004E35DB
  004E3586  |>  A1 80F14F00   MOV EAX,DWORD PTR DS:[4FF180]
  004E358B  |.  BA 38374E00   MOV EDX,PicAlbum.004E3738
  004E3590  |.  E8 3F14F2FF   CALL PicAlbum.004049D4
  004E3595  |.  A1 80F14F00   MOV EAX,DWORD PTR DS:[4FF180]
  004E359A  |.  83C0 04       ADD EAX,4
  004E359D  |.  BA 60374E00   MOV EDX,PicAlbum.004E3760                 ;  ASCII "Input data have error,please try again!"
  004E35A2  |.  E8 2D14F2FF   CALL PicAlbum.004049D4
  
  _____________________________________________________________________________________________________
  F7 进入 004E33C7 来到下面
  
  004C18DC  /$  55            PUSH EBP
  004C18DD  |.  8BEC          MOV EBP,ESP
  004C18DF  |.  51            PUSH ECX
  004C18E0  |.  B9 14000000   MOV ECX,14
  004C18E5  |>  6A 00         /PUSH 0
  004C18E7  |.  6A 00         |PUSH 0
  004C18E9  |.  49            |DEC ECX
  004C18EA  |.^ 75 F9         \JNZ SHORT PicAlbum.004C18E5
  004C18EC  |.  874D FC       XCHG DWORD PTR SS:[EBP-4],ECX
  004C18EF  |.  53            PUSH EBX
  004C18F0  |.  56            PUSH ESI
  004C18F1  |.  57            PUSH EDI
  004C18F2  |.  894D F4       MOV DWORD PTR SS:[EBP-C],ECX              ;  假码入内存
  004C18F5  |.  8955 F8       MOV DWORD PTR SS:[EBP-8],EDX              ;  用户名地址入内存
  004C18F8  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX              ;  PicAlbum 字符串地址入内存
  004C18FB  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004C18FE  |.  E8 1D35F4FF   CALL PicAlbum.00404E20
  004C1903  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
  004C1906  |.  E8 1535F4FF   CALL PicAlbum.00404E20
  004C190B  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
  004C190E  |.  E8 0D35F4FF   CALL PicAlbum.00404E20
  004C1913  |.  33C0          XOR EAX,EAX
  004C1915  |.  55            PUSH EBP
  004C1916  |.  68 0B1E4C00   PUSH PicAlbum.004C1E0B
  004C191B  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
  004C191E  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004C1921  |.  8D55 90       LEA EDX,DWORD PTR SS:[EBP-70]
  004C1924  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
  004C1927  |.  E8 B476F4FF   CALL PicAlbum.00408FE0
  004C192C  |.  8B55 90       MOV EDX,DWORD PTR SS:[EBP-70]
  004C192F  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
  004C1932  |.  E8 E130F4FF   CALL PicAlbum.00404A18
  004C1937  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
  004C193A  |.  E8 F932F4FF   CALL PicAlbum.00404C38
  004C193F  |.  83F8 13       CMP EAX,13                                ;  看看你输入的是不是 19 个字符
  004C1942  |.  74 1F         JE SHORT PicAlbum.004C1963                ;  是就跳到正式生成注册码的地方
  004C1944  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
  004C1947  |.  E8 EC32F4FF   CALL PicAlbum.00404C38
  004C194C  |.  83F8 17       CMP EAX,17
  004C194F  |.  74 12         JE SHORT PicAlbum.004C1963
  004C1951  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
  004C1954  |.  BA 241E4C00   MOV EDX,PicAlbum.004C1E24                 ;  ASCII "NONE"
  004C1959  |.  E8 7630F4FF   CALL PicAlbum.004049D4
  004C195E  |.  E9 7D040000   JMP PicAlbum.004C1DE0
  004C1963  |>  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
  004C1966  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
  004C1969  |.  E8 7276F4FF   CALL PicAlbum.00408FE0
  004C196E  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
  004C1971  |.  E8 C232F4FF   CALL PicAlbum.00404C38
  004C1976  |.  8BF8          MOV EDI,EAX
  004C1978  |.  83FF 01       CMP EDI,1
  004C197B  |.  7D 12         JGE SHORT PicAlbum.004C198F
  004C197D  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
  004C1980  |.  BA 241E4C00   MOV EDX,PicAlbum.004C1E24                 ;  ASCII "NONE"
  004C1985  |.  E8 4A30F4FF   CALL PicAlbum.004049D4
  004C198A  |.  E9 51040000   JMP PicAlbum.004C1DE0
  004C198F  |>  83FF 10       CMP EDI,10
  004C1992  |.  7D 25         JGE SHORT PicAlbum.004C19B9
  004C1994  |>  8D55 8C       /LEA EDX,DWORD PTR SS:[EBP-74]            ;  这里把用户名连接成 4 倍
  004C1997  |.  8B45 F8       |MOV EAX,DWORD PTR SS:[EBP-8]
  004C199A  |.  E8 4176F4FF   |CALL PicAlbum.00408FE0
  004C199F  |.  8B55 8C       |MOV EDX,DWORD PTR SS:[EBP-74]
  004C19A2  |.  8D45 F0       |LEA EAX,DWORD PTR SS:[EBP-10]
  004C19A5  |.  E8 9632F4FF   |CALL PicAlbum.00404C40
  004C19AA  |.  8B45 F0       |MOV EAX,DWORD PTR SS:[EBP-10]
  004C19AD  |.  E8 8632F4FF   |CALL PicAlbum.00404C38
  004C19B2  |.  8BF8          |MOV EDI,EAX
  004C19B4  |.  83FF 10       |CMP EDI,10
  004C19B7  |.^ 7C DB         \JL SHORT PicAlbum.004C1994
  004C19B9  |>  C645 97 50    MOV BYTE PTR SS:[EBP-69],50               ;  这里给内存输入 固定字符串 P9C8U7E6H5U4I3G2
  004C19BD  |.  C645 98 39    MOV BYTE PTR SS:[EBP-68],39
  004C19C1  |.  C645 99 43    MOV BYTE PTR SS:[EBP-67],43
  004C19C5  |.  C645 9A 38    MOV BYTE PTR SS:[EBP-66],38
  004C19C9  |.  C645 9B 55    MOV BYTE PTR SS:[EBP-65],55
  004C19CD  |.  C645 9C 37    MOV BYTE PTR SS:[EBP-64],37
  004C19D1  |.  C645 9D 45    MOV BYTE PTR SS:[EBP-63],45
  004C19D5  |.  C645 9E 36    MOV BYTE PTR SS:[EBP-62],36
  004C19D9  |.  C645 9F 48    MOV BYTE PTR SS:[EBP-61],48
  004C19DD  |.  C645 A0 35    MOV BYTE PTR SS:[EBP-60],35
  004C19E1  |.  C645 A1 55    MOV BYTE PTR SS:[EBP-5F],55
  004C19E5  |.  C645 A2 34    MOV BYTE PTR SS:[EBP-5E],34
  004C19E9  |.  C645 A3 49    MOV BYTE PTR SS:[EBP-5D],49
  004C19ED  |.  C645 A4 33    MOV BYTE PTR SS:[EBP-5C],33
  004C19F1  |.  C645 A5 47    MOV BYTE PTR SS:[EBP-5B],47
  004C19F5  |.  C645 A6 32    MOV BYTE PTR SS:[EBP-5A],32
  004C19F9  |.  33DB          XOR EBX,EBX                               ;  清空 EBX
  004C19FB  |.  8D45 AC       LEA EAX,DWORD PTR SS:[EBP-54]
  004C19FE  |>  69D3 89000000 /IMUL EDX,EBX,89                          ;  EDX*( 0*89)
  004C1A04  |.  8910          |MOV DWORD PTR DS:[EAX],EDX
  004C1A06  |.  43            |INC EBX                                  ;  EBX ++
  004C1A07  |.  83C0 04       |ADD EAX,4                                ;  EAX + 4 (指向下内存下四位)
  004C1A0A  |.  83FB 10       |CMP EBX,10                               ;  if (EBX >= 16)
  004C1A0D  |.^ 75 EF         \JNZ SHORT PicAlbum.004C19FE
  004C1A0F  |.  33F6          XOR ESI,ESI
  004C1A11  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]              ;  特定字符串 PicAlbum 入 EAX
  004C1A14  |.  E8 1F32F4FF   CALL PicAlbum.00404C38                    ;  统计特定字符串字数
  004C1A19  |.  85C0          TEST EAX,EAX
  004C1A1B  |.  7E 13         JLE SHORT PicAlbum.004C1A30
  004C1A1D  |.  BB 01000000   MOV EBX,1
  004C1A22  |>  8B55 FC       /MOV EDX,DWORD PTR SS:[EBP-4]
  004C1A25  |.  0FB6541A FF   |MOVZX EDX,BYTE PTR DS:[EDX+EBX-1]
  004C1A2A  |.  03F2          |ADD ESI,EDX                              ;  si + = 特定【i】,结果= 30D
  004C1A2C  |.  43            |INC EBX                                  ;  EBX ++
  004C1A2D  |.  48            |DEC EAX
  004C1A2E  |.^ 75 F2         \JNZ SHORT PicAlbum.004C1A22
  004C1A30  |>  8BC7          MOV EAX,EDI
  004C1A32  |.  85C0          TEST EAX,EAX
  004C1A34  |.  7E 13         JLE SHORT PicAlbum.004C1A49
  004C1A36  |.  BB 01000000   MOV EBX,1
  004C1A3B  |>  8B55 F0       /MOV EDX,DWORD PTR SS:[EBP-10]            ;  lgjxjlgjxjlgjxjlgjxj
  004C1A3E  |.  0FB6541A FF   |MOVZX EDX,BYTE PTR DS:[EDX+EBX-1]        ;  字符入 EDX
  004C1A43  |.  03F2          |ADD ESI,EDX                              ;  SI + = name [i*4];
  004C1A45  |.  43            |INC EBX                                  ;  EBX ++
  004C1A46  |.  48            |DEC EAX                                  ;  ESI 累加结果 B89
  004C1A47  |.^ 75 F2         \JNZ SHORT PicAlbum.004C1A3B              ;  B89 跑出
  004C1A49  |>  8BC7          MOV EAX,EDI
  004C1A4B  |.  48            DEC EAX
  004C1A4C  |.  85C0          TEST EAX,EAX
  004C1A4E  |.  7C 40         JL SHORT PicAlbum.004C1A90
  004C1A50  |.  40            INC EAX
  004C1A51  |.  33DB          XOR EBX,EBX                               ;  EBX =0
  004C1A53  |>  8B55 F0       /MOV EDX,DWORD PTR SS:[EBP-10]            ;  lgjxjlgjxjlgjxjlgjxj
  004C1A56  |.  8A141A        |MOV DL,BYTE PTR DS:[EDX+EBX]             ;  字符入 DL
  004C1A59  |.  81E2 FF000000 |AND EDX,0FF
  004C1A5F  |.  8BCB          |MOV ECX,EBX                              ;  CX = BX
  004C1A61  |.  81E1 0F000080 |AND ECX,8000000F
  004C1A67  |.  79 05         |JNS SHORT PicAlbum.004C1A6E
  004C1A69  |.  49            |DEC ECX
  004C1A6A  |.  83C9 F0       |OR ECX,FFFFFFF0
  004C1A6D  |.  41            |INC ECX
  004C1A6E  |>  0FB64C0D 97   |MOVZX ECX,BYTE PTR SS:[EBP+ECX-69]       ;  ECX = 特定【i】
  004C1A73  |.  0FAFD1        |IMUL EDX,ECX                             ;  name[i] × 特定【i】 EDX *= ECX
  004C1A76  |.  0FAFD6        |IMUL EDX,ESI                             ;  EDX * = B89
  004C1A79  |.  8BCB          |MOV ECX,EBX
  004C1A7B  |.  81E1 0F000080 |AND ECX,8000000F
  004C1A81  |.  79 05         |JNS SHORT PicAlbum.004C1A88
  004C1A83  |.  49            |DEC ECX
  004C1A84  |.  83C9 F0       |OR ECX,FFFFFFF0
  004C1A87  |.  41            |INC ECX
  004C1A88  |>  01548D AC     |ADD DWORD PTR SS:[EBP+ECX*4-54],EDX      ;  累加到内存
  004C1A8C  |.  43            |INC EBX
  004C1A8D  |.  48            |DEC EAX
  004C1A8E  |.^ 75 C3         \JNZ SHORT PicAlbum.004C1A53
  004C1A90  |>  BB 10000000   MOV EBX,10
  004C1A95  |.  8D4D AC       LEA ECX,DWORD PTR SS:[EBP-54]
  004C1A98  |.  8D75 97       LEA ESI,DWORD PTR SS:[EBP-69]             ;  P9C8U7E6H5U4I3G2
  004C1A9B  |>  8B01          /MOV EAX,DWORD PTR DS:[ECX]               ;  这个数是上面的那个循环传来的
  004C1A9D  |.  BF FF010000   |MOV EDI,1FF                              ;  EDI=  511
  004C1AA2  |.  99            |CDQ
  004C1AA3  |.  F7FF          |IDIV EDI                                 ;  dx=ax% 511
  004C1AA5  |.  6BC2 35       |IMUL EAX,EDX,35                          ;  ax=dx*0x35
  004C1AA8  |.  6BC0 59       |IMUL EAX,EAX,59                          ;  ax=ax*0x59
  004C1AAB  |.  BF 25000000   |MOV EDI,25                               ;  0x25 是常熟
  004C1AB0  |.  99            |CDQ
  004C1AB1  |.  F7FF          |IDIV EDI                                 ;  dx=ax%0x25
  004C1AB3  |.  8BFA          |MOV EDI,EDX                              ;  di = dx
  004C1AB5  |.  8939          |MOV DWORD PTR DS:[ECX],EDI
  004C1AB7  |.  83FF 24       |CMP EDI,24                               ;  if ( di == 0x24 )
  004C1ABA  |.  75 06         |JNZ SHORT PicAlbum.004C1AC2
  004C1ABC  |.  C701 12000000 |MOV DWORD PTR DS:[ECX],12
  004C1AC2  |>  8B01          |MOV EAX,DWORD PTR DS:[ECX]
  004C1AC4  |.  83F8 0A       |CMP EAX,0A                               ;  if ax < 10
  004C1AC7  |.  7D 07         |JGE SHORT PicAlbum.004C1AD0
  004C1AC9  |.  83C0 30       |ADD EAX,30                               ;  ax += 30
  004C1ACC  |.  8806          |MOV BYTE PTR DS:[ESI],AL
  004C1ACE  |.  EB 08         |JMP SHORT PicAlbum.004C1AD8
  004C1AD0  |>  83C0 41       |ADD EAX,41                               ;  ax+=0x41
  004C1AD3  |.  83E8 0A       |SUB EAX,0A                               ;  ax=ax - 10
  004C1AD6  |.  8806          |MOV BYTE PTR DS:[ESI],AL                 ;  这里生成注册码
  004C1AD8  |>  46            |INC ESI
  004C1AD9  |.  83C1 04       |ADD ECX,4
  004C1ADC  |.  4B            |DEC EBX
  004C1ADD  |.^ 75 BC         \JNZ SHORT PicAlbum.004C1A9B
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  附上 C 语言注册机, 因为没学过编程,代码烂的你不相信 (高手别看) 
  
                     #include<stdio.h>
  #include<string.h>
  main()
  {
      char n[40];
      char temp[]="P9C8U7E6H5U4I3G2";
      char temp1[]="PicAlbum";
      long i,len,j,dx=0,bx=0,si=0,sum=0,cx,ax,k;
      int vv[16];
      gets(n);
      len=strlen(n);
       printf("这个软件正版序列号是:\t");
       if(len!=0)
       {
         if(len==4||len==5)
        {
            for(i=0;i<len;i++)
            {
                n[i+len]=n[i];
                n[i+len*2]=n[i];
                n[i+len*3]=n[i];
            }
            len*=4;
            goto vv;
        }
        if(len==3)
        {
            for(i=0;i<len;i++)
            {
                n[i+len]=n[i];
                n[i+len*2]=n[i];
                n[i+len*3]=n[i];
                n[i+len*4]=n[i];
                n[i+len*5]=n[i];
            }
            len*=6;
            goto vv;
        }
       }
       vv:    // 以上完成连接用户名

      for(i=0;i<16;i++)
      {
          dx=bx*0x89;
          vv[i]=dx;
          bx++;
      }                        // 这里完成数值传入内存
      for(i=0;i<8;i++)
      {
          si+=temp1[i];
      }                        // PicAlbum 固定字符累加

      for(i=0;i<len;i++)
      {
          si+=n[i];                // 这里有完成一步        si
      }
      for(i=0;i<len;i++)
      {
          bx=n[i];
          cx=temp[i];
          bx*=cx;
          bx*=si;
          vv[i]+=bx;
      }
                                      // 一下两个判断是用来覆盖前四为注册码的
        if(len==18)                  // 注册名为 3 个字符的进入
        {
        for(i=0;i<2;i++)
        {
            bx=n[i+1];
            cx=temp[i];
            bx*=cx;
            bx*=si;
            vv[i]+=bx;
        }
        }
      if(len>18)                // 注册名为 5 个字符的进入
      {
      for(i=0;i<4;i++)
      {
          bx=n[i+1];
          cx=temp[i];
          bx*=cx;
          bx*=si;
          vv[i]+=bx;
      }
      }
      for(i=0;i<16;i++)
      {
          ax=vv[i];
          dx=vv[i];
          dx%=511;
          ax/=511;
          ax=dx*0x35;
          ax=ax*0x59;
          dx=ax%0x25;
          ax=dx;
          dx+=0x41;
          dx-=0XA;
          temp[i]=dx;
           if(ax==0x24)
          {
            ax=0x12;
            ax+=0x41;
            ax-=0XA;
            temp[i]=ax;
          }
           if(ax<10)
          {
              ax+=0x30;
              temp[i]=ax;
          }
      }
      ax=0X2D;
      for(i=0;i<4;i++)
      printf("%c",temp[i]);
      printf("%c",ax);
      for(i=4;i<8;i++)
      printf("%c",temp[i]);
      printf("%c",ax);
      for(i=8;i<12;i++)
      printf("%c",temp[i]);
      printf("%c",ax);
      for(i=12;i<16;i++)
      printf("%c",temp[i]);
      printf("\n\n");
  }



  
  附上我的注册码: lgjxj
                   VE9P-KIIU-TIGQ-IK4V
  
  还有注册机没认真调试过,试了几个都成功就算数了
    
                   pediy
                   UOQ6-YNDX-08TB-J4PA
  
   
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年10月07日 21:49:12