飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4279|回复: 1

[原创] hoy0a1 CrackMe 2算法分析

[复制链接]
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2011-10-15 10:41:59 | 显示全部楼层 |阅读模式
    【破文标题】hoy0a1 CrackMe 2算法分析
    破解作者】hrbx
    【破解日期】2011-10-15
    【软件简介】Zhoy0a1 CrackMe 2
    【下载地址】https://www.chinapyg.com/viewthr ... &extra=page%3D1
    -----------------------------------------------------------------------------------------------
    【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    -----------------------------------------------------------------------------------------------
    【破解过程】
    1.查壳。用Peid扫描,显示为:Dev-C++ 4.9.9.2 -> Bloodshed Software [覆盖],无壳。
    2.试运行。输入ID与SN,程序错误提示:"Wrong! Try again..."
    3.算法分析。OD载入,Ultra String Reference-Find ASCII,找到如下地址:
    ======================================================================================================
    Address    Disassembly                               Text String
    004015F5   > \C74424 04 4D4>mov     dword ptr [esp+4], 0044404D      ;  \t\t\twrong! try again...\n\n
    ======================================================================================================

    双击来到:

    004015F5   > \C74424 04 4D4>mov     dword ptr [esp+4], 0044404D      ;  \t\t\twrong! try again...\n\n

    向上回溯,来到00401390,F2下断。

    00401390   $  55            push    ebp                              ;  F2下断

    Ctrl+F2重新运行,输入注册信息:

    ======================================
    ID:6543210
    SN:987654321
    ======================================

    回车,程序立即中断:

    00401390   $  55                       push    ebp                              ;  F2下断
    00401391   .  89E5                     mov     ebp, esp
    00401393   .  57                       push    edi
    00401394   .  56                       push    esi
    00401395   .  53                       push    ebx
    00401396   .  81EC 8C010000            sub     esp, 18C
    0040139C   .  83E4 F0                  and     esp, FFFFFFF0
    0040139F   .  B8 00000000              mov     eax, 0
    004013A4   .  83C0 0F                  add     eax, 0F
    004013A7   .  83C0 0F                  add     eax, 0F
    004013AA   .  C1E8 04                  shr     eax, 4
    004013AD   .  C1E0 04                  shl     eax, 4
    004013B0   .  8985 84FEFFFF            mov     dword ptr [ebp-17C], eax
    004013B6   .  8B85 84FEFFFF            mov     eax, dword ptr [ebp-17C]
    004013BC   .  E8 0FCE0000              call    0040E1D0
    004013C1   .  C785 CCFEFFFF 801E4000   mov     dword ptr [ebp-134], 00401E80
    004013CB   .  C785 D0FEFFFF 20174400   mov     dword ptr [ebp-130], 00441720
    004013D5   .  8D85 D4FEFFFF            lea     eax, dword ptr [ebp-12C]
    004013DB   .  8D55 E8                  lea     edx, dword ptr [ebp-18]
    004013DE   .  8910                     mov     dword ptr [eax], edx
    004013E0   .  BA 47154000              mov     edx, 00401547
    004013E5   .  8950 04                  mov     dword ptr [eax+4], edx
    004013E8   .  8960 08                  mov     dword ptr [eax+8], esp
    004013EB   .  8D85 B4FEFFFF            lea     eax, dword ptr [ebp-14C]
    004013F1   .  890424                   mov     dword ptr [esp], eax
    004013F4   .  E8 87C30000              call    0040D780
    004013F9   .  E8 B2BE0000              call    0040D2B0
    004013FE   .  8D45 D8                  lea     eax, dword ptr [ebp-28]
    00401401   .  890424                   mov     dword ptr [esp], eax
    00401404   .  C785 B8FEFFFF FFFFFFFF   mov     dword ptr [ebp-148], -1
    0040140E   .  E8 4DDD0200              call    0042F160
    00401413   .  8D45 C8                  lea     eax, dword ptr [ebp-38]
    00401416   .  890424                   mov     dword ptr [esp], eax
    00401419   .  C785 B8FEFFFF 04000000   mov     dword ptr [ebp-148], 4
    00401423   .  E8 38DD0200              call    0042F160
    00401428   .  C74424 04 08000000       mov     dword ptr [esp+4], 8
    00401430   .  C70424 10000000          mov     dword ptr [esp], 10
    00401437   .  E8 BCF10300              call    004405F8
    0040143C   .  894424 04                mov     dword ptr [esp+4], eax
    00401440   .  8D85 08FFFFFF            lea     eax, dword ptr [ebp-F8]
    00401446   .  890424                   mov     dword ptr [esp], eax
    00401449   .  C785 B8FEFFFF 03000000   mov     dword ptr [ebp-148], 3
    00401453   .  E8 588F0300              call    0043A3B0
    00401458   >  C74424 04 00404400       mov     dword ptr [esp+4], 00444000      ;  \t\t\tplease input your id:
    00401460   .  C70424 C0734400          mov     dword ptr [esp], 004473C0
    00401467   .  C785 B8FEFFFF 02000000   mov     dword ptr [ebp-148], 2
    00401471   .  E8 B2E70300              call    0043FC28
    00401476   .  8D45 D8                  lea     eax, dword ptr [ebp-28]
    00401479   .  894424 04                mov     dword ptr [esp+4], eax
    0040147D   .  C70424 60744400          mov     dword ptr [esp], 00447460
    00401484   .  E8 2BFB0300              call    00440FB4
    00401489   .  8D45 D8                  lea     eax, dword ptr [ebp-28]
    0040148C   .  890424                   mov     dword ptr [esp], eax             ;  EAX地址存放ID
    0040148F   .  E8 6C100100              call    00412500                         ;  \ 获取ID长度
    00401494   .  83F8 05                  cmp     eax, 5                           ;  |ID长度与5比较
    00401497   .  0F86 7B010000            jbe     00401618                         ;  |小于则Over
    0040149D   .  8D45 D8                  lea     eax, dword ptr [ebp-28]          ;  |
    004014A0   .  890424                   mov     dword ptr [esp], eax             ;  |EAX地址存放ID
    004014A3   .  E8 58100100              call    00412500                         ;  |获取ID长度
    004014A8   .  83F8 09                  cmp     eax, 9                           ;  |ID长度与9比较
    004014AB   .  0F87 67010000            ja      00401618                         ;  / 大于则Over
    004014B1   .  8D45 D8                  lea     eax, dword ptr [ebp-28]          ;  ID长度应为6-9位
    004014B4   .  894424 04                mov     dword ptr [esp+4], eax
    004014B8   .  8D85 08FFFFFF            lea     eax, dword ptr [ebp-F8]
    004014BE   .  83C0 08                  add     eax, 8
    004014C1   .  890424                   mov     dword ptr [esp], eax
    004014C4   .  E8 BFEE0300              call    00440388
    004014C9   .  8D85 04FFFFFF            lea     eax, dword ptr [ebp-FC]
    004014CF   .  894424 04                mov     dword ptr [esp+4], eax
    004014D3   .  8D85 08FFFFFF            lea     eax, dword ptr [ebp-F8]
    004014D9   .  890424                   mov     dword ptr [esp], eax
    004014DC   .  E8 2F7B0200              call    00429010
    004014E1   .  C74424 04 19404400       mov     dword ptr [esp+4], 00444019      ;  \t\t\tplease input your sn:
    004014E9   .  C70424 C0734400          mov     dword ptr [esp], 004473C0
    004014F0   .  E8 33E70300              call    0043FC28
    004014F5   .  8D45 C8                  lea     eax, dword ptr [ebp-38]
    004014F8   .  894424 04                mov     dword ptr [esp+4], eax
    004014FC   .  C70424 60744400          mov     dword ptr [esp], 00447460
    00401503   .  E8 ACFA0300              call    00440FB4
    00401508   .  8D45 C8                  lea     eax, dword ptr [ebp-38]
    0040150B   .  894424 04                mov     dword ptr [esp+4], eax
    0040150F   .  8D85 E8FEFFFF            lea     eax, dword ptr [ebp-118]
    00401515   .  890424                   mov     dword ptr [esp], eax
    00401518   .  E8 93D90200              call    0042EEB0
    0040151D   .  8D85 E8FEFFFF            lea     eax, dword ptr [ebp-118]
    00401523   .  894424 04                mov     dword ptr [esp+4], eax
    00401527   .  8B85 04FFFFFF            mov     eax, dword ptr [ebp-FC]
    0040152D   .  890424                   mov     dword ptr [esp], eax             ;  EAX=0x63D76A(6543210h)
    00401530   .  C785 B8FEFFFF 01000000   mov     dword ptr [ebp-148], 1
    0040153A   .  E8 21020000              call    00401760                         ;  关键CALL,F7进入
    0040153F   .  8985 ACFEFFFF            mov     dword ptr [ebp-154], eax         ;  CALL中比较真假码,相等则EAX值存入[ebp-154],EAX=0x10
    00401545   .  EB 77                    jmp     short 004015BE
    00401547   .  8D6D 18                  lea     ebp, dword ptr [ebp+18]
    0040154A   .  8B85 B8FEFFFF            mov     eax, dword ptr [ebp-148]
    00401550   .  8985 94FEFFFF            mov     dword ptr [ebp-16C], eax
    00401556   .  8B95 BCFEFFFF            mov     edx, dword ptr [ebp-144]
    0040155C   .  8995 A4FEFFFF            mov     dword ptr [ebp-15C], edx
    00401562   .  83BD 94FEFFFF 01         cmp     dword ptr [ebp-16C], 1
    00401569   .  0F84 33010000            je      004016A2
    0040156F   .  83BD 94FEFFFF 02         cmp     dword ptr [ebp-16C], 2
    00401576   .  0F84 56010000            je      004016D2
    0040157C   .  83BD 94FEFFFF 03         cmp     dword ptr [ebp-16C], 3
    00401583   .  0F84 76010000            je      004016FF
    00401589   .  8B85 A4FEFFFF            mov     eax, dword ptr [ebp-15C]
    0040158F   .  8985 A8FEFFFF            mov     dword ptr [ebp-158], eax
    00401595   .  8D85 E8FEFFFF            lea     eax, dword ptr [ebp-118]
    0040159B   .  890424                   mov     dword ptr [esp], eax
    0040159E   .  C785 B8FEFFFF 00000000   mov     dword ptr [ebp-148], 0
    004015A8   .  E8 73E00200              call    0042F620
    004015AD   .  8B95 A8FEFFFF            mov     edx, dword ptr [ebp-158]
    004015B3   .  8995 A4FEFFFF            mov     dword ptr [ebp-15C], edx
    004015B9   .  E9 E4000000              jmp     004016A2
    004015BE   >  8D85 E8FEFFFF            lea     eax, dword ptr [ebp-118]
    004015C4   .  890424                   mov     dword ptr [esp], eax
    004015C7   .  C785 B8FEFFFF 02000000   mov     dword ptr [ebp-148], 2
    004015D1   .  E8 4AE00200              call    0042F620
    004015D6   .  83BD ACFEFFFF 10         cmp     dword ptr [ebp-154], 10          ;  比较地址[ebp-154]值是否为0x10
    004015DD   .  75 16                    jnz     short 004015F5                   ;  不是则Over,暴破点,Nop
    004015DF   .  C74424 04 32404400       mov     dword ptr [esp+4], 00444032      ;  注册成功提示"very well!  you win..."
    004015E7   .  C70424 C0734400          mov     dword ptr [esp], 004473C0
    004015EE   .  E8 35E60300              call    0043FC28
    004015F3   .  EB 46                    jmp     short 0040163B
    004015F5   >  C74424 04 4D404400       mov     dword ptr [esp+4], 0044404D      ;  错误提示"wrong! try again..."
    004015FD   .  C70424 C0734400          mov     dword ptr [esp], 004473C0
    00401604   .  C785 B8FEFFFF 02000000   mov     dword ptr [ebp-148], 2
    0040160E   .  E8 15E60300              call    0043FC28
    00401613   .^ E9 40FEFFFF              jmp     00401458
    00401618   >  C74424 04 68404400       mov     dword ptr [esp+4], 00444068      ;  ID长度范围提示"please input id in 100000 and 999999999 between!"
    00401620   .  C70424 C0734400          mov     dword ptr [esp], 004473C0
    00401627   .  C785 B8FEFFFF 02000000   mov     dword ptr [ebp-148], 2
    00401631   .  E8 F2E50300              call    0043FC28
    00401636   .^ E9 1DFEFFFF              jmp     00401458
    0040163B   >  C70424 9E404400          mov     dword ptr [esp], 0044409E        ; |pause
    00401642   .  C785 B8FEFFFF 02000000   mov     dword ptr [ebp-148], 2           ; |
    0040164C   .  E8 0FF60000              call    <jmp.&msvcrt.system>             ; \system
    00401651   .  8D85 08FFFFFF            lea     eax, dword ptr [ebp-F8]
    00401657   .  890424                   mov     dword ptr [esp], eax
    0040165A   .  C785 B8FEFFFF 03000000   mov     dword ptr [ebp-148], 3
    00401664   .  E8 F7930300              call    0043AA60
    00401669   .  8D45 C8                  lea     eax, dword ptr [ebp-38]
    0040166C   .  890424                   mov     dword ptr [esp], eax
    0040166F   .  C785 B8FEFFFF 04000000   mov     dword ptr [ebp-148], 4
    00401679   .  E8 A2DF0200              call    0042F620
    0040167E   .  8D45 D8                  lea     eax, dword ptr [ebp-28]
    00401681   .  890424                   mov     dword ptr [esp], eax
    00401684   .  C785 B8FEFFFF FFFFFFFF   mov     dword ptr [ebp-148], -1
    0040168E   .  E8 8DDF0200              call    0042F620
    00401693   .  C785 B0FEFFFF 00000000   mov     dword ptr [ebp-150], 0
    0040169D   .  E9 A2000000              jmp     00401744
    004016A2   >  8B85 A4FEFFFF            mov     eax, dword ptr [ebp-15C]
    004016A8   .  8985 A0FEFFFF            mov     dword ptr [ebp-160], eax
    004016AE   .  8D85 08FFFFFF            lea     eax, dword ptr [ebp-F8]
    004016B4   .  890424                   mov     dword ptr [esp], eax
    004016B7   .  C785 B8FEFFFF 00000000   mov     dword ptr [ebp-148], 0
    004016C1   .  E8 9A930300              call    0043AA60
    004016C6   .  8B95 A0FEFFFF            mov     edx, dword ptr [ebp-160]
    004016CC   .  8995 A4FEFFFF            mov     dword ptr [ebp-15C], edx
    004016D2   >  8B85 A4FEFFFF            mov     eax, dword ptr [ebp-15C]
    004016D8   .  8985 9CFEFFFF            mov     dword ptr [ebp-164], eax
    004016DE   .  8D45 C8                  lea     eax, dword ptr [ebp-38]
    004016E1   .  890424                   mov     dword ptr [esp], eax
    004016E4   .  C785 B8FEFFFF 00000000   mov     dword ptr [ebp-148], 0
    004016EE   .  E8 2DDF0200              call    0042F620
    004016F3   .  8B95 9CFEFFFF            mov     edx, dword ptr [ebp-164]
    004016F9   .  8995 A4FEFFFF            mov     dword ptr [ebp-15C], edx
    004016FF   >  8B85 A4FEFFFF            mov     eax, dword ptr [ebp-15C]
    00401705   .  8985 98FEFFFF            mov     dword ptr [ebp-168], eax
    0040170B   .  8D45 D8                  lea     eax, dword ptr [ebp-28]
    0040170E   .  890424                   mov     dword ptr [esp], eax
    00401711   .  C785 B8FEFFFF 00000000   mov     dword ptr [ebp-148], 0
    0040171B   .  E8 00DF0200              call    0042F620
    00401720   .  8B95 98FEFFFF            mov     edx, dword ptr [ebp-168]
    00401726   .  8995 A4FEFFFF            mov     dword ptr [ebp-15C], edx
    0040172C   .  8B85 A4FEFFFF            mov     eax, dword ptr [ebp-15C]
    00401732   .  890424                   mov     dword ptr [esp], eax
    00401735   .  C785 B8FEFFFF FFFFFFFF   mov     dword ptr [ebp-148], -1
    0040173F   .  E8 FCC60000              call    0040DE40
    00401744   >  8D85 B4FEFFFF            lea     eax, dword ptr [ebp-14C]
    0040174A   .  890424                   mov     dword ptr [esp], eax
    0040174D   .  E8 0EC10000              call    0040D860
    00401752   .  8B85 B0FEFFFF            mov     eax, dword ptr [ebp-150]
    00401758   .  8D65 F4                  lea     esp, dword ptr [ebp-C]
    0040175B   .  5B                       pop     ebx
    0040175C   .  5E                       pop     esi
    0040175D   .  5F                       pop     edi
    0040175E   .  5D                       pop     ebp
    0040175F   .  C3                       retn


    F7进入0040153A处的关键CALL,来到:

    00401760   $  55                       push    ebp                              ;  算法CALL
    00401761   .  89E5                     mov     ebp, esp
    00401763   .  57                       push    edi
    00401764   .  56                       push    esi
    00401765   .  53                       push    ebx
    00401766   .  81EC 4C050000            sub     esp, 54C
    0040176C   .  C785 ECFAFFFF 801E4000   mov     dword ptr [ebp-514], 00401E80
    00401776   .  C785 F0FAFFFF 2C174400   mov     dword ptr [ebp-510], 0044172C
    00401780   .  8D85 F4FAFFFF            lea     eax, dword ptr [ebp-50C]
    00401786   .  8D55 E8                  lea     edx, dword ptr [ebp-18]
    00401789   .  8910                     mov     dword ptr [eax], edx
    0040178B   .  BA BC184000              mov     edx, 004018BC
    00401790   .  8950 04                  mov     dword ptr [eax+4], edx
    00401793   .  8960 08                  mov     dword ptr [eax+8], esp
    00401796   .  8D85 D4FAFFFF            lea     eax, dword ptr [ebp-52C]
    0040179C   .  890424                   mov     dword ptr [esp], eax
    0040179F   .  E8 DCBF0000              call    0040D780
    004017A4   .  C74424 04 08000000       mov     dword ptr [esp+4], 8
    004017AC   .  C70424 10000000          mov     dword ptr [esp], 10
    004017B3   .  E8 40EE0300              call    004405F8
    004017B8   .  894424 04                mov     dword ptr [esp+4], eax
    004017BC   .  8D85 28FFFFFF            lea     eax, dword ptr [ebp-D8]
    004017C2   .  890424                   mov     dword ptr [esp], eax
    004017C5   .  C785 D8FAFFFF FFFFFFFF   mov     dword ptr [ebp-528], -1
    004017CF   .  E8 DC8B0300              call    0043A3B0
    004017D4   .  C785 24FBFFFF 00000000   mov     dword ptr [ebp-4DC], 0
    004017DE   >  837D 08 00               cmp     dword ptr [ebp+8], 0             ;  比较地址[ebp+8]是否为0,不为0则继续
    004017E2   .  7E 4D                    jle     short 00401831
    004017E4   .  8B9D 24FBFFFF            mov     ebx, dword ptr [ebp-4DC]
    004017EA   .  8B4D 08                  mov     ecx, dword ptr [ebp+8]           ;  ECX=0x63D76A(6543210h),ID
    004017ED   .  B8 67666666              mov     eax, 66666667                    ;  EAX=0x66666667
    004017F2   .  F7E9                     imul    ecx                              ;  EAX=EAX*ECX=0x66666667*0x63D76A=27EFC4003BE7A6
    004017F4   .  D1FA                     sar     edx, 1                           ;  算法结果高8位放入EDX,EDX=0027EFC4,EDX=EDX sar 1=0013F7E2
    004017F6   .  89C8                     mov     eax, ecx                         ;  EAX=ECX=0x63D76A(6543210h)
    004017F8   .  C1F8 1F                  sar     eax, 1F                          ;  EAX=EAX sar 1F=0
    004017FB   .  29C2                     sub     edx, eax                         ;  EDX=EDX-EAX=0013F7E2
    004017FD   .  89D0                     mov     eax, edx                         ;  EAX=EDX=0013F7E2
    004017FF   .  C1E0 02                  shl     eax, 2                           ;  EAX=EAX shl 2=004FDF88
    00401802   .  01D0                     add     eax, edx                         ;  EAX=EAX+EDX=0063D76A
    00401804   .  29C1                     sub     ecx, eax                         ;  ECX=ECX-EAX
    00401806   .  89C8                     mov     eax, ecx                         ;  EAX=ECX=0
    00401808   .  89849D 28FBFFFF          mov     dword ptr [ebp+ebx*4-4D8], eax   ;  每次运算结果保存入地址[ebp+ebx*4-4D8]
    0040180F   .  8B4D 08                  mov     ecx, dword ptr [ebp+8]           ;  ECX=0x63D76A(6543210h),ID
    00401812   .  B8 67666666              mov     eax, 66666667                    ;  EAX=0x66666667
    00401817   .  F7E9                     imul    ecx                              ;  EAX=EAX*ECX=0x66666667*0x63D76A=27EFC4003BE7A6
    00401819   .  D1FA                     sar     edx, 1                           ;  EDX=0027EFC4,EAX=003BE7A6,EDX=EDX sar 1=0013F7E2
    0040181B   .  89C8                     mov     eax, ecx                         ;  EAX=ECX=0x63D76A(6543210h)
    0040181D   .  C1F8 1F                  sar     eax, 1F                          ;  EAX=EAX sar 1F=0
    00401820   .  29C2                     sub     edx, eax                         ;  EDX=EDX-EAX=0013F7E2
    00401822   .  89D0                     mov     eax, edx                         ;  EAX=EDX=0013F7E2
    00401824   .  8945 08                  mov     dword ptr [ebp+8], eax           ;  EAX保存入地址[ebp+8],作为下次循环运算数
    00401827   .  8D85 24FBFFFF            lea     eax, dword ptr [ebp-4DC]
    0040182D   .  FF00                     inc     dword ptr [eax]
    0040182F   .^ EB AD                    jmp     short 004017DE
    00401831   >  83BD 24FBFFFF 00         cmp     dword ptr [ebp-4DC], 0
    00401838   .  7E 36                    jle     short 00401870
    0040183A   .  8B85 24FBFFFF            mov     eax, dword ptr [ebp-4DC]         ;  EAX=0xA,上面运算循环次数,即注册码长度
    00401840   .  8B8485 24FBFFFF          mov     eax, dword ptr [ebp+eax*4-4DC]   ;  从地址[ebp+eax*4-4DC]取数据,即从401808处倒取每次运算结果
    00401847   .  894424 04                mov     dword ptr [esp+4], eax           ;  3133340320
    0040184B   .  8D85 28FFFFFF            lea     eax, dword ptr [ebp-D8]
    00401851   .  83C0 08                  add     eax, 8
    00401854   .  890424                   mov     dword ptr [esp], eax
    00401857   .  C785 D8FAFFFF 02000000   mov     dword ptr [ebp-528], 2
    00401861   .  E8 AAA00200              call    0042B910
    00401866   .  8D85 24FBFFFF            lea     eax, dword ptr [ebp-4DC]
    0040186C   .  FF08                     dec     dword ptr [eax]
    0040186E   .^ EB C1                    jmp     short 00401831
    00401870   >  8D95 08FBFFFF            lea     edx, dword ptr [ebp-4F8]
    00401876   .  8D85 28FFFFFF            lea     eax, dword ptr [ebp-D8]
    0040187C   .  894424 04                mov     dword ptr [esp+4], eax
    00401880   .  891424                   mov     dword ptr [esp], edx
    00401883   .  C785 D8FAFFFF 02000000   mov     dword ptr [ebp-528], 2
    0040188D   .  E8 7E210100              call    00413A10                         ;  真码"3133340320"
    00401892   .  83EC 04                  sub     esp, 4
    00401895   .  8D85 08FBFFFF            lea     eax, dword ptr [ebp-4F8]
    0040189B   .  894424 04                mov     dword ptr [esp+4], eax
    0040189F   .  8B45 0C                  mov     eax, dword ptr [ebp+C]
    004018A2   .  890424                   mov     dword ptr [esp], eax             ;  D EAX 假码"9876543210"
    004018A5   .  C785 D8FAFFFF 01000000   mov     dword ptr [ebp-528], 1
    004018AF   .  E8 34E30300              call    0043FBE8                         ;  真假码比较,相等则AL=1,反之AL=0
    004018B4   .  8885 CFFAFFFF            mov     byte ptr [ebp-531], al           ;  AL存入[ebp-531]
    004018BA   .  EB 50                    jmp     short 0040190C
    004018BC   .  8D6D 18                  lea     ebp, dword ptr [ebp+18]
    004018BF   .  8B85 D8FAFFFF            mov     eax, dword ptr [ebp-528]
    004018C5   .  8B95 DCFAFFFF            mov     edx, dword ptr [ebp-524]
    004018CB   .  8995 C4FAFFFF            mov     dword ptr [ebp-53C], edx
    004018D1   .  83F8 01                  cmp     eax, 1
    004018D4   .  0F84 9B000000            je      00401975
    004018DA   .  8B85 C4FAFFFF            mov     eax, dword ptr [ebp-53C]
    004018E0   .  8985 C8FAFFFF            mov     dword ptr [ebp-538], eax
    004018E6   .  8D85 08FBFFFF            lea     eax, dword ptr [ebp-4F8]
    004018EC   .  890424                   mov     dword ptr [esp], eax
    004018EF   .  C785 D8FAFFFF 00000000   mov     dword ptr [ebp-528], 0
    004018F9   .  E8 22DD0200              call    0042F620
    004018FE   .  8B95 C8FAFFFF            mov     edx, dword ptr [ebp-538]
    00401904   .  8995 C4FAFFFF            mov     dword ptr [ebp-53C], edx
    0040190A   .  EB 69                    jmp     short 00401975
    0040190C   >  8D85 08FBFFFF            lea     eax, dword ptr [ebp-4F8]
    00401912   .  890424                   mov     dword ptr [esp], eax
    00401915   .  C785 D8FAFFFF 02000000   mov     dword ptr [ebp-528], 2
    0040191F   .  E8 FCDC0200              call    0042F620
    00401924   .  80BD CFFAFFFF 00         cmp     byte ptr [ebp-531], 0            ;  地址[ebp-531]处的值与0比较
    0040192B   .  74 24                    je      short 00401951                   ;  相等则Over
    0040192D   .  8D85 28FFFFFF            lea     eax, dword ptr [ebp-D8]
    00401933   .  890424                   mov     dword ptr [esp], eax
    00401936   .  C785 D8FAFFFF FFFFFFFF   mov     dword ptr [ebp-528], -1
    00401940   .  E8 1B910300              call    0043AA60
    00401945   .  C785 D0FAFFFF 10000000   mov     dword ptr [ebp-530], 10          ;  不等则将地址[ebp-530]处赋值0x10
    0040194F   .  EB 6C                    jmp     short 004019BD
    00401951   >  8D85 28FFFFFF            lea     eax, dword ptr [ebp-D8]
    00401957   .  890424                   mov     dword ptr [esp], eax
    0040195A   .  C785 D8FAFFFF FFFFFFFF   mov     dword ptr [ebp-528], -1
    00401964   .  E8 F7900300              call    0043AA60
    00401969   .  C785 D0FAFFFF 08000000   mov     dword ptr [ebp-530], 8
    00401973   .  EB 48                    jmp     short 004019BD
    00401975   >  8B85 C4FAFFFF            mov     eax, dword ptr [ebp-53C]
    0040197B   .  8985 C0FAFFFF            mov     dword ptr [ebp-540], eax
    00401981   .  8D85 28FFFFFF            lea     eax, dword ptr [ebp-D8]
    00401987   .  890424                   mov     dword ptr [esp], eax
    0040198A   .  C785 D8FAFFFF 00000000   mov     dword ptr [ebp-528], 0
    00401994   .  E8 C7900300              call    0043AA60
    00401999   .  8B95 C0FAFFFF            mov     edx, dword ptr [ebp-540]
    0040199F   .  8995 C4FAFFFF            mov     dword ptr [ebp-53C], edx
    004019A5   .  8B85 C4FAFFFF            mov     eax, dword ptr [ebp-53C]
    004019AB   .  890424                   mov     dword ptr [esp], eax
    004019AE   .  C785 D8FAFFFF FFFFFFFF   mov     dword ptr [ebp-528], -1
    004019B8   .  E8 83C40000              call    0040DE40
    004019BD   >  8D85 D4FAFFFF            lea     eax, dword ptr [ebp-52C]
    004019C3   .  890424                   mov     dword ptr [esp], eax
    004019C6   .  E8 95BE0000              call    0040D860
    004019CB   .  8B85 D0FAFFFF            mov     eax, dword ptr [ebp-530]         ;  地址[ebp-530]处的值给EAX
    004019D1   .  8D65 F4                  lea     esp, dword ptr [ebp-C]
    004019D4   .  5B                       pop     ebx
    004019D5   .  5E                       pop     esi
    004019D6   .  5F                       pop     edi
    004019D7   .  5D                       pop     ebp
    004019D8   .  C3                       retn

    -----------------------------------------------------------------------------------------------
    【破解总结】
    1.注册ID长度应为6-9位。
    2.将注册ID与0x66666667相乘,积右移1位(sar 1)取结果数值的高8位,然后sar 1F、shl 2、sub、add等运算将结果存入地址[ebp+ebx*4-4D8]。
    3.第二步注册ID与0x66666667相乘,积右移1位(sar 1)取结果数值的高8位,然后sar 1F、shl 2、sub等运算结果替换成注册ID做为运算,循环第二步,直到运算数结果为0。
    4.倒序依次取地址[ebp+ebx*4-4D8]的值,连接即为注册码。
    5.真假码比较,相等则将[ebp-154]处赋值0x10。

    一组可用注册信息:
    ==========================================
    ID:6543210
    SN:3133340320
    ==========================================

    暴破更改以下位置:

    004015DD                    jnz     short 004015F5 ;  jnz=====>Nop
    004015DE                    jnz     short 004015F5 ;  jnz=====>Nop

    或者:
    0043FBE8              push    ebp            ;  push    ebp=====>mov  al, 1
    0043FBE9             mov     ebp, esp       ;  mov     ebp, esp=====>retn

    -----------------------------------------------------------------------------------------------
    【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

    评分

    参与人数 1威望 +4 收起 理由
    hoy0a1d + 4 赞一个!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2011-10-15 10:43:26 | 显示全部楼层
    截图,:-)

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表