首页
论坛
专栏
课程

[原创]MakeIconV 1.2 算法简析

2005-10-6 01:51 6851

[原创]MakeIconV 1.2 算法简析

2005-10-6 01:51
6851
破解者 :  skyege                        (05.10.6)
破解工具: OD ,PEID 0.93
软件名称:  MakeIconV 1.2
软件大小:  779 KB
软件语言:  英文
软件类别:  国外软件 / 共享版 / 图标工具
应用平台:  Win9x/NT/2000/XP
开 发 商:  http://www.goepfi.de/

MakeIcon可以将JPG,MPG,GIF,EMF,WMF,DIB格式文件转换成图标。并且可以任意裁剪。

通过 DEDE ,很容易找到入口代码在此。,输入:

User:skyegesyl
Code:1234567890abcd

0045FCA4  /$  55           PUSH EBP                                ;在此下断
0045FCA5  |.  8BEC         MOV EBP,ESP
0045FCA7  |.  6A 00        PUSH 0
0045FCA9  |.  6A 00        PUSH 0
0045FCAB  |.  53           PUSH EBX
0045FCAC  |.  8BD8         MOV EBX,EAX
0045FCAE  |.  33C0         XOR EAX,EAX
0045FCB0  |.  55           PUSH EBP
0045FCB1  |.  68 5DFD4500  PUSH MakeIcon.0045FD5D
0045FCB6  |.  64:FF30      PUSH DWORD PTR FS:[EAX]
0045FCB9  |.  64:8920      MOV DWORD PTR FS:[EAX],ESP
0045FCBC  |.  8D55 FC      LEA EDX,DWORD PTR SS:[EBP-4]
0045FCBF  |.  8B83 F801000>MOV EAX,DWORD PTR DS:[EBX+1F8]
0045FCC5  |.  E8 02D9FBFF  CALL MakeIcon.0041D5CC
0045FCCA  |.  8B45 FC      MOV EAX,DWORD PTR SS:[EBP-4]      ;  假码
0045FCCD  |.  50           PUSH EAX
0045FCCE  |.  8D55 F8      LEA EDX,DWORD PTR SS:[EBP-8]
0045FCD1  |.  8B83 F001000>MOV EAX,DWORD PTR DS:[EBX+1F0]
0045FCD7  |.  E8 F0D8FBFF  CALL MakeIcon.0041D5CC
0045FCDC  |.  8B45 F8      MOV EAX,DWORD PTR SS:[EBP-8]      ;  名字
0045FCDF  |.  5A           POP EDX
0045FCE0  |.  E8 CFEFFCFF  CALL MakeIcon.0042ECB4            ;  重要 CALL
0045FCE5  |.  84C0         TEST AL,AL
0045FCE7  |.  74 4F        JE SHORT MakeIcon.0045FD38        ;  重要跳转
0045FCE9  |.  A1 30FD4600  MOV EAX,DWORD PTR DS:[46FD30]
0045FCEE  |.  C600 01      MOV BYTE PTR DS:[EAX],1
0045FCF1  |.  8D55 FC      LEA EDX,DWORD PTR SS:[EBP-4]
0045FCF4  |.  8B83 F001000>MOV EAX,DWORD PTR DS:[EBX+1F0]
0045FCFA  |.  E8 CDD8FBFF  CALL MakeIcon.0041D5CC
0045FCFF  |.  8B55 FC      MOV EDX,DWORD PTR SS:[EBP-4]
0045FD02  |.  A1 ACFC4600  MOV EAX,DWORD PTR DS:[46FCAC]
0045FD07  |.  E8 D43BFAFF  CALL MakeIcon.004038E0
0045FD0C  |.  8D55 FC      LEA EDX,DWORD PTR SS:[EBP-4]
0045FD0F  |.  8B83 F801000>MOV EAX,DWORD PTR DS:[EBX+1F8]
0045FD15  |.  E8 B2D8FBFF  CALL MakeIcon.0041D5CC
0045FD1A  |.  8B55 FC      MOV EDX,DWORD PTR SS:[EBP-4]
0045FD1D  |.  A1 34FB4600  MOV EAX,DWORD PTR DS:[46FB34]
0045FD22  |.  E8 B93BFAFF  CALL MakeIcon.004038E0
0045FD27  |.  E8 60C3FDFF  CALL MakeIcon.0043C08C
0045FD2C  |.  A1 28FD4600  MOV EAX,DWORD PTR DS:[46FD28]
0045FD31  |.  8B00         MOV EAX,DWORD PTR DS:[EAX]
0045FD33  |.  E8 C0CB0000  CALL MakeIcon.0046C8F8
0045FD38  |>  C783 5001000>MOV DWORD PTR DS:[EBX+150],1
0045FD42  |.  33C0         XOR EAX,EAX
0045FD44  |.  5A           POP EDX
0045FD45  |.  59           POP ECX
0045FD46  |.  59           POP ECX
0045FD47  |.  64:8910      MOV DWORD PTR FS:[EAX],EDX
0045FD4A  |.  68 64FD4500  PUSH MakeIcon.0045FD64
0045FD4F  |>  8D45 F8      LEA EAX,DWORD PTR SS:[EBP-8]
0045FD52  |.  BA 02000000  MOV EDX,2
0045FD57  |.  E8 543BFAFF  CALL MakeIcon.004038B0
0045FD5C  \.  C3           RETN

**********************  CALL MakeIcon.0042ECB4   ******************************

0042ECB4  /$  55            PUSH EBP
0042ECB5  |.  8BEC          MOV EBP,ESP
0042ECB7  |.  83C4 80       ADD ESP,-80
0042ECBA  |.  53            PUSH EBX
0042ECBB  |.  56            PUSH ESI
0042ECBC  |.  33C9          XOR ECX,ECX
0042ECBE  |.  894D F0       MOV DWORD PTR SS:[EBP-10],ECX
0042ECC1  |.  894D F4       MOV DWORD PTR SS:[EBP-C],ECX
0042ECC4  |.  8955 F8       MOV DWORD PTR SS:[EBP-8],EDX
0042ECC7  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
0042ECCA  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0042ECCD  |.  E8 EA4FFDFF   CALL MakeIcon.00403CBC
0042ECD2  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
0042ECD5  |.  E8 E24FFDFF   CALL MakeIcon.00403CBC
0042ECDA  |.  33C0          XOR EAX,EAX
0042ECDC  |.  55            PUSH EBP
0042ECDD  |.  68 2AF04200   PUSH MakeIcon.0042F02A
0042ECE2  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
0042ECE5  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
0042ECE8  |.  33DB          XOR EBX,EBX
0042ECEA  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]        ;  EAX = 名字
0042ECED  |.  E8 164EFDFF   CALL MakeIcon.00403B08
0042ECF2  |.  83F8 08       CMP EAX,8                           ;  名字必须在 8 个或 8 个以上
0042ECF5  |.  0F8C 14030000 JL MakeIcon.0042F00F
0042ECFB  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]        ;  EAX = 假码
0042ECFE  |.  E8 054EFDFF   CALL MakeIcon.00403B08
0042ED03  |.  83F8 08       CMP EAX,8                           ;  注册码必须在 8 个或 8 个以上
0042ED06  |.  0F8C 03030000 JL MakeIcon.0042F00F
0042ED0C  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
0042ED0F  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0042ED12  |.  E8 A57EFDFF   CALL MakeIcon.00406BBC              ;  把名字转化为大写
0042ED17  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
0042ED1A  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
0042ED1D  |.  E8 024CFDFF   CALL MakeIcon.00403924
0042ED22  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0042ED25  |.  E8 1AFFFFFF   CALL MakeIcon.0042EC44              ;  把名字的 ASCII 值累加
0042ED2A  |.  8BF0          MOV ESI,EAX                         ;  值放到 ESI ,将用到。 EAI = 2C0
0042ED2C  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]        ;  假码入栈
0042ED2F  |.  B9 01000000   MOV ECX,1
0042ED34  |.  BA 0A000000   MOV EDX,0A
0042ED39  |.  E8 0E50FDFF   CALL MakeIcon.00403D4C              ;  去掉第 10 个
0042ED3E  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]        ;  得到  123456789abcd
0042ED41  |.  B9 01000000   MOV ECX,1
0042ED46  |.  BA 05000000   MOV EDX,5
0042ED4B  |.  E8 FC4FFDFF   CALL MakeIcon.00403D4C              ;  去掉第 5 个
0042ED50  |.  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
0042ED53  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]        ;  得到  12346789abcd
0042ED56  |.  8A52 08       MOV DL,BYTE PTR DS:[EDX+8]          ;  取第 9 个 ,就是 “a”
0042ED59  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042ED5C  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042ED5F  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
0042ED62  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
0042ED65  |.  E8 A23BFDFF   CALL MakeIcon.0040290C
0042ED6A  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042ED6D  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042ED70  |.  8A52 03       MOV DL,BYTE PTR DS:[EDX+3]          ;  取第 4 个 ,就是 “4”
0042ED73  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042ED76  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042ED79  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042ED7C  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
0042ED7F  |.  B1 02         MOV CL,2
0042ED81  |.  E8 563BFDFF   CALL MakeIcon.004028DC              ;  连接起来 ,得到 a4
0042ED86  |.  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]
0042ED89  |.  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
0042ED8C  |.  E8 7B3BFDFF   CALL MakeIcon.0040290C
0042ED91  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042ED94  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042ED97  |.  8A52 07       MOV DL,BYTE PTR DS:[EDX+7]          ;  取第 8 个 ,就是 “9”
0042ED9A  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042ED9D  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EDA0  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EDA3  |.  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
0042EDA6  |.  B1 03         MOV CL,3
0042EDA8  |.  E8 2F3BFDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a49
0042EDAD  |.  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
0042EDB0  |.  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
0042EDB3  |.  E8 543BFDFF   CALL MakeIcon.0040290C
0042EDB8  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042EDBB  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042EDBE  |.  8A52 01       MOV DL,BYTE PTR DS:[EDX+1]          ;  取第 2 个,就是 “2”
0042EDC1  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042EDC4  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EDC7  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EDCA  |.  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
0042EDCD  |.  B1 04         MOV CL,4
0042EDCF  |.  E8 083BFDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a492
0042EDD4  |.  8D55 D8       LEA EDX,DWORD PTR SS:[EBP-28]
0042EDD7  |.  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]
0042EDDA  |.  E8 2D3BFDFF   CALL MakeIcon.0040290C
0042EDDF  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042EDE2  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042EDE5  |.  8A52 06       MOV DL,BYTE PTR DS:[EDX+6]          ;  取第 7 个,就是 “8”
0042EDE8  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042EDEB  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EDEE  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EDF1  |.  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]
0042EDF4  |.  B1 05         MOV CL,5
0042EDF6  |.  E8 E13AFDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a4928
0042EDFB  |.  8D55 D0       LEA EDX,DWORD PTR SS:[EBP-30]
0042EDFE  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]
0042EE01  |.  E8 063BFDFF   CALL MakeIcon.0040290C
0042EE06  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042EE09  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042EE0C  |.  8A12          MOV DL,BYTE PTR DS:[EDX]            ;  取第 1 个,就是 “1”
0042EE0E  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042EE11  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EE14  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EE17  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]
0042EE1A  |.  B1 06         MOV CL,6
0042EE1C  |.  E8 BB3AFDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a49281
0042EE21  |.  8D55 C8       LEA EDX,DWORD PTR SS:[EBP-38]
0042EE24  |.  8D45 C0       LEA EAX,DWORD PTR SS:[EBP-40]
0042EE27  |.  E8 E03AFDFF   CALL MakeIcon.0040290C
0042EE2C  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042EE2F  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042EE32  |.  8A52 09       MOV DL,BYTE PTR DS:[EDX+9]          ;  取第 10 个,就是 “b”
0042EE35  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042EE38  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EE3B  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EE3E  |.  8D45 C0       LEA EAX,DWORD PTR SS:[EBP-40]
0042EE41  |.  B1 07         MOV CL,7
0042EE43  |.  E8 943AFDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a49281b
0042EE48  |.  8D55 C0       LEA EDX,DWORD PTR SS:[EBP-40]
0042EE4B  |.  8D45 B4       LEA EAX,DWORD PTR SS:[EBP-4C]
0042EE4E  |.  E8 B93AFDFF   CALL MakeIcon.0040290C
0042EE53  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042EE56  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042EE59  |.  8A52 0B       MOV DL,BYTE PTR DS:[EDX+B]          ;  取第 12 个,就是 “d”
0042EE5C  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042EE5F  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EE62  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EE65  |.  8D45 B4       LEA EAX,DWORD PTR SS:[EBP-4C]
0042EE68  |.  B1 08         MOV CL,8
0042EE6A  |.  E8 6D3AFDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a49281bd
0042EE6F  |.  8D55 B4       LEA EDX,DWORD PTR SS:[EBP-4C]
0042EE72  |.  8D45 A8       LEA EAX,DWORD PTR SS:[EBP-58]
0042EE75  |.  E8 923AFDFF   CALL MakeIcon.0040290C
0042EE7A  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042EE7D  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042EE80  |.  8A52 02       MOV DL,BYTE PTR DS:[EDX+2]          ;  取第 3 个,就是 “3”
0042EE83  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042EE86  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EE89  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EE8C  |.  8D45 A8       LEA EAX,DWORD PTR SS:[EBP-58]
0042EE8F  |.  B1 09         MOV CL,9
0042EE91  |.  E8 463AFDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a49281bd3
0042EE96  |.  8D55 A8       LEA EDX,DWORD PTR SS:[EBP-58]
0042EE99  |.  8D45 9C       LEA EAX,DWORD PTR SS:[EBP-64]
0042EE9C  |.  E8 6B3AFDFF   CALL MakeIcon.0040290C
0042EEA1  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042EEA4  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042EEA7  |.  8A52 04       MOV DL,BYTE PTR DS:[EDX+4]          ;  取第 5 个,就是 “6”
0042EEAA  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042EEAD  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EEB0  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EEB3  |.  8D45 9C       LEA EAX,DWORD PTR SS:[EBP-64]
0042EEB6  |.  B1 0A         MOV CL,0A
0042EEB8  |.  E8 1F3AFDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a49281bd36
0042EEBD  |.  8D55 9C       LEA EDX,DWORD PTR SS:[EBP-64]
0042EEC0  |.  8D45 90       LEA EAX,DWORD PTR SS:[EBP-70]
0042EEC3  |.  E8 443AFDFF   CALL MakeIcon.0040290C
0042EEC8  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042EECB  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042EECE  |.  8A52 0A       MOV DL,BYTE PTR DS:[EDX+A]          ;  取第 11 个,就是 “c”
0042EED1  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042EED4  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EED7  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EEDA  |.  8D45 90       LEA EAX,DWORD PTR SS:[EBP-70]
0042EEDD  |.  B1 0B         MOV CL,0B
0042EEDF  |.  E8 F839FDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a49281bd36c
0042EEE4  |.  8D55 90       LEA EDX,DWORD PTR SS:[EBP-70]
0042EEE7  |.  8D45 80       LEA EAX,DWORD PTR SS:[EBP-80]
0042EEEA  |.  E8 1D3AFDFF   CALL MakeIcon.0040290C
0042EEEF  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042EEF2  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0042EEF5  |.  8A52 05       MOV DL,BYTE PTR DS:[EDX+5]          ;  取第 6 个,就是 “7”
0042EEF8  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
0042EEFB  |.  C600 01       MOV BYTE PTR DS:[EAX],1
0042EEFE  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
0042EF01  |.  8D45 80       LEA EAX,DWORD PTR SS:[EBP-80]
0042EF04  |.  B1 0C         MOV CL,0C
0042EF06  |.  E8 D139FDFF   CALL MakeIcon.004028DC              ;  连接起来,得到   a49281bd36c7
0042EF0B  |.  8D55 80       LEA EDX,DWORD PTR SS:[EBP-80]
0042EF0E  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
0042EF11  |.  E8 964BFDFF   CALL MakeIcon.00403AAC
0042EF16  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
0042EF19  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
0042EF1C  |.  E8 9B7CFDFF   CALL MakeIcon.00406BBC              ;  把 a49281bd36c7 中的字母转化为大写 ,得到 A49281BD36C7
0042EF21  |.  8BC6          MOV EAX,ESI                         ;  ESI = 2C0  ,就是名字的 ASCII 累加值
0042EF23  |.  E8 F0FCFFFF   CALL MakeIcon.0042EC18              ;  这个要追进去,下面将频繁调用
0042EF28  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EF2B  |.  3A02          CMP AL,BYTE PTR DS:[EDX]            ;  比较 A49281BD36C7 的第 1 个
0042EF2D  |.  0F85 DC000000 JNZ MakeIcon.0042F00F                ;  跳就 over 了 ,下面都如此
0042EF33  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]        ;  EAX = A49281BD36C7
0042EF36  |.  8A00          MOV AL,BYTE PTR DS:[EAX]            ;  取第 1 个
0042EF38  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EF3B  |.  F66A 01       IMUL BYTE PTR DS:[EDX+1]            ;  与第 2 个相乘
0042EF3E  |.  E8 D5FCFFFF   CALL MakeIcon.0042EC18
0042EF43  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EF46  |.  3A42 02       CMP AL,BYTE PTR DS:[EDX+2]          ;  比较  A49281BD36C7 的第 3 个
0042EF49  |.  0F85 C0000000 JNZ MakeIcon.0042F00F
0042EF4F  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]        ;  EAX = 名字
0042EF52  |.  8A00          MOV AL,BYTE PTR DS:[EAX]            ;  取名字的第 1 个
0042EF54  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
0042EF57  |.  0242 02       ADD AL,BYTE PTR DS:[EDX+2]          ;  和第 3 个相加
0042EF5A  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
0042EF5D  |.  0242 05       ADD AL,BYTE PTR DS:[EDX+5]          ;  再和第 6 个相加
0042EF60  |.  E8 B3FCFFFF   CALL MakeIcon.0042EC18
0042EF65  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EF68  |.  3A42 03       CMP AL,BYTE PTR DS:[EDX+3]          ;  比较  A49281BD36C7  的第 4 个
0042EF6B  |.  0F85 9E000000 JNZ MakeIcon.0042F00F
0042EF71  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]        ;  EAX = A49281BD36C7
0042EF74  |.  8A40 03       MOV AL,BYTE PTR DS:[EAX+3]          ;  第 4 个
0042EF77  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EF7A  |.  0242 01       ADD AL,BYTE PTR DS:[EDX+1]          ;  和第 2 个相加
0042EF7D  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EF80  |.  0242 04       ADD AL,BYTE PTR DS:[EDX+4]          ;  再和第 5 个相加
0042EF83  |.  E8 90FCFFFF   CALL MakeIcon.0042EC18
0042EF88  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EF8B  |.  3A42 05       CMP AL,BYTE PTR DS:[EDX+5]          ;  比较  A49281BD36C7  的第 6 个
0042EF8E  |.  75 7F         JNZ SHORT MakeIcon.0042F00F
0042EF90  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]        ;  EAX = 名字
0042EF93  |.  8A40 01       MOV AL,BYTE PTR DS:[EAX+1]          ;  第 2 个
0042EF96  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
0042EF99  |.  0242 03       ADD AL,BYTE PTR DS:[EDX+3]          ;  和第 4 个相加
0042EF9C  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
0042EF9F  |.  0242 04       ADD AL,BYTE PTR DS:[EDX+4]          ;  再和第 5 个相加
0042EFA2  |.  E8 71FCFFFF   CALL MakeIcon.0042EC18
0042EFA7  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EFAA  |.  3A42 08       CMP AL,BYTE PTR DS:[EDX+8]          ;  比较  A49281BD36C7  的第 9 个
0042EFAD  |.  75 60         JNZ SHORT MakeIcon.0042F00F
0042EFAF  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]        ;  EAX = A49281BD36C7
0042EFB2  |.  8A40 06       MOV AL,BYTE PTR DS:[EAX+6]          ;  第 7 个
0042EFB5  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EFB8  |.  F66A 02       IMUL BYTE PTR DS:[EDX+2]            ;  和第 3 个相乘
0042EFBB  |.  E8 58FCFFFF   CALL MakeIcon.0042EC18
0042EFC0  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EFC3  |.  3A42 09       CMP AL,BYTE PTR DS:[EDX+9]          ;  比较  A49281BD36C7  的第 10 个
0042EFC6  |.  75 47         JNZ SHORT MakeIcon.0042F00F
0042EFC8  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
0042EFCB  |.  50            PUSH EAX
0042EFCC  |.  B9 0A000000   MOV ECX,0A
0042EFD1  |.  BA 01000000   MOV EDX,1
0042EFD6  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
0042EFD9  |.  E8 2E4DFDFF   CALL MakeIcon.00403D0C
0042EFDE  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]       ;  EAX = A49281BD36C7
0042EFE1  |.  E8 5EFCFFFF   CALL MakeIcon.0042EC44              ;  把 A49281BD36C7  的 ASCII 值了累加
0042EFE6  |.  E8 2DFCFFFF   CALL MakeIcon.0042EC18
0042EFEB  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EFEE  |.  3A42 0A       CMP AL,BYTE PTR DS:[EDX+A]          ;  比较  A49281BD36C7  的第 11 个
0042EFF1  |.  75 1C         JNZ SHORT MakeIcon.0042F00F
0042EFF3  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]        ;  EAX = A49281BD36C7
0042EFF6  |.  8A00          MOV AL,BYTE PTR DS:[EAX]            ;  第 1 个
0042EFF8  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042EFFB  |.  0242 06       ADD AL,BYTE PTR DS:[EDX+6]          ;  和第 7 个相加
0042EFFE  |.  34 11         XOR AL,11                           ;  异或 11
0042F000  |.  E8 13FCFFFF   CALL MakeIcon.0042EC18
0042F005  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0042F008  |.  3A42 0B       CMP AL,BYTE PTR DS:[EDX+B]          ;  比较  A49281BD36C7  的第 12 个
0042F00B  |.  75 02         JNZ SHORT MakeIcon.0042F00F
0042F00D  |.  B3 01         MOV BL,1                            ;  FLAG = 0 ,注册成功
0042F00F  |>  33C0          XOR EAX,EAX
0042F011  |.  5A            POP EDX
0042F012  |.  59            POP ECX
0042F013  |.  59            POP ECX
0042F014  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
0042F017  |.  68 31F04200   PUSH MakeIcon.0042F031
0042F01C  |>  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
0042F01F  |.  BA 04000000   MOV EDX,4
0042F024  |.  E8 8748FDFF   CALL MakeIcon.004038B0
0042F029  \.  C3            RETN

**********************  函数 CALL MakeIcon.0042EC18  ***************************

0042EC18  /$  8BC8         MOV ECX,EAX
0042EC1A  |.  33C0         XOR EAX,EAX
0042EC1C  |.  8AC1         MOV AL,CL                             ;  取低 8 位
0042EC1E  |.  B9 23000000  MOV ECX,23                        ;  除于 23 ,10进制是 35 ,取 余数
0042EC23  |.  99           CDQ
0042EC24  |.  F7F9         IDIV ECX
0042EC26  |.  8BCA         MOV ECX,EDX
0042EC28  |.  8BC1         MOV EAX,ECX
0042EC2A  |.  2C 0A        SUB AL,0A                         ;  余数再减去 A
0042EC2C  |.  72 06        JB SHORT MakeIcon.0042EC34
0042EC2E  |.  2C 1A        SUB AL,1A                         ;  如果大于 0 就再减去 1A (26),看看是否还大于 0
0042EC30  |.  72 07        JB SHORT MakeIcon.0042EC39
0042EC32  |.  EB 0C        JMP SHORT MakeIcon.0042EC40
0042EC34  |>  8BC1         MOV EAX,ECX                             ;余数
0042EC36  |.  04 30        ADD AL,30                         ;  如果减去 A 〈 0 ,就加上 30 (48)
0042EC38  |.  C3           RETN
0042EC39  |>  8BC1         MOV EAX,ECX
0042EC3B  |.  04 41        ADD AL,41                         ;  加上 41
0042EC3D  |.  2C 0A        SUB AL,0A                         ;  再减去 A .真垃圾 ,直接 + 37 ,不就得了。
0042EC3F  |.  C3           RETN
0042EC40  |>  B0 2D        MOV AL,2D                         ;  还是大于 0 ,就直接赋值 2D (45)
0042EC42  \.  C3           RETN

这里的判断是这样的:余数 - A ,如果小于 0 就 余数 + 30 输出 ;否则,再减去 1A ,如果小于 0 就 余数 + 37  输出 ;否则,直接输出 2D
       
*********************************************************************************

User:skyegesyl
Code:NV585H58H0H858

算法逆向:尽管程序要求注册码在 8 位以上,但在取字符的时候,却取到了 14 位。没有的一律补零进行计算。为了省事,我就以 14 个来计算了。呵呵。其实你可以看出它判断的时候也只是判断几个而已,其他的都是随便的。 也就是说你在后面加上什么都可以注册。哈哈。这里从它所取出来的字符串 A49281BD36C7 来看,可以这样逆向:

用名字算出第 1 个 ,
用名字算出第 4 个 ,
用名字算出第 9 个 ,
用 1,2 算 3
用 1,7 算 12
用 2,5 ,4 算 6
用 3,7 算 10
用前 10 的累加值算 11

第 2 ,5 , 7 ,8 位随便 ,加上两个去掉的也是随便啦 ,我在注册机里头都用 8 了,所以都是 56 。哈哈。发……发……发
当然要注意的是字符串中的位置和注册码码的位置对应关系要清楚,很容易搞乱的。
               
注册机:放 2 个 TextBox ,一个输入用户名,一个输出注册码,放一个Command

Private Sub Command1_Click()
user = UCase(Trim(Text1.Text))                          '把用户名转化为大写

If Len(user) < 8 Then
        MsgBox "用户名必须在 8 个或 8 个以上"
Else
        
        For i = 1 To Len(user)
                temp = Asc(Mid(user, i, 1))
                sn = sn + temp                                '累加 ASCII 值
        Next
        
        Call SNcount(sn)                                                                ' 字符串中的位置是第 1
        sn11 = sn                                                                        ’注册码中的位置是第 11
        
        sn = Asc(Mid(user, 1, 1)) + Asc(Mid(user, 3, 1)) + Asc(Mid(user, 6, 1))                '4
        Call SNcount(sn)
        sn2 = sn
        
        sn = Asc(Mid(user, 2, 1)) + Asc(Mid(user, 4, 1)) + Asc(Mid(user, 5, 1))                '9
        Call SNcount(sn)
        sn3 = sn
        
        sn = Asc(sn11) * 56                                                                '3
        Call SNcount(sn)
        sn9 = sn
        
        sn = Asc(sn11) + 56                                                                '12
        sn = sn Xor 17
        Call SNcount(sn)
        sn7 = sn
        
        sn = Asc(sn2) + 112                                                                '6
        Call SNcount(sn)
        sn1 = sn
        
        sn = Asc(sn9) * 56                                                                '10
        Call SNcount(sn)
        sn6 = sn
        
        sn = Asc(sn1) + Asc(sn2) + Asc(sn3) + Asc(sn6) + Asc(sn9) + Asc(sn11) + 224        '11
        Call SNcount(sn)
        sn13 = sn
        
        Text2.Text = sn1 & sn2 & sn3 & 8 & 8 & sn6 & sn7 & 8 & sn9 & 8 & sn11 & 8 & sn13 & 8        ’看到用 8 计算的就是随便的啦
        
End If
End Sub

Function SNcount(sn)                     'SNcount 就是计算注册码
sn = sn And 255                                 ’取低 8 位
sn = sn Mod 35                                 ’取余数
sn = sn - 10
If sn > 0 Then
        If sn - 26 > 0 Then
                sn = 45
        Else
                sn = sn + 65                ’避免麻烦,把减去的 10 加在这里了
        End If
Else
        sn = sn + 58                        ’这里也是

End If
sn = Chr(sn)
End Function

*********************************************************************************
        感谢 FreeCat 和 Pr0Zel 的指点

[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (9)
lnn1123 13 2005-10-6 05:29
2
0
qq2003 2005-10-6 11:01
3
0
这个版本太老,能不能提供下原安装文件 偶学习下
hrbx 8 2005-10-6 12:43
4
0
支持,学习中
冷血书生 28 2005-10-6 15:39
5
0
强烈支持!
Pr0Zel 7 2005-10-6 15:54
6
0
支持 + 学习
skyege 2 2005-10-8 11:24
7
0
最初由 qq2003 发布
这个版本太老,能不能提供下原安装文件 偶学习下


就是因为老了才放出来啊
pendan2001 4 2005-10-8 11:47
8
0
Good!
fwycfpg 1 2005-10-8 16:39
9
0
哇~`那么多啊~~
zhaoocn 7 2005-10-8 22:48
10
0
能看懂点,高兴
游客
登录 | 注册 方可回帖
返回