- UID
- 36316
注册时间2007-11-2
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
楼主 |
发表于 2008-1-6 19:40:14
|
显示全部楼层
【破解过程】Peid查壳UPX 0.89.6 - 1.02 / 1.05 - 1.24 的壳,它写着是重启验证,其实在重启前已经验证好了
OD载入脱壳的程序,下万能断点,Alt+F9,回到程序领空,一路F8来到这里
004CE00C 68 99E34C00 PUSH unediamo.004CE399
004CE011 64:FF30 PUSH DWORD PTR FS:[EAX]
004CE014 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CE017 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
004CE01A 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE01D 8B80 0C030000 MOV EAX,DWORD PTR DS:[EAX+30C]
004CE023 E8 BCE0F9FF CALL unediamo.0046C0E4
004CE028 837D EC 00 CMP DWORD PTR SS:[EBP-14],0 ;用户名是否为空
004CE02C 74 17 JE SHORT unediamo.004CE045
004CE02E 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
004CE031 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE034 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004CE03A E8 A5E0F9FF CALL unediamo.0046C0E4
004CE03F 837D E8 00 CMP DWORD PTR SS:[EBP-18],0 ;注册码是否为空
004CE043 75 1F JNZ SHORT unediamo.004CE064
004CE045 6A 00 PUSH 0
004CE047 68 A8E34C00 PUSH unediamo.004CE3A8
004CE04C 68 B0E34C00 PUSH unediamo.004CE3B0
004CE051 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE054 E8 9F49FAFF CALL unediamo.004729F8
004CE059 50 PUSH EAX
004CE05A E8 8999F3FF CALL <JMP.&USER32.MessageBoxA>
004CE05F E9 BC020000 JMP unediamo.004CE320
004CE064 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
004CE067 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE06A 8B98 F8020000 MOV EBX,DWORD PTR DS:[EAX+2F8]
004CE070 8BC3 MOV EAX,EBX
004CE072 E8 6DE0F9FF CALL unediamo.0046C0E4
004CE077 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
004CE07A 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]
004CE07D E8 D6B0F3FF CALL unediamo.00409158
004CE082 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C]
004CE085 8BC3 MOV EAX,EBX
004CE087 E8 88E0F9FF CALL unediamo.0046C114
004CE08C 33C0 XOR EAX,EAX
004CE08E 55 PUSH EBP
004CE08F 68 78E14C00 PUSH unediamo.004CE178
004CE094 64:FF30 PUSH DWORD PTR FS:[EAX]
004CE097 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CE09A 8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]
004CE09D 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE0A0 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004CE0A6 E8 39E0F9FF CALL unediamo.0046C0E4
004CE0AB 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
004CE0AE E8 C96DF3FF CALL unediamo.00404E7C
004CE0B3 83F8 11 CMP EAX,11
004CE0B6 0F8E B2000000 JLE unediamo.004CE16E ;注册码长度与0x11比较
004CE0BC 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004CE0BF 50 PUSH EAX
004CE0C0 8D55 D8 LEA EDX,DWORD PTR SS:[EBP-28]
004CE0C3 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE0C6 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004CE0CC E8 13E0F9FF CALL unediamo.0046C0E4
004CE0D1 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28]
004CE0D4 B9 10000000 MOV ECX,10
004CE0D9 BA 01000000 MOV EDX,1
004CE0DE E8 F96FF3FF CALL unediamo.004050DC
004CE0E3 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004CE0E6 50 PUSH EAX
004CE0E7 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
004CE0EA 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE0ED 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004CE0F3 E8 ECDFF9FF CALL unediamo.0046C0E4
004CE0F8 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C]
004CE0FB E8 7C6DF3FF CALL unediamo.00404E7C
004CE100 83E8 10 SUB EAX,10
004CE103 50 PUSH EAX
004CE104 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]
004CE107 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE10A 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004CE110 E8 CFDFF9FF CALL unediamo.0046C0E4
004CE115 8B45 D0 MOV EAX,DWORD PTR SS:[EBP-30]
004CE118 BA 11000000 MOV EDX,11
004CE11D 59 POP ECX
004CE11E E8 B96FF3FF CALL unediamo.004050DC
004CE123 8D55 CC LEA EDX,DWORD PTR SS:[EBP-34]
004CE126 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ;注册码前16位进EAX
004CE129 E8 CEFDFFFF CALL unediamo.004CDEFC ;第一部分计算,F7跟入
{
004CDEFC 55 PUSH EBP
004CDEFD 8BEC MOV EBP,ESP
004CDEFF 83C4 F0 ADD ESP,-10
004CDF02 53 PUSH EBX
004CDF03 56 PUSH ESI
004CDF04 57 PUSH EDI
004CDF05 33C9 XOR ECX,ECX
004CDF07 894D F0 MOV DWORD PTR SS:[EBP-10],ECX
004CDF0A 894D F4 MOV DWORD PTR SS:[EBP-C],ECX
004CDF0D 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
004CDF10 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004CDF13 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CDF16 E8 5171F3FF CALL unediamo.0040506C
004CDF1B 33C0 XOR EAX,EAX
004CDF1D 55 PUSH EBP
004CDF1E 68 CADF4C00 PUSH unediamo.004CDFCA
004CDF23 64:FF30 PUSH DWORD PTR FS:[EAX]
004CDF26 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CDF29 33C0 XOR EAX,EAX
004CDF2B 55 PUSH EBP
004CDF2C 68 90DF4C00 PUSH unediamo.004CDF90
004CDF31 64:FF30 PUSH DWORD PTR FS:[EAX]
004CDF34 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CDF37 BF 0F000000 MOV EDI,0F ;EDI赋初值0xF
004CDF3C 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CDF3F E8 386FF3FF CALL unediamo.00404E7C
004CDF44 8BD8 MOV EBX,EAX
004CDF46 85DB TEST EBX,EBX
004CDF48 7E 22 JLE SHORT unediamo.004CDF6C
004CDF4A BE 01000000 MOV ESI,1
004CDF4F 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004CDF52 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004CDF55 8A5432 FF MOV DL,BYTE PTR DS:[EDX+ESI-1] ;注册码每一位进入DL
004CDF59 E8 466EF3FF CALL unediamo.00404DA4
004CDF5E 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004CDF61 E8 FEB6F3FF CALL unediamo.00409664
;ASCII码减去0x30,即得每一位的数字进EAX
004CDF66 03F8 ADD EDI,EAX ;加到EDI中
004CDF68 46 INC ESI
004CDF69 4B DEC EBX
004CDF6A ^ 75 E3 JNZ SHORT unediamo.004CDF4F ;注册码各位上数字的和加上15
004CDF6C 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
004CDF6F 8BC7 MOV EAX,EDI
004CDF71 E8 B2B5F3FF CALL unediamo.00409528
004CDF76 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ;和进入EAX
004CDF79 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CDF7C BA E0DF4C00 MOV EDX,unediamo.004CDFE0 ; ASCII "123"
004CDF81 E8 26FEFFFF CALL unediamo.004CDDAC ;算法,F7跟入
{
004CDDAF 83C4 DC ADD ESP,-24
004CDDB2 53 PUSH EBX
004CDDB3 56 PUSH ESI
004CDDB4 57 PUSH EDI
004CDDB5 33DB XOR EBX,EBX
004CDDB7 895D DC MOV DWORD PTR SS:[EBP-24],EBX
004CDDBA 895D EC MOV DWORD PTR SS:[EBP-14],EBX
004CDDBD 894D F4 MOV DWORD PTR SS:[EBP-C],ECX
004CDDC0 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
004CDDC3 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004CDDC6 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CDDC9 E8 9E72F3FF CALL unediamo.0040506C
004CDDCE 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CDDD1 E8 9672F3FF CALL unediamo.0040506C
004CDDD6 33C0 XOR EAX,EAX
004CDDD8 55 PUSH EBP
004CDDD9 68 C7DE4C00 PUSH unediamo.004CDEC7
004CDDDE 64:FF30 PUSH DWORD PTR FS:[EAX]
004CDDE1 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CDDE4 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CDDE7 E8 9070F3FF CALL unediamo.00404E7C
004CDDEC 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
004CDDEF 837D F0 00 CMP DWORD PTR SS:[EBP-10],0
004CDDF3 75 0D JNZ SHORT unediamo.004CDE02
004CDDF5 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
004CDDF8 BA E0DE4C00 MOV EDX,unediamo.004CDEE0 ; ASCII "TinTin2000"
004CDDFD E8 526EF3FF CALL unediamo.00404C54
004CDE02 33F6 XOR ESI,ESI
004CDE04 BB 58000000 MOV EBX,58 ;EBX赋初值0x58
004CDE09 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
004CDE0C 50 PUSH EAX
004CDE0D 895D E0 MOV DWORD PTR SS:[EBP-20],EBX
004CDE10 C645 E4 00 MOV BYTE PTR SS:[EBP-1C],0
004CDE14 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
004CDE17 33C9 XOR ECX,ECX
004CDE19 B8 F4DE4C00 MOV EAX,unediamo.004CDEF4 ; ASCII "%1.2x"
004CDE1E E8 9DC9F3FF CALL unediamo.0040A7C0
004CDE23 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CDE26 E8 5170F3FF CALL unediamo.00404E7C
004CDE2B 8BF8 MOV EDI,EAX
004CDE2D 85FF TEST EDI,EDI
004CDE2F 7E 60 JLE SHORT unediamo.004CDE91
004CDE31 C745 E8 0100000>MOV DWORD PTR SS:[EBP-18],1
004CDE38 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CDE3B 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
004CDE3E 0FB64410 FF MOVZX EAX,BYTE PTR DS:[EAX+EDX-1] ;和的每一位进入EAX
004CDE43 03C3 ADD EAX,EBX ;EAX=EAX+EBX
004CDE45 B9 FF000000 MOV ECX,0FF
004CDE4A 99 CDQ
004CDE4B F7F9 IDIV ECX ;EDX=EAX Mod 0xFF
004CDE4D 8BDA MOV EBX,EDX ;EBX=EDX
004CDE4F 3B75 F0 CMP ESI,DWORD PTR SS:[EBP-10]
004CDE52 7D 03 JGE SHORT unediamo.004CDE57
004CDE54 46 INC ESI
004CDE55 EB 05 JMP SHORT unediamo.004CDE5C
004CDE57 BE 01000000 MOV ESI,1
004CDE5C 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CDE5F 0FB64430 FF MOVZX EAX,BYTE PTR DS:[EAX+ESI-1] ;"123"的每一位进入EAX
004CDE64 33D8 XOR EBX,EAX ;EBX=EBX Xor EAX
004CDE66 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
004CDE69 50 PUSH EAX
004CDE6A 895D E0 MOV DWORD PTR SS:[EBP-20],EBX
004CDE6D C645 E4 00 MOV BYTE PTR SS:[EBP-1C],0
004CDE71 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
004CDE74 33C9 XOR ECX,ECX
004CDE76 B8 F4DE4C00 MOV EAX,unediamo.004CDEF4 ; ASCII "%1.2x"
004CDE7B E8 40C9F3FF CALL unediamo.0040A7C0 ;把EBX的值变成字符
004CDE80 8B55 DC MOV EDX,DWORD PTR SS:[EBP-24]
004CDE83 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
004CDE86 E8 F96FF3FF CALL unediamo.00404E84 ;结果存放在[EBP-14]
004CDE8B FF45 E8 INC DWORD PTR SS:[EBP-18]
004CDE8E 4F DEC EDI
004CDE8F ^ 75 A7 JNZ SHORT unediamo.004CDE38 ;循环,直到和取完
004CDE91 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004CDE94 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14] ;从[EBP-14]中取出结果放入EDX
004CDE97 E8 746DF3FF CALL unediamo.00404C10
004CDE9C 33C0 XOR EAX,EAX
004CDE9E 5A POP EDX
004CDE9F 59 POP ECX
004CDEA0 59 POP ECX
004CDEA1 64:8910 MOV DWORD PTR FS:[EAX],EDX
004CDEA4 68 CEDE4C00 PUSH unediamo.004CDECE
004CDEA9 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
004CDEAC E8 0B6DF3FF CALL unediamo.00404BBC
004CDEB1 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
004CDEB4 E8 036DF3FF CALL unediamo.00404BBC
004CDEB9 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
004CDEBC BA 02000000 MOV EDX,2
004CDEC1 E8 1A6DF3FF CALL unediamo.00404BE0
004CDEC6 C3 RETN
004CDEC7 ^ E9 7066F3FF JMP unediamo.0040453C
004CDECC ^ EB DB JMP SHORT unediamo.004CDEA9
004CDECE 5F POP EDI
004CDECF 5E POP ESI
004CDED0 5B POP EBX
004CDED1 8BE5 MOV ESP,EBP
004CDED3 5D POP EBP
}
004CDF86 33C0 XOR EAX,EAX
004CDF88 5A POP EDX
004CDF89 59 POP ECX
004CDF8A 59 POP ECX
004CDF8B 64:8910 MOV DWORD PTR FS:[EAX],EDX
004CDF8E EB 17 JMP SHORT unediamo.004CDFA7
004CDF90 ^ E9 F362F3FF JMP unediamo.00404288
004CDF95 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CDF98 BA ECDF4C00 MOV EDX,unediamo.004CDFEC ; ASCII "32326"
004CDF9D E8 6E6CF3FF CALL unediamo.00404C10
004CDFA2 E8 4966F3FF CALL unediamo.004045F0
004CDFA7 33C0 XOR EAX,EAX
004CDFA9 5A POP EDX
004CDFAA 59 POP ECX
004CDFAB 59 POP ECX
004CDFAC 64:8910 MOV DWORD PTR FS:[EAX],EDX
004CDFAF 68 D1DF4C00 PUSH unediamo.004CDFD1
004CDFB4 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004CDFB7 BA 02000000 MOV EDX,2
004CDFBC E8 1F6CF3FF CALL unediamo.00404BE0
004CDFC1 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CDFC4 E8 F36BF3FF CALL unediamo.00404BBC
004CDFC9 C3 RETN
004CDFCA ^ E9 6D65F3FF JMP unediamo.0040453C
004CDFCF ^ EB E3 JMP SHORT unediamo.004CDFB4
004CDFD1 5F POP EDI
004CDFD2 5E POP ESI
004CDFD3 5B POP EBX
004CDFD4 8BE5 MOV ESP,EBP
004CDFD6 5D POP EBP
004CDFD7 C3 RETN
}
004CE12E 8B55 CC MOV EDX,DWORD PTR SS:[EBP-34] ;结果放入EDX
004CE131 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ;注册码除去前十六位剩余的注册码
004CE134 E8 8F6EF3FF CALL unediamo.00404FC8
004CE139 74 33 JE SHORT unediamo.004CE16E ;比较,相同跳转
004CE13B 8D45 C8 LEA EAX,DWORD PTR SS:[EBP-38]
004CE13E 50 PUSH EAX
004CE13F 8D55 C4 LEA EDX,DWORD PTR SS:[EBP-3C]
004CE142 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE145 8B98 F8020000 MOV EBX,DWORD PTR DS:[EAX+2F8]
004CE14B 8BC3 MOV EAX,EBX
004CE14D E8 92DFF9FF CALL unediamo.0046C0E4
004CE152 8B45 C4 MOV EAX,DWORD PTR SS:[EBP-3C]
004CE155 B9 05000000 MOV ECX,5
004CE15A BA 01000000 MOV EDX,1
004CE15F E8 786FF3FF CALL unediamo.004050DC
004CE164 8B55 C8 MOV EDX,DWORD PTR SS:[EBP-38]
004CE167 8BC3 MOV EAX,EBX
004CE169 E8 A6DFF9FF CALL unediamo.0046C114
004CE16E 33C0 XOR EAX,EAX ;跳转后来到这里,往下
004CE170 5A POP EDX
004CE171 59 POP ECX
004CE172 59 POP ECX
004CE173 64:8910 MOV DWORD PTR FS:[EAX],EDX
004CE176 EB 3D JMP SHORT unediamo.004CE1B5
004CE178 ^ E9 0B61F3FF JMP unediamo.00404288
004CE17D 8D45 C0 LEA EAX,DWORD PTR SS:[EBP-40]
004CE180 50 PUSH EAX
004CE181 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44]
004CE184 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE187 8B98 F8020000 MOV EBX,DWORD PTR DS:[EAX+2F8]
004CE18D 8BC3 MOV EAX,EBX
004CE18F E8 50DFF9FF CALL unediamo.0046C0E4
004CE194 8B45 BC MOV EAX,DWORD PTR SS:[EBP-44]
004CE197 B9 05000000 MOV ECX,5
004CE19C BA 01000000 MOV EDX,1
004CE1A1 E8 366FF3FF CALL unediamo.004050DC
004CE1A6 8B55 C0 MOV EDX,DWORD PTR SS:[EBP-40]
004CE1A9 8BC3 MOV EAX,EBX
004CE1AB E8 64DFF9FF CALL unediamo.0046C114
004CE1B0 E8 3B64F3FF CALL unediamo.004045F0
004CE1B5 8D45 B8 LEA EAX,DWORD PTR SS:[EBP-48]
004CE1B8 50 PUSH EAX
004CE1B9 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C]
004CE1BC 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE1BF 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004CE1C5 E8 1ADFF9FF CALL unediamo.0046C0E4
004CE1CA 8B45 B4 MOV EAX,DWORD PTR SS:[EBP-4C]
004CE1CD B9 06000000 MOV ECX,6
004CE1D2 BA 04000000 MOV EDX,4
004CE1D7 E8 006FF3FF CALL unediamo.004050DC ;取注册码4到9位
004CE1DC 8B55 B8 MOV EDX,DWORD PTR SS:[EBP-48]
004CE1DF 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8]
004CE1E2 A1 FC7D5000 MOV EAX,DWORD PTR DS:[507DFC]
004CE1E7 8B00 MOV EAX,DWORD PTR DS:[EAX]
004CE1E9 E8 8AFA0200 CALL unediamo.004FDC78 ;每一位加1,因此4到9位不能有9,否则出错
,放入[EBP-8]
004CE1EE 33C0 XOR EAX,EAX
004CE1F0 55 PUSH EBP
004CE1F1 68 E1E24C00 PUSH unediamo.004CE2E1
004CE1F6 64:FF30 PUSH DWORD PTR FS:[EAX]
004CE1F9 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CE1FC 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ;转移到EAX中
004CE1FF E8 60B4F3FF CALL unediamo.00409664
004CE204 B9 03000000 MOV ECX,3
004CE209 99 CDQ
004CE20A F7F9 IDIV ECX ; EAX=EAX整除3
004CE20C 8D55 B0 LEA EDX,DWORD PTR SS:[EBP-50]
004CE20F E8 14B3F3FF CALL unediamo.00409528 ;转化为十进制
004CE214 8B55 B0 MOV EDX,DWORD PTR SS:[EBP-50] ;存入EDX
004CE217 A1 FC7D5000 MOV EAX,DWORD PTR DS:[507DFC]
004CE21C 8B00 MOV EAX,DWORD PTR DS:[EAX]
004CE21E E8 7D0D0300 CALL unediamo.004FEFA0 ;F7跟入
{
004FEFE1 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004FEFE4 E8 935EF0FF CALL unediamo.00404E7C
004FEFE9 85C0 TEST EAX,EAX
004FEFEB 0F8E 95000000 JLE unediamo.004FF086
004FEFF1 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
004FEFF4 BB 01000000 MOV EBX,1
004FEFF9 8BFB MOV EDI,EBX
004FEFFB 0FAFFB IMUL EDI,EBX
004FEFFE 8BC7 MOV EAX,EDI
004FF000 F7EB IMUL EBX
004FF002 8D53 14 LEA EDX,DWORD PTR DS:[EBX+14]
004FF005 8BCA MOV ECX,EDX
004FF007 99 CDQ
004FF008 F7F9 IDIV ECX
004FF00A 8BF2 MOV ESI,EDX
004FF00C 8BC7 MOV EAX,EDI
004FF00E 8D53 0A LEA EDX,DWORD PTR DS:[EBX+A]
004FF011 8BCA MOV ECX,EDX
004FF013 99 CDQ
004FF014 F7F9 IDIV ECX
004FF016 03F2 ADD ESI,EDX
004FF018 8BC3 MOV EAX,EBX
004FF01A 03C0 ADD EAX,EAX
004FF01C 03F0 ADD ESI,EAX
004FF01E 46 INC ESI
004FF01F 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
004FF022 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
004FF025 0FB6541A FF MOVZX EDX,BYTE PTR DS:[EDX+EBX-1] ;注意这里,EDX存的每一位进入EDX
004FF02A 03D6 ADD EDX,ESI ;EDX=EDX+ESI
004FF02C E8 735DF0FF CALL unediamo.00404DA4
004FF031 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
004FF034 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004FF037 E8 485EF0FF CALL unediamo.00404E84
004FF03C 8BC3 MOV EAX,EBX
004FF03E F7EB IMUL EBX
004FF040 F7EB IMUL EBX
004FF042 8D53 0A LEA EDX,DWORD PTR DS:[EBX+A]
004FF045 8BCA MOV ECX,EDX
004FF047 99 CDQ
004FF048 F7F9 IDIV ECX
004FF04A 8BF2 MOV ESI,EDX
004FF04C 8BC7 MOV EAX,EDI
004FF04E 8D53 14 LEA EDX,DWORD PTR DS:[EBX+14]
004FF051 8BCA MOV ECX,EDX
004FF053 99 CDQ
004FF054 F7F9 IDIV ECX
004FF056 03F2 ADD ESI,EDX
004FF058 8BC3 MOV EAX,EBX
004FF05A 03C0 ADD EAX,EAX
004FF05C 03F0 ADD ESI,EAX
004FF05E 46 INC ESI
004FF05F 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
004FF062 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
004FF065 0FB6541A FF MOVZX EDX,BYTE PTR DS:[EDX+EBX-1]
004FF06A 03D6 ADD EDX,ESI
004FF06C E8 335DF0FF CALL unediamo.00404DA4
004FF071 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C]
004FF074 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004FF077 E8 085EF0FF CALL unediamo.00404E84
004FF07C 43 INC EBX
004FF07D FF4D EC DEC DWORD PTR SS:[EBP-14]
004FF080 ^ 0F85 73FFFFFF JNZ unediamo.004FEFF9 ;这里的循环将EDX存的每一位
转化为两位,虽然算法比较长,但是注意004FF025 和004FF065 ,这里就是转化的地方,并且注意ESI的值的变化,就能看出
算法了,从最初来看,ESI的初值是不变的,那他后面的值也就固定了
如果004CE139 处跳转的话也能到达这里,但是改变了一些变量的值,它在注册码中取出两位,最后结果就只有四位了,那就
不能注册成功
004FF086 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ;结果放入EAX
004FF089 BA FCF04F00 MOV EDX,unediamo.004FF0FC ; ASCII "66FFMJRXJELR"
004FF08E E8 355FF0FF CALL unediamo.00404FC8
004FF093 75 04 JNZ SHORT unediamo.004FF099 比较EAX与"66FFMJRXJELR",相等就成功了
004FF095 C645 FB 01 MOV BYTE PTR SS:[EBP-5],1
004FF099 33C0 XOR EAX,EAX
004FF09B 5A POP EDX
004FF09C 59 POP ECX
004FF09D 59 POP ECX
004FF09E 64:8910 MOV DWORD PTR FS:[EAX],EDX
004FF0A1 EB 0E JMP SHORT unediamo.004FF0B1
004FF0A3 ^ E9 E051F0FF JMP unediamo.00404288
004FF0A8 C645 FB 00 MOV BYTE PTR SS:[EBP-5],0
004FF0AC E8 3F55F0FF CALL unediamo.004045F0
004FF0B1 33C0 XOR EAX,EAX
004FF0B3 5A POP EDX
004FF0B4 59 POP ECX
004FF0B5 59 POP ECX
004FF0B6 64:8910 MOV DWORD PTR FS:[EAX],EDX
004FF0B9 68 E8F04F00 PUSH unediamo.004FF0E8
004FF0BE 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
004FF0C1 BA 02000000 MOV EDX,2
004FF0C6 E8 155BF0FF CALL unediamo.00404BE0
004FF0CB 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004FF0CE BA 02000000 MOV EDX,2
004FF0D3 E8 085BF0FF CALL unediamo.00404BE0
004FF0D8 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004FF0DB E8 DC5AF0FF CALL unediamo.00404BBC
004FF0E0 C3 RETN
004FF0E1 ^ E9 5654F0FF JMP unediamo.0040453C
004FF0E6 ^ EB D6 JMP SHORT unediamo.004FF0BE
004FF0E8 8A45 FB MOV AL,BYTE PTR SS:[EBP-5]
004FF0EB 5F POP EDI
004FF0EC 5E POP ESI
004FF0ED 5B POP EBX
004FF0EE 8BE5 MOV ESP,EBP
004FF0F0 5D POP EBP
多次实践可以发现ESI的值依次为5 5 11 11 14 11 1B 21 15 10 19 1F
然后将"66FFMJRXJELR"逆推ASCII码分别减去上面的数字(取奇数位减奇数位即可),的159753,将它*3得479259,每位上都
分别减1得368148
因此注册码的第4到9位必须为368148
}
004CE223 84C0 TEST AL,AL
004CE225 74 7B JE SHORT unediamo.004CE2A2 ;比较标志位,不跳就能注册成功
004CE227 A1 FC7D5000 MOV EAX,DWORD PTR DS:[507DFC]
004CE22C 8B00 MOV EAX,DWORD PTR DS:[EAX]
004CE22E 8B88 98040000 MOV ECX,DWORD PTR DS:[EAX+498]
**********************************
【破解总结】注册码第4到9位必须为368148,前十六位为0到9数字,末几位由前面十六位决定。
后来发现如果注册码小于16位时在004CE0B6跳转后,满足第4到9位为368148还是能注册成功的,不知是作者疏忽了,还是有意
写成这样的。
VB写的源码如下
Private Sub Command1_Click()
a = ""
Randomize
Do While (Len(a) < 10)
b = (Int(Rnd * 10 + 1))
If b < 9 Then
a = a & b
End If
Loop
c = Mid(a, 1, 3) & 368148 & Mid(a, 4, 7)
For i = 1 To 16
d = d + (Asc(Mid(c, i, 1)) - 48)
Next i
d = d + 15
e = CStr(d)
f = 88
h = "58"
j="123"
For i = 1 To Len(e)
g = ((f + Asc(Mid(e, i, 1))) Mod 255) Xor Asc(Mid(j, i, 1))
f = g
h = h & Hex(g)
Next i
Text1.Text = c & h
End Sub
[ 本帖最后由 zjjtr 于 2008-1-6 19:46 编辑 ] |
|