【破文标题】HTML to Image 2.0.2008.915算法分析
【破文作者】tianxj
【作者邮箱】tianxj_2007@126.com
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD,DeDe
【破解平台】Windows XP
【软件名称】HTML to Image 2.0.2008.915(实际显示2006.826)
【软件大小】1762KB
【软件类别】国外软件/图像处理
【软件授权】共享版
【软件语言】英文
【更新时间】2008-9-22
【原版下载】自己找一下
【保护方式】注册码
【软件简介】Html To Image可以容易、快捷地将任意的html页转换成图片或缩略图。最新的特征:可直接将给定网址的网页保存成bmp、jpeg、tiff、gif、png格式的图片;由大图像生成缩略图;支持批量转换;嵌入IE浏览器的前后关联菜单中。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"Invalid registration code!"
**************************************************************
二、用PEiD对HtmlToImage.exe查壳,为 Borland Delphi 6.0 - 7.0
**************************************************************
三、用DeDe查找按钮事件,运行OD,打开HtmlToImage.exe
==============================================================
0054A170 /. 55 PUSH EBP 0054A171 |. 8BEC MOV EBP, ESP 0054A173 |. 33C9 XOR ECX, ECX 0054A175 |. 51 PUSH ECX 0054A176 |. 51 PUSH ECX 0054A177 |. 51 PUSH ECX 0054A178 |. 51 PUSH ECX 0054A179 |. 53 PUSH EBX 0054A17A |. 8BD8 MOV EBX, EAX 0054A17C |. 33C0 XOR EAX, EAX 0054A17E |. 55 PUSH EBP 0054A17F |. 68 9AA25400 PUSH HtmlToIm.0054A29A 0054A184 |. 64:FF30 PUSH DWORD PTR FS:[EAX] 0054A187 |. 64:8920 MOV DWORD PTR FS:[EAX], ESP 0054A18A |. 8D55 F8 LEA EDX, DWORD PTR [EBP-8] 0054A18D |. 8B83 78030000 MOV EAX, DWORD PTR [EBX+378] 0054A193 |. E8 18E8F1FF CALL HtmlToIm.004689B0 0054A198 |. 8B45 F8 MOV EAX, DWORD PTR [EBP-8] 0054A19B |. 8D55 FC LEA EDX, DWORD PTR [EBP-4] 0054A19E |. E8 85F3EBFF CALL HtmlToIm.00409528 0054A1A3 |. 8B55 FC MOV EDX, DWORD PTR [EBP-4] 0054A1A6 |. 8D83 80040000 LEA EAX, DWORD PTR [EBX+480] 0054A1AC |. E8 6FA7EBFF CALL HtmlToIm.00404920 0054A1B1 |. 8D55 F0 LEA EDX, DWORD PTR [EBP-10] 0054A1B4 |. 8B83 80030000 MOV EAX, DWORD PTR [EBX+380] 0054A1BA |. E8 F1E7F1FF CALL HtmlToIm.004689B0 0054A1BF |. 8B45 F0 MOV EAX, DWORD PTR [EBP-10] 0054A1C2 |. 8D55 F4 LEA EDX, DWORD PTR [EBP-C] 0054A1C5 |. E8 5EF3EBFF CALL HtmlToIm.00409528 0054A1CA |. 8B55 F4 MOV EDX, DWORD PTR [EBP-C] 0054A1CD |. 8D83 84040000 LEA EAX, DWORD PTR [EBX+484] 0054A1D3 |. E8 48A7EBFF CALL HtmlToIm.00404920 0054A1D8 |. 83BB 80040000>CMP DWORD PTR [EBX+480], 0 0054A1DF |. 75 20 JNZ SHORT HtmlToIm.0054A201 ; //用户名不为空则跳 0054A1E1 |. BA ACA25400 MOV EDX, HtmlToIm.0054A2AC ; UNICODE "Please input your name!" 0054A1E6 |. 8B83 B4030000 MOV EAX, DWORD PTR [EBX+3B4] 0054A1EC |. E8 D774FAFF CALL HtmlToIm.004F16C8 0054A1F1 |. 8B83 78030000 MOV EAX, DWORD PTR [EBX+378] 0054A1F7 |. 8B10 MOV EDX, DWORD PTR [EAX] 0054A1F9 |. FF92 C4000000 CALL DWORD PTR [EDX+C4] 0054A1FF |. EB 6B JMP SHORT HtmlToIm.0054A26C 0054A201 |> 83BB 84040000>CMP DWORD PTR [EBX+484], 0 0054A208 |. 75 20 JNZ SHORT HtmlToIm.0054A22A ; //注册码不为空则跳 0054A20A |. BA E0A25400 MOV EDX, HtmlToIm.0054A2E0 ; UNICODE "Please input your registration code!" 0054A20F |. 8B83 B4030000 MOV EAX, DWORD PTR [EBX+3B4] 0054A215 |. E8 AE74FAFF CALL HtmlToIm.004F16C8 0054A21A |. 8B83 80030000 MOV EAX, DWORD PTR [EBX+380] 0054A220 |. 8B10 MOV EDX, DWORD PTR [EAX] 0054A222 |. FF92 C4000000 CALL DWORD PTR [EDX+C4] 0054A228 |. EB 42 JMP SHORT HtmlToIm.0054A26C 0054A22A |> 8BC3 MOV EAX, EBX 0054A22C |. E8 B7010000 CALL HtmlToIm.0054A3E8 ; //关键CALL 0054A231 |. 85C0 TEST EAX, EAX 0054A233 |. 74 19 JE SHORT HtmlToIm.0054A24E ; //关键跳转 0054A235 |. BA 30A35400 MOV EDX, HtmlToIm.0054A330 ; UNICODE "Thank you for registration! All limitations are removed now." 0054A23A |. 8B83 B4030000 MOV EAX, DWORD PTR [EBX+3B4] 0054A240 |. E8 8374FAFF CALL HtmlToIm.004F16C8 0054A245 |. 8BC3 MOV EAX, EBX 0054A247 |. E8 FC040000 CALL HtmlToIm.0054A748 0054A24C |. EB 1E JMP SHORT HtmlToIm.0054A26C 0054A24E |> BA B0A35400 MOV EDX, HtmlToIm.0054A3B0 ; UNICODE "Invalid registration code!" 0054A253 |. 8B83 B4030000 MOV EAX, DWORD PTR [EBX+3B4] 0054A259 |. E8 6A74FAFF CALL HtmlToIm.004F16C8 0054A25E |. 8B83 80030000 MOV EAX, DWORD PTR [EBX+380] 0054A264 |. 8B10 MOV EDX, DWORD PTR [EAX] 0054A266 |. FF92 C4000000 CALL DWORD PTR [EDX+C4] 0054A26C |> 33C0 XOR EAX, EAX 0054A26E |. 5A POP EDX 0054A26F |. 59 POP ECX 0054A270 |. 59 POP ECX 0054A271 |. 64:8910 MOV DWORD PTR FS:[EAX], EDX 0054A274 |. 68 A1A25400 PUSH HtmlToIm.0054A2A1 0054A279 |> 8D45 F0 LEA EAX, DWORD PTR [EBP-10] 0054A27C |. E8 4BA6EBFF CALL HtmlToIm.004048CC 0054A281 |. 8D45 F4 LEA EAX, DWORD PTR [EBP-C] 0054A284 |. E8 43A6EBFF CALL HtmlToIm.004048CC 0054A289 |. 8D45 F8 LEA EAX, DWORD PTR [EBP-8] 0054A28C |. E8 3BA6EBFF CALL HtmlToIm.004048CC 0054A291 |. 8D45 FC LEA EAX, DWORD PTR [EBP-4] 0054A294 |. E8 33A6EBFF CALL HtmlToIm.004048CC 0054A299 \. C3 RETN 0054A29A .^ E9 719FEBFF JMP HtmlToIm.00404210 0054A29F .^ EB D8 JMP SHORT HtmlToIm.0054A279 0054A2A1 . 5B POP EBX 0054A2A2 . 8BE5 MOV ESP, EBP 0054A2A4 . 5D POP EBP 0054A2A5 . C3 RETN ============================================================== 0054A3E8 /$ 55 PUSH EBP 0054A3E9 |. 8BEC MOV EBP, ESP 0054A3EB |. B9 06000000 MOV ECX, 6 0054A3F0 |> 6A 00 /PUSH 0 0054A3F2 |. 6A 00 |PUSH 0 0054A3F4 |. 49 |DEC ECX 0054A3F5 |.^ 75 F9 \JNZ SHORT HtmlToIm.0054A3F0 0054A3F7 |. 51 PUSH ECX 0054A3F8 |. 53 PUSH EBX 0054A3F9 |. 56 PUSH ESI 0054A3FA |. 57 PUSH EDI 0054A3FB |. 8BD8 MOV EBX, EAX 0054A3FD |. 33C0 XOR EAX, EAX 0054A3FF |. 55 PUSH EBP 0054A400 |. 68 2CA75400 PUSH HtmlToIm.0054A72C 0054A405 |. 64:FF30 PUSH DWORD PTR FS:[EAX] 0054A408 |. 64:8920 MOV DWORD PTR FS:[EAX], ESP 0054A40B |. 8D45 FC LEA EAX, DWORD PTR [EBP-4] 0054A40E |. 8B93 80040000 MOV EDX, DWORD PTR [EBX+480] 0054A414 |. E8 4BA5EBFF CALL HtmlToIm.00404964 0054A419 |. 8D45 F8 LEA EAX, DWORD PTR [EBP-8] 0054A41C |. 8B93 84040000 MOV EDX, DWORD PTR [EBX+484] 0054A422 |. E8 3DA5EBFF CALL HtmlToIm.00404964 0054A427 |. 8D45 FC LEA EAX, DWORD PTR [EBP-4] 0054A42A |. 8B93 80040000 MOV EDX, DWORD PTR [EBX+480] 0054A430 |. E8 2FA5EBFF CALL HtmlToIm.00404964 0054A435 |. 8D45 F8 LEA EAX, DWORD PTR [EBP-8] 0054A438 |. 8B93 84040000 MOV EDX, DWORD PTR [EBX+484] 0054A43E |. E8 21A5EBFF CALL HtmlToIm.00404964 0054A443 |. 8D45 FC LEA EAX, DWORD PTR [EBP-4] 0054A446 |. 8B93 80040000 MOV EDX, DWORD PTR [EBX+480] 0054A44C |. E8 13A5EBFF CALL HtmlToIm.00404964 0054A451 |. 8D45 F8 LEA EAX, DWORD PTR [EBP-8] 0054A454 |. 8B93 84040000 MOV EDX, DWORD PTR [EBX+484] 0054A45A |. E8 05A5EBFF CALL HtmlToIm.00404964 0054A45F |. 33F6 XOR ESI, ESI 0054A461 |. 8D45 FC LEA EAX, DWORD PTR [EBP-4] 0054A464 |. 8B93 80040000 MOV EDX, DWORD PTR [EBX+480] 0054A46A |. E8 F5A4EBFF CALL HtmlToIm.00404964 0054A46F |. 8D45 F8 LEA EAX, DWORD PTR [EBP-8] 0054A472 |. 8B93 84040000 MOV EDX, DWORD PTR [EBX+484] 0054A478 |. E8 E7A4EBFF CALL HtmlToIm.00404964 0054A47D |. 8B45 F8 MOV EAX, DWORD PTR [EBP-8] 0054A480 |. E8 17A7EBFF CALL HtmlToIm.00404B9C 0054A485 |. 83F8 16 CMP EAX, 16 0054A488 |. 0F85 83020000 JNZ HtmlToIm.0054A711 ; //注册码长度不等于22则跳 0054A48E |. 8B45 F8 MOV EAX, DWORD PTR [EBP-8] 0054A491 |. E8 06A7EBFF CALL HtmlToIm.00404B9C 0054A496 |. 83F8 16 CMP EAX, 16 0054A499 |. 0F85 72020000 JNZ HtmlToIm.0054A711 0054A49F |. 8B45 F8 MOV EAX, DWORD PTR [EBP-8] 0054A4A2 |. E8 F5A6EBFF CALL HtmlToIm.00404B9C 0054A4A7 |. 83F8 16 CMP EAX, 16 0054A4AA |. 0F85 61020000 JNZ HtmlToIm.0054A711 0054A4B0 |. 8B45 F8 MOV EAX, DWORD PTR [EBP-8] 0054A4B3 |. E8 E4A6EBFF CALL HtmlToIm.00404B9C 0054A4B8 |. 83F8 16 CMP EAX, 16 0054A4BB |. 0F85 50020000 JNZ HtmlToIm.0054A711 0054A4C1 |. 8D4D EC LEA ECX, DWORD PTR [EBP-14] 0054A4C4 |. BA 03000000 MOV EDX, 3 0054A4C9 |. 8B83 84040000 MOV EAX, DWORD PTR [EBX+484] 0054A4CF |. E8 C43FEFFF CALL HtmlToIm.0043E498 0054A4D4 |. 8B45 EC MOV EAX, DWORD PTR [EBP-14] 0054A4D7 |. BA 44A75400 MOV EDX, HtmlToIm.0054A744 ; ASCII "ACM" 0054A4DC |. E8 07A8EBFF CALL HtmlToIm.00404CE8 0054A4E1 |. 0F85 2A020000 JNZ HtmlToIm.0054A711 ; //注册码左边3位不是"ACM"则跳 0054A4E7 |. 8B45 F8 MOV EAX, DWORD PTR [EBP-8] 0054A4EA |. E8 ADA6EBFF CALL HtmlToIm.00404B9C 0054A4EF |. 83F8 16 CMP EAX, 16 0054A4F2 |. 0F85 19020000 JNZ HtmlToIm.0054A711 0054A4F8 |. 8D4D E8 LEA ECX, DWORD PTR [EBP-18] 0054A4FB |. BA 03000000 MOV EDX, 3 0054A500 |. 8B83 84040000 MOV EAX, DWORD PTR [EBX+484] 0054A506 |. E8 8D3FEFFF CALL HtmlToIm.0043E498 0054A50B |. 8B45 E8 MOV EAX, DWORD PTR [EBP-18] 0054A50E |. BA 44A75400 MOV EDX, HtmlToIm.0054A744 ; ASCII "ACM" 0054A513 |. E8 D0A7EBFF CALL HtmlToIm.00404CE8 0054A518 |. 0F85 F3010000 JNZ HtmlToIm.0054A711 0054A51E |. 8B45 F8 MOV EAX, DWORD PTR [EBP-8] 0054A521 |. E8 76A6EBFF CALL HtmlToIm.00404B9C 0054A526 |. 83F8 16 CMP EAX, 16 0054A529 |. 0F85 E2010000 JNZ HtmlToIm.0054A711 0054A52F |. 8D4D E4 LEA ECX, DWORD PTR [EBP-1C] 0054A532 |. BA 03000000 MOV EDX, 3 0054A537 |. 8B83 84040000 MOV EAX, DWORD PTR [EBX+484] 0054A53D |. E8 563FEFFF CALL HtmlToIm.0043E498 0054A542 |. 8B45 E4 MOV EAX, DWORD PTR [EBP-1C] 0054A545 |. BA 44A75400 MOV EDX, HtmlToIm.0054A744 ; ASCII "ACM" 0054A54A |. E8 99A7EBFF CALL HtmlToIm.00404CE8 0054A54F |. 0F85 BC010000 JNZ HtmlToIm.0054A711 0054A555 |. 8D4D F8 LEA ECX, DWORD PTR [EBP-8] 0054A558 |. BA 13000000 MOV EDX, 13 0054A55D |. 8B83 84040000 MOV EAX, DWORD PTR [EBX+484] 0054A563 |. E8 A83FEFFF CALL HtmlToIm.0043E510 0054A568 |. 837D FC 00 CMP DWORD PTR [EBP-4], 0 0054A56C |. 0F84 9F010000 JE HtmlToIm.0054A711 ; //用户名为空则跳 0054A572 |. 837D F8 00 CMP DWORD PTR [EBP-8], 0 0054A576 |. 0F84 95010000 JE HtmlToIm.0054A711 ; //注册码右边19位为空则跳 0054A57C |. 33DB XOR EBX, EBX 0054A57E |> 8BFB /MOV EDI, EBX 0054A580 |. 83C7 01 |ADD EDI, 1 0054A583 |. 71 05 |JNO SHORT HtmlToIm.0054A58A 0054A585 |. E8 3294EBFF |CALL HtmlToIm.004039BC 0054A58A |> 8B45 F8 |MOV EAX, DWORD PTR [EBP-8] 0054A58D |. 4F |DEC EDI 0054A58E |. 85C0 |TEST EAX, EAX 0054A590 |. 74 05 |JE SHORT HtmlToIm.0054A597 0054A592 |. 3B78 FC |CMP EDI, DWORD PTR [EAX-4] 0054A595 |. 72 05 |JB SHORT HtmlToIm.0054A59C 0054A597 |> E8 1894EBFF |CALL HtmlToIm.004039B4 0054A59C |> 47 |INC EDI 0054A59D |. 807C38 FF 2D |CMP BYTE PTR [EAX+EDI-1], 2D 0054A5A2 |. 74 2A |JE SHORT HtmlToIm.0054A5CE 0054A5A4 |. 8D45 E0 |LEA EAX, DWORD PTR [EBP-20] 0054A5A7 |. 8B55 F8 |MOV EDX, DWORD PTR [EBP-8] 0054A5AA |. 4F |DEC EDI 0054A5AB |. 85D2 |TEST EDX, EDX 0054A5AD |. 74 05 |JE SHORT HtmlToIm.0054A5B4 0054A5AF |. 3B7A FC |CMP EDI, DWORD PTR [EDX-4] 0054A5B2 |. 72 05 |JB SHORT HtmlToIm.0054A5B9 0054A5B4 |> E8 FB93EBFF |CALL HtmlToIm.004039B4 0054A5B9 |> 47 |INC EDI 0054A5BA |. 8A543A FF |MOV DL, BYTE PTR [EDX+EDI-1] 0054A5BE |. E8 F1A4EBFF |CALL HtmlToIm.00404AB4 0054A5C3 |. 8B55 E0 |MOV EDX, DWORD PTR [EBP-20] 0054A5C6 |. 8D45 F4 |LEA EAX, DWORD PTR [EBP-C] 0054A5C9 |. E8 D6A5EBFF |CALL HtmlToIm.00404BA4 0054A5CE |> 43 |INC EBX 0054A5CF |. 83FB 13 |CMP EBX, 13 0054A5D2 |.^ 75 AA \JNZ SHORT HtmlToIm.0054A57E ; //循环,去除注册码右边19位里的"-", 形成新字符串 0054A5D4 |. 8D45 F8 LEA EAX, DWORD PTR [EBP-8] 0054A5D7 |. 8B55 F4 MOV EDX, DWORD PTR [EBP-C] 0054A5DA |. E8 85A3EBFF CALL HtmlToIm.00404964 0054A5DF |. 8D45 F4 LEA EAX, DWORD PTR [EBP-C] 0054A5E2 |. E8 E5A2EBFF CALL HtmlToIm.004048CC 0054A5E7 |. 8B45 F8 MOV EAX, DWORD PTR [EBP-8] 0054A5EA |. E8 ADA5EBFF CALL HtmlToIm.00404B9C 0054A5EF |. 83F8 10 CMP EAX, 10 0054A5F2 |. 0F85 19010000 JNZ HtmlToIm.0054A711 ; //新字符串的长度不等于16则跳 0054A5F8 |. 33DB XOR EBX, EBX 0054A5FA |> 8BC3 /MOV EAX, EBX 0054A5FC |. 25 01000080 |AND EAX, 80000001 0054A601 |. 79 05 |JNS SHORT HtmlToIm.0054A608 0054A603 |. 48 |DEC EAX 0054A604 |. 83C8 FE |OR EAX, FFFFFFFE 0054A607 |. 40 |INC EAX 0054A608 |> 85C0 |TEST EAX, EAX 0054A60A |. 75 38 |JNZ SHORT HtmlToIm.0054A644 0054A60C |. 8D45 DC |LEA EAX, DWORD PTR [EBP-24] 0054A60F |. 8BD3 |MOV EDX, EBX 0054A611 |. 83C2 01 |ADD EDX, 1 0054A614 |. 71 05 |JNO SHORT HtmlToIm.0054A61B 0054A616 |. E8 A193EBFF |CALL HtmlToIm.004039BC 0054A61B |> 8B4D F8 |MOV ECX, DWORD PTR [EBP-8] 0054A61E |. 4A |DEC EDX 0054A61F |. 85C9 |TEST ECX, ECX 0054A621 |. 74 05 |JE SHORT HtmlToIm.0054A628 0054A623 |. 3B51 FC |CMP EDX, DWORD PTR [ECX-4] 0054A626 |. 72 05 |JB SHORT HtmlToIm.0054A62D 0054A628 |> E8 8793EBFF |CALL HtmlToIm.004039B4 0054A62D |> 42 |INC EDX 0054A62E |. 8A5411 FF |MOV DL, BYTE PTR [ECX+EDX-1] 0054A632 |. E8 7DA4EBFF |CALL HtmlToIm.00404AB4 0054A637 |. 8B55 DC |MOV EDX, DWORD PTR [EBP-24] 0054A63A |. 8D45 F0 |LEA EAX, DWORD PTR [EBP-10] 0054A63D |. E8 62A5EBFF |CALL HtmlToIm.00404BA4 0054A642 |. EB 36 |JMP SHORT HtmlToIm.0054A67A 0054A644 |> 8D45 D8 |LEA EAX, DWORD PTR [EBP-28] 0054A647 |. 8BD3 |MOV EDX, EBX 0054A649 |. 83C2 01 |ADD EDX, 1 0054A64C |. 71 05 |JNO SHORT HtmlToIm.0054A653 0054A64E |. E8 6993EBFF |CALL HtmlToIm.004039BC 0054A653 |> 8B4D F8 |MOV ECX, DWORD PTR [EBP-8] 0054A656 |. 4A |DEC EDX 0054A657 |. 85C9 |TEST ECX, ECX 0054A659 |. 74 05 |JE SHORT HtmlToIm.0054A660 0054A65B |. 3B51 FC |CMP EDX, DWORD PTR [ECX-4] 0054A65E |. 72 05 |JB SHORT HtmlToIm.0054A665 0054A660 |> E8 4F93EBFF |CALL HtmlToIm.004039B4 0054A665 |> 42 |INC EDX 0054A666 |. 8A5411 FF |MOV DL, BYTE PTR [ECX+EDX-1] 0054A66A |. E8 45A4EBFF |CALL HtmlToIm.00404AB4 0054A66F |. 8B55 D8 |MOV EDX, DWORD PTR [EBP-28] 0054A672 |. 8D45 F4 |LEA EAX, DWORD PTR [EBP-C] 0054A675 |. E8 2AA5EBFF |CALL HtmlToIm.00404BA4 0054A67A |> 43 |INC EBX 0054A67B |. 83FB 10 |CMP EBX, 10 0054A67E |.^ 0F85 76FFFFFF \JNZ HtmlToIm.0054A5FA ; //循环,将新字符串按奇数位和偶数位分成两组字符串 0054A684 |. 8D45 FC LEA EAX, DWORD PTR [EBP-4] 0054A687 |. E8 40A2EBFF CALL HtmlToIm.004048CC 0054A68C |. 33DB XOR EBX, EBX 0054A68E |> 8D45 D4 /LEA EAX, DWORD PTR [EBP-2C] 0054A691 |. BA 08000000 |MOV EDX, 8 0054A696 |. 2BD3 |SUB EDX, EBX 0054A698 |. 71 05 |JNO SHORT HtmlToIm.0054A69F 0054A69A |. E8 1D93EBFF |CALL HtmlToIm.004039BC 0054A69F |> 8B4D F4 |MOV ECX, DWORD PTR [EBP-C] 0054A6A2 |. 4A |DEC EDX 0054A6A3 |. 85C9 |TEST ECX, ECX 0054A6A5 |. 74 05 |JE SHORT HtmlToIm.0054A6AC 0054A6A7 |. 3B51 FC |CMP EDX, DWORD PTR [ECX-4] 0054A6AA |. 72 05 |JB SHORT HtmlToIm.0054A6B1 0054A6AC |> E8 0393EBFF |CALL HtmlToIm.004039B4 0054A6B1 |> 42 |INC EDX 0054A6B2 |. 8A5411 FF |MOV DL, BYTE PTR [ECX+EDX-1] 0054A6B6 |. E8 F9A3EBFF |CALL HtmlToIm.00404AB4 0054A6BB |. 8B55 D4 |MOV EDX, DWORD PTR [EBP-2C] 0054A6BE |. 8D45 FC |LEA EAX, DWORD PTR [EBP-4] 0054A6C1 |. E8 DEA4EBFF |CALL HtmlToIm.00404BA4 0054A6C6 |. 43 |INC EBX 0054A6C7 |. 83FB 08 |CMP EBX, 8 0054A6CA |.^ 75 C2 \JNZ SHORT HtmlToIm.0054A68E ; //循环,将偶数位字符串反转 0054A6CC |. 8D55 D0 LEA EDX, DWORD PTR [EBP-30] 0054A6CF |. 8B45 F0 MOV EAX, DWORD PTR [EBP-10] ; //奇数位字符串 0054A6D2 |. E8 3DB8FFFF CALL HtmlToIm.00545F14 ; //奇数位字符串作标准MD5运算 0054A6D7 |. 8B55 D0 MOV EDX, DWORD PTR [EBP-30] ; //奇数位字符串MD5值大写 0054A6DA |. 8D45 F0 LEA EAX, DWORD PTR [EBP-10] 0054A6DD |. E8 82A2EBFF CALL HtmlToIm.00404964 0054A6E2 |. 8D4D CC LEA ECX, DWORD PTR [EBP-34] 0054A6E5 |. BA 08000000 MOV EDX, 8 0054A6EA |. 8B45 F0 MOV EAX, DWORD PTR [EBP-10] ; //奇数位字符串MD5值大写 0054A6ED |. E8 AE3EEFFF CALL HtmlToIm.0043E5A0 ; //取奇数位字符串MD5值大写的右边8位 0054A6F2 |. 8B55 CC MOV EDX, DWORD PTR [EBP-34] ; //奇数位字符串MD5值大写的右边8位 0054A6F5 |. 8D45 F0 LEA EAX, DWORD PTR [EBP-10] 0054A6F8 |. E8 67A2EBFF CALL HtmlToIm.00404964 0054A6FD |. 8B45 FC MOV EAX, DWORD PTR [EBP-4] ; //偶数位字符串反转字符串 0054A700 |. 8B55 F0 MOV EDX, DWORD PTR [EBP-10] ; //取奇数位字符串MD5值大写的右边8位 0054A703 |. E8 E0A5EBFF CALL HtmlToIm.00404CE8 ; //比较CALL 0054A708 |. 75 05 JNZ SHORT HtmlToIm.0054A70F ; //关键跳转 0054A70A |. 83CE FF OR ESI, FFFFFFFF 0054A70D |. EB 02 JMP SHORT HtmlToIm.0054A711 0054A70F |> 33F6 XOR ESI, ESI 0054A711 |> 33C0 XOR EAX, EAX 0054A713 |. 5A POP EDX 0054A714 |. 59 POP ECX 0054A715 |. 59 POP ECX 0054A716 |. 64:8910 MOV DWORD PTR FS:[EAX], EDX 0054A719 |. 68 33A75400 PUSH HtmlToIm.0054A733 0054A71E |> 8D45 CC LEA EAX, DWORD PTR [EBP-34] 0054A721 |. BA 0D000000 MOV EDX, 0D 0054A726 |. E8 C5A1EBFF CALL HtmlToIm.004048F0 0054A72B \. C3 RETN 0054A72C .^ E9 DF9AEBFF JMP HtmlToIm.00404210 0054A731 .^ EB EB JMP SHORT HtmlToIm.0054A71E 0054A733 . 8BC6 MOV EAX, ESI 0054A735 . 5F POP EDI 0054A736 . 5E POP ESI 0054A737 . 5B POP EBX 0054A738 . 8BE5 MOV ESP, EBP 0054A73A . 5D POP EBP 0054A73B . C3 RETN
【破解总结】
--------------------------------------------------------------
【算法总结】
1.用户名与注册码无关,但不能为空
2.注册码长度必须为22位,左边3位必须是"ACM",注册码里必须有3个"-"
3.剩余16位注册码正确与否是根据奇数位和偶数位运算来判断的
--------------------------------------------------------------
【算法注册机】
〖易语言代码〗
.版本 2
.支持库 dp1
.子程序 _按钮1_被单击
.局部变量 奇数位字符串, 文本型
.局部变量 偶数位字符串, 文本型
.局部变量 新字符串, 文本型
.局部变量 i, 整数型
奇数位字符串 = 到文本 (取随机数 (0, 9)) + 到文本 (取随机数 (0, 9)) + 到文本 (取随机数 (0, 9)) + 到文本 (取随机数 (0, 9)) + 到文本 (取随机数 (0, 9)) + 到文本 (取随机数 (0, 9)) + 到文本 (取随机数 (0, 9)) + 到文本 (取随机数 (0, 9))
偶数位字符串 = 到大写 (倒转字符串 (取文本右边 (到大写 (取数据摘要 (到字节集 (奇数位字符串))), 8)))
.计次循环首 (8, i)
新字符串 = 新字符串 + 取文本中间 (奇数位字符串, i, 1) + 取文本中间 (偶数位字符串, i, 1)
.计次循环尾 ()
编辑框2.内容 = “ ACM-” + 取文本中间 (新字符串, 1, 5) + “-” + 取文本中间 (新字符串, 6, 5) + “-” + 取文本中间 (新字符串, 11, 6)
.子程序 倒转字符串, 文本型
.参数 string, 文本型
.局部变量 k, 整数型
.局部变量 RChar, 文本型
.局部变量 LChar, 文本型
.局部变量 WChar, 文本型
.判断循环首 (k < 取文本长度 (string))
LChar = 取文本左边 (string, 取文本长度 (string) - k)
RChar = 取文本右边 (LChar, 1)
k = k + 1
WChar = WChar + RChar
.判断循环尾 ()
返回 (WChar)
--------------------------------------------------------------
【注册信息】
保存在strings.ini
--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
_/_/_/ _/ _/ _/_/_/
_/ _/ _/ _/ _/
_/_/_/ _/_/ _/_/_/_/
_/ _/ _/ _/
_/ _/ _/_/_/ _/ tianxj