【文章标题】: 家家乐相册 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
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!