破解者 : 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 的指点
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)