【破解软件】Hootech MP3 to SWF Converter 2.4.841
【软件语言】英文
【软件类别】国外软件/共享版/视频工具
【运行环境】Win9x/Me/NT/2000/XP/2003
【保护方式】注册码
【作者声明】初学Crack,只是感兴趣,消遣业余时间,错误之处敬请诸位前辈不吝赐教。
【编写语言】Microsoft Visual C++ 6.0
【调试工具】OllyDBD
【下载地址】http://www.onlinedown.net/soft/51005.htm
【软件信息】是一个 MP3/WAV 文件转换软件。它可以转换 MP3/WAV 文件为 SWF 文件。支持下列功能:支持以多种质量转换大体积的 MP3/WAV
文件为小体积的 SWF 文件;支持直接录音并转换为 SWF 文件;生成的流式 SWF 文件可以在线直接播放,无需等待下载完成;支持生成带控制
栏的 SWF 文件并内建多种美观的按钮;支持拖放操作,批量转换,转换快速且易于使用。
一、算法跟踪
根据注册框提示信息,很容易找到下面;
0040B106 . 6A FF PUSH -1
0040B108 . 68 088A4700 PUSH MP32SWF.00478A08
0040B10D . 50 PUSH EAX
0040B10E . 64:8925 00000000 MOV DWORD PTR FS:[0],ESP
0040B115 . 53 PUSH EBX
0040B116 . 56 PUSH ESI
0040B117 . 57 PUSH EDI
0040B118 . 8BF1 MOV ESI,ECX
0040B11A . E8 2C980600 CALL MP32SWF.0047494B
0040B11F . 8B48 04 MOV ECX,DWORD PTR DS:[EAX+4]
0040B122 . E8 4CF30500 CALL MP32SWF.0046A473
0040B127 . 6A 01 PUSH 1
0040B129 . 8BCE MOV ECX,ESI
0040B12B . C74424 18 00000000 MOV DWORD PTR SS:[ESP+18],0
0040B133 . E8 EDDC0500 CALL MP32SWF.00468E25
0040B138 . 8D7E 5C LEA EDI,DWORD PTR DS:[ESI+5C] ; [ESI+5C]用户名地址
0040B13B . 8BCF MOV ECX,EDI
0040B13D . E8 0F900500 CALL MP32SWF.00464151
0040B142 . 8BCF MOV ECX,EDI
0040B144 . E8 BC8F0500 CALL MP32SWF.00464105
0040B149 . 8D5E 60 LEA EBX,DWORD PTR DS:[ESI+60] ; [ESI+60]假码地址
0040B14C . 8BCB MOV ECX,EBX
0040B14E . E8 FE8F0500 CALL MP32SWF.00464151
0040B153 . 8BCB MOV ECX,EBX
0040B155 . E8 AB8F0500 CALL MP32SWF.00464105
0040B15A . 8B07 MOV EAX,DWORD PTR DS:[EDI]
0040B15C . 8B48 F8 MOV ECX,DWORD PTR DS:[EAX-8]
0040B15F . 85C9 TEST ECX,ECX ; 是否输入用户名
0040B161 . 75 0E JNZ SHORT MP32SWF.0040B171
0040B163 . 6A 30 PUSH 30
0040B165 . 68 00D34700 PUSH MP32SWF.0047D300 ; mp3 to swf converter
0040B16A . 68 18D34700 PUSH MP32SWF.0047D318 ; please enter your name.
0040B16F . EB 3B JMP SHORT MP32SWF.0040B1AC
0040B171 > 8B1B MOV EBX,DWORD PTR DS:[EBX]
0040B173 . 8D4E 64 LEA ECX,DWORD PTR DS:[ESI+64]
0040B176 . 51 PUSH ECX
0040B177 . 53 PUSH EBX
0040B178 . E8 43710100 CALL MP32SWF.004222C0 ; 关键Call
0040B17D . 83C4 08 ADD ESP,8
0040B180 . 85C0 TEST EAX,EAX ; EAX=1注册成功
0040B182 . 74 1C JE SHORT MP32SWF.0040B1A0 ; 跳注册失败
0040B184 . 6A 40 PUSH 40
0040B186 . 68 00D34700 PUSH MP32SWF.0047D300 ; mp3 to swf converter
0040B18B . 68 30D34700 PUSH MP32SWF.0047D330 ; register successfully. thank you for your support.
0040B190 . 8BCE MOV ECX,ESI
0040B192 . E8 98D40500 CALL MP32SWF.0046862F
0040B197 . 8BCE MOV ECX,ESI
0040B199 . E8 C5FD0500 CALL MP32SWF.0046AF63
0040B19E . EB 13 JMP SHORT MP32SWF.0040B1B3
0040B1A0 > 6A 10 PUSH 10
0040B1A2 . 68 00D34700 PUSH MP32SWF.0047D300 ; mp3 to swf converter
0040B1A7 . 68 64D34700 PUSH MP32SWF.0047D364 ; invalid registration code.\nplease check that you entered
exact information.\n\nif you have any problem with your registration code,\nplease contact <sales@hootech.com>.
0040B1AC > 8BCE MOV ECX,ESI
0040B178 处进入关键Call
004222C0 /$ 83EC 60 SUB ESP,60
004222C3 |. 56 PUSH ESI
004222C4 |. 8B7424 68 MOV ESI,DWORD PTR SS:[ESP+68] ; [ESP+68]假码地址
004222C8 |. 56 PUSH ESI ; /String
004222C9 |. FF15 E8C14700 CALL NEAR DWORD PTR DS:[<&KERNE>; \lstrlenA
004222CF |. 83F8 40 CMP EAX,40 ; 比较假码长度
004222D2 |. 74 07 JE SHORT MP32SWF.004222DB
004222D4 |. 33C0 XOR EAX,EAX
004222D6 |. 5E POP ESI
004222D7 |. 83C4 60 ADD ESP,60
004222DA |. C3 RETN
004222DB |> 53 PUSH EBX
004222DC |. 55 PUSH EBP
004222DD |. 8B2D 54C34700 MOV EBP,DWORD PTR DS:[<&KERNEL3>; kernel32.lstrcpynA
004222E3 |. 57 PUSH EDI
004222E4 |. 8D7C24 10 LEA EDI,DWORD PTR SS:[ESP+10]
004222E8 |. BB 08000000 MOV EBX,8
004222ED |> 6A 09 PUSH 9
004222EF |. 8D4424 34 LEA EAX,DWORD PTR SS:[ESP+34]
004222F3 |. 56 PUSH ESI
004222F4 |. 50 PUSH EAX
004222F5 |. FFD5 CALL NEAR EBP
004222F7 |. 57 PUSH EDI
004222F8 |. 8D4C24 34 LEA ECX,DWORD PTR SS:[ESP+34]
004222FC |. 68 40A24900 PUSH MP32SWF.0049A240 ; %x
00422301 |. 51 PUSH ECX
00422302 |. 83C6 08 ADD ESI,8
00422305 |. E8 6F160300 CALL MP32SWF.00453979
0042230A |. 83C4 0C ADD ESP,0C
0042230D |. 83C7 04 ADD EDI,4
00422310 |. 4B DEC EBX
00422311 |.^ 75 DA JNZ SHORT MP32SWF.004222ED ; 将假码分成8组,设为(s1…s8)
00422313 |. 8B7C24 78 MOV EDI,DWORD PTR SS:[ESP+78]
00422317 |. B9 08000000 MOV ECX,8
0042231C |. 8D7424 10 LEA ESI,DWORD PTR SS:[ESP+10]
00422320 |. 8D5424 10 LEA EDX,DWORD PTR SS:[ESP+10]
00422324 |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWO>
00422326 |. 52 PUSH EDX
00422327 |. E8 14000000 CALL MP32SWF.00422340 ; F7进入算法Call
0042232C |. 83C4 04 ADD ESP,4
0042232F |. 5F POP EDI
00422330 |. 5D POP EBP
00422331 |. 5B POP EBX
00422332 |. 5E POP ESI
00422333 |. 83C4 60 ADD ESP,60
00422336 \. C3 RETN
00422327 处 F7进入算法Call
下面代码中有四处判断运算结果,如果符合条件将注册成功。排除三处迷惑人的判断,可以忽略许多迷惑人的运算代码。
00422340 /$ 81EC B0000000 SUB ESP,0B0
00422346 |. 53 PUSH EBX
00422347 |. 55 PUSH EBP
00422348 |. 56 PUSH ESI
00422349 |. 8BB424 C0000000 MOV ESI,DWORD PTR SS:[ESP+C0]
00422350 |. 57 PUSH EDI
00422351 |. C74424 3C 00000000 MOV DWORD PTR SS:[ESP+3C],0
00422359 |. 8B7E 1C MOV EDI,DWORD PTR DS:[ESI+1C] ; [ESI+1C]=s8
0042235C |. 8B56 14 MOV EDX,DWORD PTR DS:[ESI+14] ; [ESI+14]=s6
0042235F |. 8BC2 MOV EAX,EDX
00422361 |. 8BCF MOV ECX,EDI
00422363 |. 25 AFFEABAF AND EAX,AFABFEAF
00422368 |. 81E1 50015450 AND ECX,50540150
0042236E |. 0FAFC1 IMUL EAX,ECX
00422371 |. 8B4E 10 MOV ECX,DWORD PTR DS:[ESI+10] ; [ESI+10]=s5
00422374 |. 8B5E 04 MOV EBX,DWORD PTR DS:[ESI+4] ; [ESI+4]=s2
00422377 |. 894424 40 MOV DWORD PTR SS:[ESP+40],EAX
0042237B |. 8BC3 MOV EAX,EBX
0042237D |. 8BE9 MOV EBP,ECX
0042237F |. 25 594C8EA9 AND EAX,A98E4C59
00422384 |. 81E5 A6B37156 AND EBP,5671B3A6
0042238A |. C74424 64 00000000 MOV DWORD PTR SS:[ESP+64],0
00422392 |. 0FAFC5 IMUL EAX,EBP
00422395 |. 894424 58 MOV DWORD PTR SS:[ESP+58],EAX
00422399 |. 8BC3 MOV EAX,EBX
0042239B |. 33C7 XOR EAX,EDI ; s2^s8
0042239D |. 8BEF MOV EBP,EDI
0042239F |. 25 58244948 AND EAX,48492458 ; EAX=(s2^s8)&48492458
004223A4 |. 81E5 37422398 AND EBP,98234237
004223AA |. 894424 18 MOV DWORD PTR SS:[ESP+18],EAX ; 保存(s2^s8)&48492458
004223AE |. 33C7 XOR EAX,EDI ; EAX=((s2^s8)&48492458)^s8
004223B0 |. 894424 28 MOV DWORD PTR SS:[ESP+28],EAX ; 保存EAX
004223B4 |. 8BC3 MOV EAX,EBX
004223B6 |. 33C2 XOR EAX,EDX
004223B8 |. 8BD3 MOV EDX,EBX
004223BA |. 25 AFFADB76 AND EAX,76DBFAAF
004223BF |. 81E2 50015450 AND EDX,50540150
004223C5 |. 33C3 XOR EAX,EBX
004223C7 |. 898424 B8000000 MOV DWORD PTR SS:[ESP+B8],EAX
004223CE |. 8BC7 MOV EAX,EDI
004223D0 |. F7D0 NOT EAX
004223D2 |. 25 A7DBB6B7 AND EAX,B7B6DBA7
004223D7 |. 0BC2 OR EAX,EDX
004223D9 |. 8B56 18 MOV EDX,DWORD PTR DS:[ESI+18] ; [ESI+18]=s7
004223DC |. 894424 70 MOV DWORD PTR SS:[ESP+70],EAX ;
004223E0 |. 8B46 0C MOV EAX,DWORD PTR DS:[ESI+C] ; [ESI+C]=s4
004223E3 |. 894424 14 MOV DWORD PTR SS:[ESP+14],EAX
004223E7 |. 33C2 XOR EAX,EDX ; EAX=s4^s7
004223E9 |. 25 A6B37156 AND EAX,5671B3A6 ; EAX=(s4^s7)&5671B3A6
004223EE |. 895424 10 MOV DWORD PTR SS:[ESP+10],EDX
004223F2 |. 33C2 XOR EAX,EDX ; EAX=((s4^s7)&5671B3A6)^s7
004223F4 |. 33D2 XOR EDX,EDX ; EDX清零
004223F6 |. 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX ; 保存((s4^s7)&5671B3A6)^s7
004223FA |. 894424 20 MOV DWORD PTR SS:[ESP+20],EAX
004223FE |. 69C0 73853409 IMUL EAX,EAX,9348573
00422404 |. 25 87A93434 AND EAX,3434A987
00422409 |. 81E2 9823FEAD AND EDX,ADFE2398
0042240F |. 894424 30 MOV DWORD PTR SS:[ESP+30],EAX
00422413 |. 8B46 08 MOV EAX,DWORD PTR DS:[ESI+8] ; [ESI+8]=s3
00422416 |. 895424 34 MOV DWORD PTR SS:[ESP+34],EDX ; EDX=0
0042241A |. 8BD0 MOV EDX,EAX
0042241C |. 33D1 XOR EDX,ECX ; EDX=s3^s5
0042241E |. 81E2 AFFADB76 AND EDX,76DBFAAF ; EDX=(s3^s5)&76DBFAAF
00422424 |. 33D1 XOR EDX,ECX ; EDX=((s3^s5)&76DBFAAF)^s5
00422426 |. 895424 24 MOV DWORD PTR SS:[ESP+24],EDX ; 保存((s3^s5)&76DBFAAF)^s5
0042242A |. 8B16 MOV EDX,DWORD PTR DS:[ESI] ; [ESI]=s1
0042242C |. 81E2 E93A8290 AND EDX,90823AE9
00422432 |. 0FAFD5 IMUL EDX,EBP
00422435 |. 895424 38 MOV DWORD PTR SS:[ESP+38],EDX
00422439 |. 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10]
0042243D |. 8BEF MOV EBP,EDI
0042243F |. 81E2 58244948 AND EDX,48492458
00422445 |. 81E5 A7DBB6B7 AND EBP,B7B6DBA7
0042244B |. 0FAFD5 IMUL EDX,EBP
0042244E |. 8B6E 14 MOV EBP,DWORD PTR DS:[ESI+14] ; [ESI+14]=s6
00422451 |. 895424 60 MOV DWORD PTR SS:[ESP+60],EDX
00422455 |. 8B16 MOV EDX,DWORD PTR DS:[ESI] ; [ESI]=s1
00422457 |. 33D5 XOR EDX,EBP ; EDX=s1^s6
00422459 |. 8B2E MOV EBP,DWORD PTR DS:[ESI]
0042245B |. 81E2 50015450 AND EDX,50540150 ; EDX=(s1^s6)&50540150
00422461 |. 33D5 XOR EDX,EBP ; EDX=((s1^s6)&50540150)^s1
00422463 |. 895424 7C MOV DWORD PTR SS:[ESP+7C],EDX ; 保存((s1^s6)&50540150)^s1
00422467 |. 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10] ; [ESP+10]=s7
0042246B |. 8BE8 MOV EBP,EAX
0042246D |. 25 A7DBB6B7 AND EAX,B7B6DBA7
00422472 |. 81E1 594C8EA9 AND ECX,A98E4C59
00422478 |. 0FAFC1 IMUL EAX,ECX
0042247B |. 33EA XOR EBP,EDX
0042247D |. 894424 48 MOV DWORD PTR SS:[ESP+48],EAX
00422481 |. 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14]
00422485 |. 81E5 A6B37156 AND EBP,5671B3A6
0042248B |. 33EA XOR EBP,EDX
0042248D |. 8B5424 18 MOV EDX,DWORD PTR SS:[ESP+18] ; [ESP+18]=(s2^s8)&48492458
00422491 |. 68 98720000 PUSH 7298
00422496 |. 68 988776A8 PUSH A8768798
0042249B |. 33D3 XOR EDX,EBX ; EDX=(s2^s8)&48492458^s2
0042249D |. 6A 00 PUSH 0
0042249F |. 50 PUSH EAX
004224A0 |. 895424 28 MOV DWORD PTR SS:[ESP+28],EDX ; 保存((s2^s8)&48492458)^s2
004224A4 |. E8 27100300 CALL MP32SWF.004534D0
004224A9 |. 8B4C24 30 MOV ECX,DWORD PTR SS:[ESP+30]
004224AD |. 23C1 AND EAX,ECX
004224AF |. 8B4C24 34 MOV ECX,DWORD PTR SS:[ESP+34] ; [ESP+34]=0
004224B3 |. 23D1 AND EDX,ECX
004224B5 |. 3D 80A628C4 CMP EAX,C428A680 ; 迷惑人的比较
004224BA |. 75 3E JNZ SHORT MP32SWF.004224FA
004224BC |. 81FA 723AE792 CMP EDX,92E73A72 ; EDX永远等于0
004224C2 |. 75 36 JNZ SHORT MP32SWF.004224FA
004224C4 |. 8B5C24 1C MOV EBX,DWORD PTR SS:[ESP+1C]
004224C8 |. 8B7C24 18 MOV EDI,DWORD PTR SS:[ESP+18]
004224CC |. 33ED XOR EBP,EBP
004224CE |. 33C0 XOR EAX,EAX
004224D0 |. 899C24 90000000 MOV DWORD PTR SS:[ESP+90],EBX
004224D7 |. 89AC24 94000000 MOV DWORD PTR SS:[ESP+94],EBP
004224DE |. 23DF AND EBX,EDI
004224E0 |. 23E8 AND EBP,EAX
004224E2 |. 81F3 46838419 XOR EBX,19848346
004224E8 |. 898424 8C000000 MOV DWORD PTR SS:[ESP+8C],EAX
004224EF |. 81F5 35716887 XOR EBP,87687135
004224F5 |. E9 92010000 JMP MP32SWF.0042268C
004224FA |> 0FAFAC24 B8000000 IMUL EBP,DWORD PTR SS:[ESP+B8]
00422502 |. 8B5424 40 MOV EDX,DWORD PTR SS:[ESP+40]
00422506 |. 8BC5 MOV EAX,EBP
00422508 |. 33ED XOR EBP,EBP
0042250A |. 33C9 XOR ECX,ECX ; ECX清零
0042250C |. 3BC2 CMP EAX,EDX ; 迷惑人的比较
0042250E |. 75 57 JNZ SHORT MP32SWF.00422567
00422510 |. 33C0 XOR EAX,EAX
00422512 |. 3BC8 CMP ECX,EAX
00422514 |. 75 51 JNZ SHORT MP32SWF.00422567
00422516 |. 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14]
0042251A |. 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10]
0042251E |. 25 A6B37156 AND EAX,5671B3A6
00422523 |. 81E1 50015450 AND ECX,50540150
00422529 |. 81E7 58244948 AND EDI,48492458
0042252F |. 81E3 AFFEABAF AND EBX,AFABFEAF
00422535 |. 0BC1 OR EAX,ECX
00422537 |. 0BFB OR EDI,EBX
00422539 |. 8BD8 MOV EBX,EAX
0042253B |. 33D2 XOR EDX,EDX
0042253D |. 89AC24 94000000 MOV DWORD PTR SS:[ESP+94],EBP
00422544 |. 33DF XOR EBX,EDI
00422546 |. 33EA XOR EBP,EDX
00422548 |. 81F3 858F0019 XOR EBX,19008F85
0042254E |. 899424 8C000000 MOV DWORD PTR SS:[ESP+8C],EDX
00422555 |. 898424 90000000 MOV DWORD PTR SS:[ESP+90],EAX
0042255C |. 81F5 66EC6827 XOR EBP,2768EC66
00422562 |. E9 25010000 JMP MP32SWF.0042268C
00422567 |> 8B4C24 18 MOV ECX,DWORD PTR SS:[ESP+18] ; [ESP+18]=(s2^s8)&48492458
0042256B |. 8B5424 20 MOV EDX,DWORD PTR SS:[ESP+20] ; [ESP+20]=((s4^s7)&5671B3A6)^s7
0042256F |. 33CA XOR ECX,EDX
00422571 |. F7C1 472383AE TEST ECX,AE832347
00422577 |. 0F84 C1000000 JE MP32SWF.0042263E
0042257D |. 33FF XOR EDI,EDI ; EDI清零
0042257F |. 89AC24 8C000000 MOV DWORD PTR SS:[ESP+8C],EBP ; EBP=0
00422586 |. 89AC24 90000000 MOV DWORD PTR SS:[ESP+90],EBP
0042258D |. 89AC24 94000000 MOV DWORD PTR SS:[ESP+94],EBP
00422594 |. 897424 10 MOV DWORD PTR SS:[ESP+10],ESI
00422598 |. 8D5E 18 LEA EBX,DWORD PTR DS:[ESI+18]
0042259B |. C74424 14 07000000 MOV DWORD PTR SS:[ESP+14],7
004225A3 |> 8B5424 10 /MOV EDX,DWORD PTR SS:[ESP+10] ; [ESP+10]=s7..s1
004225A7 |. 8B0B |MOV ECX,DWORD PTR DS:[EBX] ; [EBX]=s1..s7
004225A9 |. F7D1 |NOT ECX
004225AB |. 8B02 |MOV EAX,DWORD PTR DS:[EDX]
004225AD |. 8BD1 |MOV EDX,ECX
004225AF |. 8BE8 |MOV EBP,EAX
004225B1 |. 81E2 58244948 |AND EDX,48492458
004225B7 |. 81E5 AFFEABAF |AND EBP,AFABFEAF
004225BD |. 0FAFD5 |IMUL EDX,EBP
004225C0 |. 8BAC24 8C000000 |MOV EBP,DWORD PTR SS:[ESP+8C]
004225C7 |. 03FA |ADD EDI,EDX
004225C9 |. BA 00000000 |MOV EDX,0
004225CE |. 13EA |ADC EBP,EDX
004225D0 |. 25 A6B37156 |AND EAX,5671B3A6
004225D5 |. 81E1 50015450 |AND ECX,50540150
004225DB |. 89AC24 8C000000 |MOV DWORD PTR SS:[ESP+8C],EBP
004225E2 |. 0FAFC1 |IMUL EAX,ECX
004225E5 |. 8B8C24 90000000 |MOV ECX,DWORD PTR SS:[ESP+90]
004225EC |. 8BAC24 94000000 |MOV EBP,DWORD PTR SS:[ESP+94]
004225F3 |. 03C8 |ADD ECX,EAX
004225F5 |. 8B4424 14 |MOV EAX,DWORD PTR SS:[ESP+14]
004225F9 |. 898C24 90000000 |MOV DWORD PTR SS:[ESP+90],ECX
00422600 |. 8B4C24 10 |MOV ECX,DWORD PTR SS:[ESP+10]
00422604 |. 13EA |ADC EBP,EDX
00422606 |. 83EB 04 |SUB EBX,4
00422609 |. 83C1 04 |ADD ECX,4
0042260C |. 48 |DEC EAX
0042260D |. 89AC24 94000000 |MOV DWORD PTR SS:[ESP+94],EBP
00422614 |. 894C24 10 |MOV DWORD PTR SS:[ESP+10],ECX
00422618 |. 894424 14 |MOV DWORD PTR SS:[ESP+14],EAX
0042261C |.^ 75 85 \JNZ SHORT MP32SWF.004225A3 ; 此循环得到00422833处比较不相等
0042261E |. 8B9C24 90000000 MOV EBX,DWORD PTR SS:[ESP+90]
00422625 |. 8B9424 8C000000 MOV EDX,DWORD PTR SS:[ESP+8C]
0042262C |. 23DF AND EBX,EDI
0042262E |. 23EA AND EBP,EDX
00422630 |. 81F3 4A98AE68 XOR EBX,68AE984A
00422636 |. 81F5 19974835 XOR EBP,35489719
0042263C |. EB 4E JMP SHORT MP32SWF.0042268C
0042263E |> 55 PUSH EBP
0042263F |. E8 B9030300 CALL MP32SWF.004529FD
00422644 |. 83C4 04 ADD ESP,4
00422647 |. 8BF8 MOV EDI,EAX
00422649 |. E8 8D030300 CALL MP32SWF.004529DB
0042264E |. 0FAFF8 IMUL EDI,EAX
00422651 |. FF15 3CC34700 CALL NEAR DWORD PTR DS:[<&KERNEL>
00422657 |. 0FAFF8 IMUL EDI,EAX
0042265A |. 8B4E 04 MOV ECX,DWORD PTR DS:[ESI+4]
0042265D |. 33C0 XOR EAX,EAX
0042265F |. 50 PUSH EAX
00422660 |. 57 PUSH EDI
00422661 |. 55 PUSH EBP
00422662 |. 51 PUSH ECX
00422663 |. 898424 9C000000 MOV DWORD PTR SS:[ESP+9C],EAX
0042266A |. E8 610E0300 CALL MP32SWF.004534D0
0042266F |. 898424 90000000 MOV DWORD PTR SS:[ESP+90],EAX
00422676 |. 8BD8 MOV EBX,EAX
00422678 |. 8B8424 8C000000 MOV EAX,DWORD PTR SS:[ESP+8C]
0042267F |. 8BEA MOV EBP,EDX
00422681 |. 33DF XOR EBX,EDI
00422683 |. 899424 94000000 MOV DWORD PTR SS:[ESP+94],EDX
0042268A |. 33E8 XOR EBP,EAX
0042268C |> 8B4E 14 MOV ECX,DWORD PTR DS:[ESI+14] ; [ESI+14]=s6
0042268F |. 8B16 MOV EDX,DWORD PTR DS:[ESI] ; [ESI]=s1
00422691 |. 8BC1 MOV EAX,ECX
00422693 |. 6A 00 PUSH 0
00422695 |. 33C2 XOR EAX,EDX ; EAX=s6^s1
00422697 |. 8B56 08 MOV EDX,DWORD PTR DS:[ESI+8] ; [ESI+8]=s3
0042269A |. 25 50015450 AND EAX,50540150 ; EAX=(s6^s1)&50540150
0042269F |. 33C1 XOR EAX,ECX ; EAX=((s6^s1)&50540150)^s6
004226A1 |. 8B4C24 24 MOV ECX,DWORD PTR SS:[ESP+24] ; [ESP+24]=((s4^s7)&5671B3A6)^s7
004226A5 |. 81F1 44894865 XOR ECX,65488944
004226AB |. 894424 6C MOV DWORD PTR SS:[ESP+6C],EAX ; [+68]
004226AF |. 894C24 24 MOV DWORD PTR SS:[ESP+24],ECX ; 保存(((s4^s7)&5671B3A6)^s7)^65488944
004226B3 |. 8B4E 18 MOV ECX,DWORD PTR DS:[ESI+18] ; [ESI+18]=s7
004226B6 |. F7D1 NOT ECX
004226B8 |. 8B7424 28 MOV ESI,DWORD PTR SS:[ESP+28] ; [+24]=((s3^s5)&76DBFAAF)^s5
004226BC |. 8BC1 MOV EAX,ECX
004226BE |. 33C2 XOR EAX,EDX
004226C0 |. 81F6 00541612 XOR ESI,12165400 ; ESI=((s3^s5)&76DBFAAF)^s5^12165400
004226C6 |. 25 A6B37156 AND EAX,5671B3A6
004226CB |. 33C1 XOR EAX,ECX
004226CD |. 894424 78 MOV DWORD PTR SS:[ESP+78],EAX
004226D1 |. E8 27030300 CALL MP32SWF.004529FD
004226D6 |. 83C4 04 ADD ESP,4
004226D9 |. E8 FD020300 CALL MP32SWF.004529DB
004226DE |. FF15 3CC34700 CALL NEAR DWORD PTR DS:[<&KERNEL>
004226E4 |. 8B5424 20 MOV EDX,DWORD PTR SS:[ESP+20] ; [ESP+20]=(((s4^s7)&5671B3A6)^s7)^65488944
004226E8 |. 8B4424 28 MOV EAX,DWORD PTR SS:[ESP+28] ; [ESP+28]=((s2^s8)&48492458)^s8
004226EC |. 8B4C24 7C MOV ECX,DWORD PTR SS:[ESP+7C] ; [ESP+7C]=((s1^s6)&50540150)^s1
004226F0 |. 33D0 XOR EDX,EAX
004226F2 |. 81F1 2C5484AE XOR ECX,AE84542C ; ECX=(((s1^s6)&50540150)^s1)^AE84542C
004226F8 |. 81FA 20817E89 CMP EDX,897E8120 ; 关键比较(1)
004226FE |. 0F85 95000000 JNZ MP32SWF.00422799 ; 此处不能跳
00422704 |. 8B4424 68 MOV EAX,DWORD PTR SS:[ESP+68] ; [ESP+68]=((s6^s1)&50540150)^s6
00422708 |. 33C6 XOR EAX,ESI ; ESI=((s3^s5)&76DBFAAF)^s5^12165400
0042270A |. 3D 65C494E8 CMP EAX,E894C465 ; 关键比较(2)
0042270F |. 74 49 JE SHORT MP32SWF.0042275A ; 此处要跳
00422711 |. 8B4424 60 MOV EAX,DWORD PTR SS:[ESP+60]
00422715 |. 8B7C24 48 MOV EDI,DWORD PTR SS:[ESP+48]
00422719 |. 8B4C24 64 MOV ECX,DWORD PTR SS:[ESP+64]
0042271D |. 8B6C24 58 MOV EBP,DWORD PTR SS:[ESP+58]
00422721 |. F7D0 NOT EAX
00422723 |. 23C7 AND EAX,EDI
00422725 |. 33D2 XOR EDX,EDX ; EDX=0
00422727 |. F7D1 NOT ECX
00422729 |. 33C5 XOR EAX,EBP
0042272B |. 23CA AND ECX,EDX ; ECX=0
0042272D |. F7D0 NOT EAX
0042272F |. 33CA XOR ECX,EDX ; ECX=0 xor 0=0
00422731 |. 3D 2802C042 CMP EAX,42C00228 ; 迷惑人的比较
00422736 |. F7D1 NOT ECX
00422738 |. 0F85 14010000 JNZ MP32SWF.00422852
0042273E |. 81F9 8AE96598 CMP ECX,9865E98A ; ECX=0
00422744 |. 0F85 08010000 JNZ MP32SWF.00422852
0042274A |. 5F POP EDI
0042274B |. 5E POP ESI
0042274C |. 5D POP EBP
0042274D |. B8 01000000 MOV EAX,1
00422752 |. 5B POP EBX
00422753 |. 81C4 B0000000 ADD ESP,0B0
00422759 |. C3 RETN ; 此处回不了家
0042275A |> B8 F1F0F0F0 MOV EAX,F0F0F0F1
0042275F |. F7E1 MUL ECX ; ECX=(((s1^s6)&50540150)^s1)^AE84542C
00422761 |. C1EA 04 SHR EDX,4
00422764 |. B8 4FECC44E MOV EAX,4EC4EC4F
00422769 |. 8BFA MOV EDI,EDX
0042276B |. F7E1 MUL ECX
0042276D |. 0FAFFE IMUL EDI,ESI ; ESI=((s3^s5)&76DBFAAF)^s5^12165400)
00422770 |. 8B4424 20 MOV EAX,DWORD PTR SS:[ESP+20] ; [ESP+20]=((s4^s7)&5671B3A6)^s7
00422774 |. 8B4C24 18 MOV ECX,DWORD PTR SS:[ESP+18] ; [ESP+18]=(s2^s8)&48492458
00422778 |. C1EA 02 SHR EDX,2
0042277B |. 0FAFF0 IMUL ESI,EAX
0042277E |. 0FAFD0 IMUL EDX,EAX
00422781 |. 03FA ADD EDI,EDX
00422783 |. 33C0 XOR EAX,EAX
00422785 |. 03FE ADD EDI,ESI
00422787 |. F7D7 NOT EDI
00422789 |. 3BF9 CMP EDI,ECX ; 关键比较(3)
0042278B |. 5F POP EDI
0042278C |. 5E POP ESI
0042278D |. 5D POP EBP
0042278E |. 0F94C0 SETE AL
00422791 |. 5B POP EBX
00422792 |. 81C4 B0000000 ADD ESP,0B0
00422798 |. C3 RETN ; 只有此处满足条件返回才能注册成功
00422799 |> 8B4424 38 MOV EAX,DWORD PTR SS:[ESP+38]
0042279D |. 8B5424 40 MOV EDX,DWORD PTR SS:[ESP+40]
004227A1 |. 33C2 XOR EAX,EDX
004227A3 |. 8B5424 3C MOV EDX,DWORD PTR SS:[ESP+3C] ; [ESP+3C]=0
004227A7 |. C74424 44 00000000 MOV DWORD PTR SS:[ESP+44],0
004227AF |. 335424 44 XOR EDX,DWORD PTR SS:[ESP+44]
004227B3 |. 3D E8005A5F CMP EAX,5F5A00E8 ; 迷惑人的比较
004227B8 |. 75 5C JNZ SHORT MP32SWF.00422816
004227BA |. 81FA E48954A6 CMP EDX,A65489E4 ; EDX=0
004227C0 |. 75 54 JNZ SHORT MP32SWF.00422816
004227C2 |. B8 25499224 MOV EAX,24924925
004227C7 |. F7E1 MUL ECX
004227C9 |. 8BC1 MOV EAX,ECX
004227CB |. 2BC2 SUB EAX,EDX
004227CD |. D1E8 SHR EAX,1
004227CF |. 03C2 ADD EAX,EDX
004227D1 |. C1E8 02 SHR EAX,2
004227D4 |. 8BF8 MOV EDI,EAX
004227D6 |. B8 CB6B28AF MOV EAX,AF286BCB
004227DB |. F7E1 MUL ECX
004227DD |. 0FAFFE IMUL EDI,ESI
004227E0 |. 2BCA SUB ECX,EDX
004227E2 |. 8B4424 74 MOV EAX,DWORD PTR SS:[ESP+74]
004227E6 |. D1E9 SHR ECX,1
004227E8 |. 0FAF4424 70 IMUL EAX,DWORD PTR SS:[ESP+70]
004227ED |. 03CA ADD ECX,EDX
004227EF |. C1E9 04 SHR ECX,4
004227F2 |. 0FAF4C24 20 IMUL ECX,DWORD PTR SS:[ESP+20]
004227F7 |. 03F9 ADD EDI,ECX
004227F9 |. 8B8C24 B8000000 MOV ECX,DWORD PTR SS:[ESP+B8]
00422800 |. 03F8 ADD EDI,EAX
00422802 |. 33C0 XOR EAX,EAX
00422804 |. F7D7 NOT EDI
00422806 |. 3BF9 CMP EDI,ECX
00422808 |. 5F POP EDI
00422809 |. 5E POP ESI
0042280A |. 5D POP EBP
0042280B |. 0F94C0 SETE AL
0042280E |. 5B POP EBX
0042280F |. 81C4 B0000000 ADD ESP,0B0
00422815 |. C3 RETN ; 此处回不了家
00422816 |> 8B8424 90000000 MOV EAX,DWORD PTR SS:[ESP+90]
0042281D |. 8B8C24 94000000 MOV ECX,DWORD PTR SS:[ESP+94]
00422824 |. 8B9424 8C000000 MOV EDX,DWORD PTR SS:[ESP+8C]
0042282B |. 23C7 AND EAX,EDI
0042282D |. 23CA AND ECX,EDX
0042282F |. 33C3 XOR EAX,EBX
00422831 |. 33CD XOR ECX,EBP
00422833 |. 3D 4F79AE48 CMP EAX,48AE794F ; EAX永远等于68AE984A
00422838 |. 75 18 JNZ SHORT MP32SWF.00422852
0042283A |. 81F9 34023784 CMP ECX,84370234
00422840 |. 75 10 JNZ SHORT MP32SWF.00422852
00422842 |. 5F POP EDI
00422843 |. 5E POP ESI
00422844 |. 5D POP EBP
00422845 |. B8 01000000 MOV EAX,1
0042284A |. 5B POP EBX
0042284B |. 81C4 B0000000 ADD ESP,0B0
00422851 |. C3 RETN ; 此处回不了家
00422852 |> 5F POP EDI
00422853 |. 5E POP ESI
00422854 |. 5D POP EBP
00422855 |. 33C0 XOR EAX,EAX
00422857 |. 5B POP EBX
00422858 |. 81C4 B0000000 ADD ESP,0B0
0042285E \. C3 RETN ; 此处返回注册失败
二、算法小结
1.根据上面的分析,要从 00422798 处成功返回,只要同时满足下面三个等式。
关键比较(1)
004226F8 处判断 CMP EDX,897E8120 此处要满足 EDX==897E8120
即: ((((s4^s7)&5671B3A6)^s7)^65488944) ^ (((s2^s8)&48492458)^s8)==897E8120
关键比较(2)
0042270A 处判断 CMP EAX,E894C465 此处要满足 EAX==E894C465
即: ((s6^s1)&50540150)^s6 ^ ((s3^s5)&76DBFAAF)^s5^12165400==897E8120
关键比较(3)
00422789 处判断 CMP EDI,ECX 此处要满足 EDI==ECX
EDI的值:
(1) F0F0F0F1 * ((((s1^s6)&50540150)^s1)^AE84542C)
积的高位逻辑右移4,设为x
(2) 4EC4EC4F * ((((s1^s6)&50540150)^s1)^AE84542C)
积的高位逻辑右移2,设为y
(3) x * ((s3^s5)&76DBFAAF)^s5^12165400)
(4) y * (4EC4EC4F * ((((s1^s6)&50540150)^s1)^AE84542C))
(5) ((s3^s5)&76DBFAAF)^s5^12165400) * (4EC4EC4F * ((((s1^s6)&50540150)^s1)^AE84542C))
(6) (3)+(4)+(5) 和取反
ECX的值:(s2^s8)&48492458
即: (s2^s8)&48492458==(6)
2. 上面算式看着有些复杂,快速得到可用注册码的方法是将上面算式简单变换为:
(1) (s2^s8)&48492458^s2==FFFFFFFF
(2) ((s2^s8)&48492458)^s8)==897E8120
(3) (((s4^s7)&5671B3A6)^s7)^65488944==0
(4) ((s1^s6)&50540150)^s1^AE84542C==0
(5) ((s3^s5)&76DBFAAF)^s5^12165400==0
(6) ((s6^s1)&50540150)^s6==E894C465
找出满足等式的s1~s8
根据:(4) (6)
((s1^s6)&50540150)^s1==AE84542C
((s6^s1)&50540150)^s6==E894C465
得到:
s1=EE94546C
s6=A884C425
根据:(3)
((s4^s7)&5671B3A6)^s7==65488944
得到:
s7=65488944
s4=CCC6C51D
根据:(5)
((s3^s5)&76DBFAAF)^s5==12165400
得到:
s5=12165400
s3=9B325150
根据:(1) (2)
(s2^s8)&48492458^s2==FFFFFFFF
((s2^s8)&48492458)^s8)==897E8120
得到:
s2=BFFEDBA7
s8=C97FA578
3.用户名与注册码无关
一组可用的注册码
Name:wzwgp
Registration Code:EE94546CBFFEDBA79B325150CCC6C51D12165400A884C42565488944C97FA578
注册信息保存在:HKEY_CURRENT_USER\Software\Hoo Technologies\MP32SWF
顺祝大家新春快乐!