飘云阁(PYG官方论坛)

 找回密码
 加入论坛

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 154|回复: 3

[第十六轮] PYG5.4引导学习小组第十六轮第8关 IDM 爆破分析

[复制链接]
  • TA的每日心情
    奋斗
    2019-3-24 23:08
  • 签到天数: 469 天

    [LV.9]以坛为家II

    发表于 5 天前 | 显示全部楼层 |阅读模式

    首先查壳,程序无壳:
    00.jpg


    =========================================
    破解第一阶段:完成输入假码可以保存成注册信息的功能

    11.png

    根据在软件界面中输入假码进行注册,会弹出错误对话框提示的情况,使用暂停法,可以定位到这里
    0051EC33  |.  C745 FC 00000000         mov [local.1],0x0
    0051EC3A  |.  E8 B6540F00              call IDMan.006140F5                                             ;  取名字
    0051EC3F  |.  85C0                     test eax,eax
    0051EC41  |.  75 2A                    jnz short IDMan.0051EC6D
    0051EC43  |.  8B0D BCB16E00            mov ecx,dword ptr ds:[0x6EB1BC]
    0051EC49  |.  50                       push eax
    0051EC4A  |.  68 4C806B00              push IDMan.006B804C                                             ;  ASCII "Internet Download Manager"
    0051EC4F  |>  8B56 1C                  mov edx,dword ptr ds:[esi+0x1C]
    0051EC52  |.  51                       push ecx                                                        ;  user32.77D321CC
    0051EC53  |>  52                       push edx                                                        ;  ntdll.KiFastSystemCallRet
    0051EC54  |>  E8 A761F3FF              call IDMan.00454E00
    0051EC59  |.  83C4 10                  add esp,0x10
    0051EC5C  |>  8B4D F4                  mov ecx,[local.3]
    0051EC5F  |.  64:890D 00000000         mov dword ptr fs:[0],ecx                                        ;  user32.77D321CC
    0051EC66  |.  5F                       pop edi                                                         ;  00BE9CB0
    0051EC67  |.  5E                       pop esi                                                         ;  00BE9CB0
    0051EC68  |.  5B                       pop ebx                                                         ;  00BE9CB0
    0051EC69  |.  8BE5                     mov esp,ebp
    0051EC6B  |.  5D                       pop ebp                                                         ;  00BE9CB0
    0051EC6C  |.  C3                       retn
    0051EC6D  |>  8D85 C8FEFFFF            lea eax,[local.78]
    0051EC73  |.  6A 32                    push 0x32
    0051EC75  |.  50                       push eax
    0051EC76  |.  68 13040000              push 0x413
    0051EC7B  |.  8BCE                     mov ecx,esi
    0051EC7D  |.  E8 73540F00              call IDMan.006140F5                                             ;  取姓氏
    0051EC82  |.  85C0                     test eax,eax
    0051EC84  |.  75 0E                    jnz short IDMan.0051EC94
    0051EC86  |.  8B0D B8B16E00            mov ecx,dword ptr ds:[0x6EB1B8]
    0051EC8C  |.  50                       push eax
    0051EC8D  |.  68 4C806B00              push IDMan.006B804C                                             ;  ASCII "Internet Download Manager"
    0051EC92  |.^ EB BB                    jmp short IDMan.0051EC4F
    0051EC94  |>  8D85 94FEFFFF            lea eax,[local.91]
    0051EC9A  |.  6A 32                    push 0x32
    0051EC9C  |.  50                       push eax
    0051EC9D  |.  68 A5040000              push 0x4A5
    0051ECA2  |.  8BCE                     mov ecx,esi
    0051ECA4  |.  E8 4C540F00              call IDMan.006140F5                                             ;  取电子邮件


    0051ECA9  |.  85C0                     test eax,eax
    0051ECAB  |.  75 0E                    jnz short IDMan.0051ECBB
    0051ECAD  |.  8B0D B4B16E00            mov ecx,dword ptr ds:[0x6EB1B4]
    0051ECB3  |.  50                       push eax
    0051ECB4  |.  68 4C806B00              push IDMan.006B804C                                             ;  ASCII "Internet Download Manager"
    0051ECB9  |.^ EB 94                    jmp short IDMan.0051EC4F
    0051ECBB  |>  8D85 7CFFFFFF            lea eax,[local.33]
    0051ECC1  |.  6A 32                    push 0x32
    0051ECC3  |.  50                       push eax
    0051ECC4  |.  68 AA040000              push 0x4AA
    0051ECC9  |.  8BCE                     mov ecx,esi
    0051ECCB  |.  E8 25540F00              call IDMan.006140F5                                             ;  取注册码
    0051ECD0  |.  85C0                     test eax,eax
    0051ECD2  |.  75 11                    jnz short IDMan.0051ECE5
    0051ECD4  |.  8B0D B0B16E00            mov ecx,dword ptr ds:[0x6EB1B0]
    0051ECDA  |.  50                       push eax
    0051ECDB  |.  68 4C806B00              push IDMan.006B804C                                             ;  ASCII "Internet Download Manager"
    0051ECE0  |.^ E9 6AFFFFFF              jmp IDMan.0051EC4F


    继续向下跟

    0051EEA5  |> /83FE 05              cmp esi,0x5
    0051EEA8  |. |7D 2F                jge short IDMan.0051EED9                 ;  不跳
    0051EEAA  |. |8A5435 E0            mov dl,byte ptr ss:[ebp+esi-0x20]
    0051EEAE  |. |83C9 FF              or ecx,-0x1
    0051EEB1  |. |33C0                 xor eax,eax
    0051EEB3  |> |83F8 24              /cmp eax,0x24
    0051EEB6  |. |7D 0A                |jge short IDMan.0051EEC2
    0051EEB8  |. |3890 94A66E00        |cmp byte ptr ds:[eax+0x6EA694],dl
    0051EEBE     |75 12                |jnz short IDMan.0051EED2
    0051EEC0  |. |8BC8                 |mov ecx,eax
    0051EEC2  |> |83F9 FF              |cmp ecx,-0x1
    0051EEC5  |. |74 0E                |je short IDMan.0051EED5
    0051EEC7  |. |8D04DB               |lea eax,dword ptr ds:[ebx+ebx*8]
    0051EECA  |. |03CB                 |add ecx,ebx
    0051EECC  |. |46                   |inc esi
    0051EECD  |. |8D1C81               |lea ebx,dword ptr ds:[ecx+eax*4]
    0051EED0  |.^\EB D3                |jmp short IDMan.0051EEA5
    0051EED2  |>  40                   |inc eax
    0051EED3  |.^ EB DE                \jmp short IDMan.0051EEB3
    0051EED5  |>  C645 EF 01           mov byte ptr ss:[ebp-0x11],0x1     ;  为ebp-0x11赋值,应该赋值位0
    0051EED9  |>  33FF                 xor edi,edi
    0051EEDB  |.  33F6                 xor esi,esi
    0051EEDD  |>  83FE 05              cmp esi,0x5
    0051EEE0  |.  7D 2B                jge short IDMan.0051EF0D
    0051EEE2  |.  8A5435 E8            mov dl,byte ptr ss:[ebp+esi-0x18]
    0051EEE6  |.  83C9 FF              or ecx,-0x1
    0051EEE9  |.  33C0                 xor eax,eax
    0051EEEB  |>  83F8 24              /cmp eax,0x24
    0051EEEE  |.  7D 0A                |jge short IDMan.0051EEFA
    0051EEF0  |.  3890 94A66E00        |cmp byte ptr ds:[eax+0x6EA694],dl
    0051EEF6  |.  75 12                |jnz short IDMan.0051EF0A
    0051EEF8  |.  8BC8                 |mov ecx,eax
    0051EEFA  |>  83F9 FF              |cmp ecx,-0x1
    0051EEFD      74 15                |je short IDMan.0051EF14                 ;  不跳
    0051EEFF  |.  8D14FF               |lea edx,dword ptr ds:[edi+edi*8]
    0051EF02  |.  03CF                 |add ecx,edi
    0051EF04  |.  46                   |inc esi
    0051EF05  |.  8D3C91               |lea edi,dword ptr ds:[ecx+edx*4]
    0051EF08  |.^ EB D3                |jmp short IDMan.0051EEDD
    0051EF0A  |>  40                   |inc eax
    0051EF0B  |.^ EB DE                \jmp short IDMan.0051EEEB
    0051EF0D  |>  8A45 EF              mov al,byte ptr ss:[ebp-0x11]
    0051EF10      84C0                 test al,al
    0051EF12  |.  74 18                je short IDMan.0051EF2C                  ;  跳
    0051EF14  |>  8B4D D4              mov ecx,[local.11]
    0051EF17  |.  A1 ACB16E00          mov eax,dword ptr ds:[0x6EB1AC]



    0051EEA8  |. |7D 2F                jge short IDMan.0051EED9                 ;  不跳
    改为
    0051EEA8      90                   nop                                      ;  不跳
    0051EEA9      90                   nop


    0051EED5  |> \C645 EF 01           mov byte ptr ss:[ebp-0x11],0x1           ;  为ebp-0x11赋值,应该赋值位0
    改为
    0051EED5      C645 EF 00           mov byte ptr ss:[ebp-0x11],0x0           ;  为ebp-0x11赋值,应该赋值位0


    0051EEFD     /74 15                |je short IDMan.0051EF14                 ;  不跳
    改为
    0051EEFD      90                   |nop                                     ;  不跳
    0051EEFE      90                   nop






    继续向下走:
    0051EF80  |. /75 0B                jnz short IDMan.0051EF8D                 ;  不跳
    0051EF82  |. |85FF                 test edi,edi
    0051EF84  |. |74 07                je short IDMan.0051EF8D                  ;  不跳
    0051EF86  |. |8A45 EF              mov al,byte ptr ss:[ebp-0x11]
    0051EF89  |. |84C0                 test al,al
    0051EF8B  |. |74 1A                je short IDMan.0051EFA7                  ;  跳
    0051EF8D  |> \8B45 D4              mov eax,[local.11]
    0051EF90  |.  8B15 ACB16E00        mov edx,dword ptr ds:[0x6EB1AC]
    0051EF96  |.  6A 00                push 0x0
    0051EF98  |.  68 4C806B00          push IDMan.006B804C                      ;  ASCII "Internet Download Manager"
    0051EF9D  |.  8B48 1C              mov ecx,dword ptr ds:[eax+0x1C]
    0051EFA0  |.  52                   push edx
    0051EFA1  |.  51                   push ecx
    0051EFA2  |.^ E9 ADFCFFFF          jmp IDMan.0051EC54
    0051EFA7  |>  8D95 7CFFFFFF        lea edx,[local.33]
    0051EFAD  |.  6A 08                push 0x8
    0051EFAF  |.  8D85 70FFFFFF        lea eax,[local.36]
    0051EFB5  |.  52                   push edx
    0051EFB6  |.  50                   push eax
    0051EFB7  |.  E8 04BE0D00          call IDMan.005FADC0
    0051EFBC  |.  83C4 0C              add esp,0xC
    0051EFBF  |.  8D8D 70FFFFFF        lea ecx,[local.36]
    0051EFC5  |.  C685 78FFFFFF 00     mov byte ptr ss:[ebp-0x88],0x0
    0051EFCC  |.  51                   push ecx
    0051EFCD  |.  68 C4806B00          push IDMan.006B80C4                      ;  ASCII "%s"
    0051EFD2  |.  68 24A06E00          push IDMan.006EA024
    0051EFD7  |.  E8 45190F00          call IDMan.00610921
    0051EFDC  |.  A1 E4A16E00          mov eax,dword ptr ds:[0x6EA1E4]
    0051EFE1  |.  83C4 0C              add esp,0xC
    0051EFE4  |.  85C0                 test eax,eax
    0051EFE6  |.  C645 EF 00           mov byte ptr ss:[ebp-0x11],0x0
    0051EFEA  |.  75 27                jnz short IDMan.0051F013                 ;  不跳
    0051EFEC  |.  8D55 DC              lea edx,[local.9]
    0051EFEF  |.  6A 00                push 0x0                                 ; /pDisposition = NULL
    0051EFF1  |.  52                   push edx                                 ; |pHandle = 00000020
    0051EFF2  |.  6A 00                push 0x0                                 ; |pSecurity = NULL
    0051EFF4  |.  68 3F000F00          push 0xF003F                             ; |Access = KEY_ALL_ACCESS
    0051EFF9  |.  6A 00                push 0x0                                 ; |Options = REG_OPTION_NON_VOLATILE
    0051EFFB  |.  6A 00                push 0x0                                 ; |Class = NULL
    0051EFFD  |.  6A 00                push 0x0                                 ; |Reserved = 0x0
    0051EFFF  |.  68 EC7F6B00          push IDMan.006B7FEC                      ; |Subkey = "SOFTWARE\Internet Download Manager"
    0051F004  |.  68 02000080          push 0x80000002                          ; |hKey = HKEY_LOCAL_MACHINE
    0051F009  |.  FF15 14706400        call dword ptr ds:[<&ADVAPI32.RegCreateK>; \RegCreateKeyExA
    0051F00F  |.  85C0                 test eax,eax
    0051F011  |.  74 08                je short IDMan.0051F01B
    0051F013  |>  A1 10A26E00          mov eax,dword ptr ds:[0x6EA210]
    0051F018  |.  8945 DC              mov [local.9],eax
    0051F01B  |>  8DBD FCFEFFFF        lea edi,[local.65]




    0051EF80  |. /75 0B                jnz short IDMan.0051EF8D                 ;  不跳
    改为
    0051EF80      90                   nop                                      ;  不跳
    0051EF81      90                   nop


    0051EF84  |. /74 07                je short IDMan.0051EF8D                  ;  不跳
    改为
    0051EF84      90                   nop                                      ;  不跳
    0051EF85      90                   nop


    0051EF8B  |. /74 1A                je short IDMan.0051EFA7                  ;  跳
    改为
    0051EF8B     /EB 1A                jmp short IDMan.0051EFA7                 ;  跳



    0051EFEA  |. /75 27                jnz short IDMan.0051F013                 ;  不跳
    改为
    0051EFEA      90                   nop                                      ;  不跳
    0051EFEB      90                   nop


    继续执行,右上角窗口出现如下信息
    EAX 00000001
    ECX 011046C8 ASCII "一个假冒的序列号被用来注册 Internet Download Manager。IDM 正在退出..."
    EDX 01138D88 ASCII "12345678900987654321123"
    EBX 00000000
    ESP 00BE9C6C ASCII "n缋"
    EBP 00BE9D7C
    ESI 00000003
    EDI 00BEE510
    EIP 00454E00 IDMan.00454E00
    C 1  ES 0023 32位 0(FFFFFFFF)
    P 0  CS 001B 32位 0(FFFFFFFF)
    A 1  SS 0023 32位 0(FFFFFFFF)
    Z 0  DS 0023 32位 0(FFFFFFFF)
    S 1  FS 003B 32位 7FFDF000(FFF)
    T 0  GS 0000 NULL
    D 0
    O 0  LastErr ERROR_SUCCESS (00000000)
    EFL 00000293 (NO,B,NE,BE,S,PO,L,LE)
    ST0 empty 2.0050911111757158400
    ST1 empty -UNORM 85EC 00000000 BBDD15AC
    ST2 empty 1.3315703911081958400e-307
    ST3 empty 4.6513862107467048960e-4932
    ST4 empty 2.7423683390652462080e-3752
    ST5 empty 4.6513862597629603840e-4932
    ST6 empty 1.0000000000000000000
    ST7 empty 1.0000000000000000000
                   3 2 1 0      E S P U O Z D I
    FST 4000  Cond 1 0 0 0  Err 0 0 0 0 0 0 0 0  (EQ)
    FCW 027F  Prec NEAR,53  掩码    1 1 1 1 1 1

    在堆栈窗口中返回,发现有个跳转可以跳过该提示
    0046C8DC  |.  C645 FC 01           mov byte ptr ss:[ebp-0x4],0x1
    0046C8E0  |.  8945 90              mov [local.28],eax
    0046C8E3  |.  E8 1D6C1A00          call IDMan.00613505
    0046C8E8  |.  8BF0                 mov esi,eax
    0046C8EA  |.  3BF3                 cmp esi,ebx
    0046C8EC  |.  74 1A                je short IDMan.0046C908                  ;  跳过一个假冒序列号提示
    0046C8EE  |.  8B55 DC              mov edx,[local.9]
    0046C8F1  |.  52                   push edx
    0046C8F2  |.  53                   push ebx
    0046C8F3  |.  56                   push esi


    0046C8EC  |. /74 1A                je short IDMan.0046C908                  ;  跳过一个假冒序列号提示
    改为
    0046C8EC     /EB 1A                jmp short IDMan.0046C908                 ;  跳过一个假冒序列号提示


    ===================================================
    破解第二阶段:赋值完成功能注册

    看到关于界面中有trial字样,
    12.png

    将程序载入OD,搜索Trial字符串,发现在trial字符串附近有full字样,总共有好2处吧


    一处是在这里
    004503A9   .  A1 10C86B00                                mov eax,dword ptr ds:[0x6BC810]
    004503AE   .  C645 FC 07                                 mov byte ptr ss:[ebp-0x4],0x7
    004503B2   .  3BC3                                       cmp eax,ebx
    004503B4   .  74 16                                      je short IDMan.004503CC                                    ;  跳
    004503B6   .  8B15 48A06E00                              mov edx,dword ptr ds:[0x6EA048]
    004503BC   .  8D45 C4                                    lea eax,dword ptr ss:[ebp-0x3C]
    004503BF   .  52                                         push edx                                                   ;  IDMan.006E0001
    004503C0   .  68 70D66B00                                push IDMan.006BD670                                        ;  %s Trial
    004503C5   .  50                                         push eax
    004503C6   .  EB 14                                      jmp short IDMan.004503DC
    004503C8   >  8BF0                                       mov esi,eax
    004503CA   .^ EB B3                                      jmp short IDMan.0045037F
    004503CC   >  8B0D 48A06E00                              mov ecx,dword ptr ds:[0x6EA048]
    004503D2   .  8D55 C4                                    lea edx,dword ptr ss:[ebp-0x3C]
    004503D5   .  51                                         push ecx
    004503D6   .  68 68D66B00                                push IDMan.006BD668                                        ;  %s Full
    004503DB   .  52                                         push edx                                                   ;  IDMan.006E0001
    004503DC   >  E8 40051C00                                call IDMan.00610921
    004503E1   .  8B55 EC                                    mov edx,dword ptr ss:[ebp-0x14]


    一处是在这里
    00401C1F  |.  FF15 BC776400                              call dword ptr ds:[<&USER32.GetWindowTextW>]               ; \GetWindowTextW
    00401C25  |.  85C0                                       test eax,eax
    00401C27  |.  0F8E 75020000                              jle IDMan.00401EA2
    00401C2D  |.  68 4CA06E00                                push IDMan.006EA04C
    00401C32  |.  8D4D E8                                    lea ecx,[local.6]
    00401C35  |.  E8 061D2100                                call IDMan.00613940
    00401C3A  |.  A1 10C86B00                                mov eax,dword ptr ds:[0x6BC810]
    00401C3F  |.  C645 FC 08                                 mov byte ptr ss:[ebp-0x4],0x8
    00401C43  |.  85C0                                       test eax,eax
    00401C45  |.  74 07                                      je short IDMan.00401C4E                                    ;  跳
    00401C47  |.  68 CC7F6B00                                push IDMan.006B7FCC                                        ;  Trial
    00401C4C  |.  EB 05                                      jmp short IDMan.00401C53
    00401C4E  |>  68 C47F6B00                                push IDMan.006B7FC4                                        ;  Full
    00401C53  |>  8D4D E8                                    lea ecx,[local.6]
    00401C56  |.  E8 72222100                                call IDMan.00613ECD
    00401C5B  |.  33FF                                       xor edi,edi
    00401C5D  |.  897D D0                                    mov [local.12],edi
    00401C60  |.  897D D8                                    mov [local.10],edi
    00401C63  |.  66:897D D4                                 mov word ptr ss:[ebp-0x2C],di
    00401C67  |.  8B15 A8A16E00                              mov edx,dword ptr ds:[0x6EA1A8]
    00401C6D  |.  8B5D E8                                    mov ebx,[local.6]
    00401C70  |.  8D4D D0                                    lea ecx,[local.12]
    00401C73  |.  C645 FC 09                                 mov byte ptr ss:[ebp-0x4],0x9
    00401C77  |.  8955 DC                                    mov [local.9],edx                                          ;  IDMan.006E0001


    同时仔细观察上面2处代码,发现了一个有意思的常量0x6BC810
    004503A9   .  A1 10C86B00                                mov eax,dword ptr ds:[0x6BC810]
    004503AE   .  C645 FC 07                                 mov byte ptr ss:[ebp-0x4],0x7
    004503B2   .  3BC3                                       cmp eax,ebx
    004503B4   .  74 16                                      je short IDMan.004503CC                                    ;  跳

    00401C3A  |.  A1 10C86B00                                mov eax,dword ptr ds:[0x6BC810]
    00401C3F  |.  C645 FC 08                                 mov byte ptr ss:[ebp-0x4],0x8
    00401C43  |.  85C0                                       test eax,eax
    00401C45  |.  74 07                                      je short IDMan.00401C4E                                    ;  跳


    于是查找所有常量0x6BC810,在每个找到的命令上都下好断点,然后重载并运行程序,
    发现程序在这里第一次出现了常量0x6BC810
    0044EE14  |.  E8 87D70C00                                call IDMan.0051C5A0
    0044EE19      A1 10C86B00                                mov eax,dword ptr ds:[0x6BC810]
    0044EE1E  |.  C645 FC 03                                 mov byte ptr ss:[ebp-0x4],0x3
    经过测试,eax的值为0才行,所以ds:[0x6BC810]的值也必须为0

    本来想在上面一行的call IDMan.0051C5A0中给ds:[0x6BC810]赋值,但是这样程序会崩溃,只好想其他方法赋值。

    方法如下:

    0044EE19      A1 10C86B00                                mov eax,dword ptr ds:[0x6BC810]
    改为
    0044EE19     /E9 C3811F00                                jmp IDMan.00646FE1

    然后到00646FE1输入如下代码:
    00646FE1      C705 10C86B00 00000000                     mov dword ptr ds:[0x6BC810],0x0
    00646FEB    ^ E9 2E7EE0FF                                jmp IDMan.0044EE1E

    为了达到已启动就注册的效果,在测试过程中,发现还需要修改一处:
    0045036F   > \A1 48A16E00                                mov eax,dword ptr ds:[0x6EA148]
    00450374   .  3BC3                                       cmp eax,ebx
    00450376      75 50                                      jnz short IDMan.004503C8                                   ;  不跳
    00450378   .  B8 4CA16E00                                mov eax,IDMan.006EA14C
    0045037D   .  8BF0                                       mov esi,eax
    0045037F   >  50                                         push eax
    00450380   .  E8 8DA51A00                                call IDMan.005FA912
    00450385   .  83C4 04                                    add esp,0x4
    00450388   .  8D5400 02                                  lea edx,dword ptr ds:[eax+eax+0x2]
    0045038C   .  8B45 EC                                    mov eax,dword ptr ss:[ebp-0x14]
    0045038F   .  52                                         push edx                                                   ; /BufSize = 6E0001 (7208961.)
    00450390   .  56                                         push esi                                                   ; |Buffer = 0106A328
    00450391   .  6A 01                                      push 0x1                                                   ; |ValueType = REG_SZ
    00450393   .  53                                         push ebx                                                   ; |Reserved = 0x0
    00450394   .  68 7CD66B00                                push IDMan.006BD67C                                        ; |E
    00450399   .  50                                         push eax                                                   ; |hKey = 0x10623A0
    0045039A   .  FF15 2C706400                              call dword ptr ds:[<&ADVAPI32.RegSetValueExW>]             ; \RegSetValueExW
    004503A0   .  8B0D A0526E00                              mov ecx,dword ptr ds:[0x6E52A0]                            ;  IDMan.006E52B4
    004503A6   .  894D C4                                    mov dword ptr ss:[ebp-0x3C],ecx
    004503A9   .  A1 10C86B00                                mov eax,dword ptr ds:[0x6BC810]
    004503AE   .  C645 FC 07                                 mov byte ptr ss:[ebp-0x4],0x7
    004503B2   .  3BC3                                       cmp eax,ebx
    004503B4   .  74 16                                      je short IDMan.004503CC                                    ;  跳
    004503B6   .  8B15 48A06E00                              mov edx,dword ptr ds:[0x6EA048]
    004503BC   .  8D45 C4                                    lea eax,dword ptr ss:[ebp-0x3C]
    004503BF   .  52                                         push edx                                                   ;  IDMan.006E0001
    004503C0   .  68 70D66B00                                push IDMan.006BD670                                        ;  %s Trial
    004503C5   .  50                                         push eax
    004503C6   .  EB 14                                      jmp short IDMan.004503DC
    004503C8   >  8BF0                                       mov esi,eax
    004503CA   .^ EB B3                                      jmp short IDMan.0045037F
    004503CC   >  8B0D 48A06E00                              mov ecx,dword ptr ds:[0x6EA048]
    004503D2   .  8D55 C4                                    lea edx,dword ptr ss:[ebp-0x3C]
    004503D5   .  51                                         push ecx
    004503D6   .  68 68D66B00                                push IDMan.006BD668                                        ;  %s Full
    004503DB   .  52                                         push edx                                                   ;  IDMan.006E0001
    004503DC   >  E8 40051C00                                call IDMan.00610921

    就是将
    00450376     /75 50                                      jnz short IDMan.004503C8                                   ;  不跳
    改为
    00450376      90                                         nop                                                        ;  不跳
    00450377      90                                         nop





    =========================================
    破解第三阶段:测试成果(经过测试注册码必须用下面的23位的12345678900987654321123才可以注册成功)

    经过第一阶段和第二阶段的修改,成果如下:
    输入如下信息:
    Panpan8848
    Chinapyg.com
    Panpan8848@chinapyg.com
    12345678900987654321123



    得到如下的效果:

    999.jpg

    9999.jpg

    9898.jpg



    评分

    参与人数 2威望 +2 飘云币 +2 收起 理由
    侠骨留香 + 1 + 1 PYG有你更精彩!
    yjd + 1 + 1 PYG有你更精彩!

    查看全部评分

  • TA的每日心情
    奋斗
    2019-3-24 23:08
  • 签到天数: 469 天

    [LV.9]以坛为家II

     楼主| 发表于 4 天前 | 显示全部楼层
    ========================================
    补充说明:

    经过上面的修改,第一次注册之后,放那里没问题,什么提示、弹出都没有。

    但是只要退出程序,然后重新打开
    则提示:
    7777.png

    去掉这个提示的方法是:
    使用暂停法,找到下面这个地方
    0046337D    /0F87 890C0000          jaIDMan.0046400C                                           ;  bu
    00463383    |0F84 1C0A0000          jeIDMan.00463DA5                                           ;  bu
    00463389  . |8D86 94EBFFFF          leaeax,dword ptr ds:[esi-0x146C]
    0046338F  . |83F8 04                cmpeax,0x4
    00463392    |0F87 381D0000          jaIDMan.004650D0                                           ;  tiao
    00463398  . |FF2485 24534600        jmpdword ptr ds:[eax*4+0x465324]                            ;  IDMan.004634AB
    0046339F  > |C745 0C 4CA26400       movdword ptr ss:[ebp+0xC],IDMan.0064A24C                    ;  Case 1470 of switch 0045EB24


    00463392    |0F87 381D0000          jaIDMan.004650D0                                           ;  tiao
    改为
    00463392    |E9 391D0000            jmpIDMan.004650D0                                          ;  tiao
    00463397    |90                     nop


    则程序打开就没有fake serial number提示了,

    但是程序打开后,过几秒钟就自动退出了。

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-3-24 23:08
  • 签到天数: 469 天

    [LV.9]以坛为家II

     楼主| 发表于 4 天前 | 显示全部楼层
    继续破解。

    尝试下退出断点
    BP ExitProcess
    但是好像不怎么管用

    经过网友的提醒和看网友的视频,因为窗口不是立即就关闭的,而是过几秒钟才关闭,所以应该有个时钟控制,所以直接下断点
    bp KillTimer

    很快就能定位到这里
    0046DD30     /0F87 D2120000 ja IDMan---.0046F008                     ;  跳
    0046DD36   . |33C9          xor ecx,ecx
    0046DD38   . |8A88 A0F04600 mov cl,byte ptr ds:[eax+0x46F0A0]
    0046DD3E   . |FF248D 24F046>jmp dword ptr ds:[ecx*4+0x46F024]        ;  IDMan---.0046DD45
    0046DD45   > |8B56 1C       mov edx,dword ptr ds:[esi+0x1C]          ;  Case 1 of switch 0046DD23
    0046DD48   . |33DB          xor ebx,ebx
    0046DD4A   . |6A 01         push 0x1                                 ; /TimerID = 0x1
    0046DD4C   . |52            push edx                                 ; |hWnd = 0002043A ('Internet Download Manager 6.33',class='#32770')
    0046DD4D   . |895D FC       mov dword ptr ss:[ebp-0x4],ebx           ; |
    0046DD50   . |FF15 44776400 call dword ptr ds:[<&USER32.KillTimer>]  ; \KillTimer
    0046DD56   . |889E 04020000 mov byte ptr ds:[esi+0x204],bl
    0046DD5C   . |8B86 28020000 mov eax,dword ptr ds:[esi+0x228]
    0046DD62   . |3D B8880000   cmp eax,0x88B8
    0046DD67   . |0F8D 9B000000 jge IDMan---.0046DE08
    0046DD6D   . |8B96 C8010000 mov edx,dword ptr ds:[esi+0x1C8]         ;  IDMan---.006E9DD8



    修改方法是,将
    0046DD30     /0F87 D2120000 ja IDMan---.0046F008                     ;  跳
    改为
    0046DD30     /E9 D3120000   jmp IDMan---.0046F008                    ;  跳
    0046DD35     |90            nop


    至此,大功告成。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-7-9 18:21
  • 签到天数: 948 天

    [LV.10]以坛为家III

    发表于 4 天前 来自手机 | 显示全部楼层
    强!膜拜学习一下!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入论坛

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

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