美文网首页
《第3期-12 巧妙的处理暗桩》学习笔记

《第3期-12 巧妙的处理暗桩》学习笔记

作者: 听说我在混吃等死 | 来源:发表于2018-11-19 20:49 被阅读0次

    一、学习了一下脱壳
    ESP定律脱壳
    1、pushad后,对ESP下硬件断点。在OD中选中ESP,右键——数据窗口中跟随。来到数据窗口中,选中几个字节后右键——断点——硬件访问——Dword。
    2、F9运行,暂停下来后,用F8单步,注意看popad,过了popad再跳转或返回就是OEP了。

    F8单步法
    F8单步,碰到向上的跳转直接在下面F4,碰到跑飞的call,下断点,再次运行到这个callF7进入后再F8单步,直到找到OEP

    二、破解过程
    1、因为程序会突然退出,所以下API断点ExitProcess
    2、找到了导致程序退出的地方

    004046F4  |. /75 1A         |jnz     short 00404710
    004046F6  |. |833D 24204E00>|cmp     dword ptr ds:[0x4E2024],0x0
    004046FD  |. |74 06         |je      short 00404705
    004046FF  |. |FF15 24204E00 |call    dword ptr ds:[0x4E2024]
    00404705  |> |A1 00F04D00   |mov     eax,dword ptr ds:[0x4DF000]
    0040470A  |. |50            |push    eax                             ; /ExitCode => 0x0
    0040470B  |. |E8 44CBFFFF   |call    <jmp.&kernel32.ExitProcess>     ; \ExitProcess
    00404710  |> \8B03          |mov     eax,dword ptr ds:[ebx]
    

    可是更改跳转后总是程序崩溃。

    3、通过看谁调用了上面第2步中的代码,我找到了关键的call和关键跳

    004DB9DE   .  E8 11D3FFFF          call    004D8CF4                         ;  影响退出的关键call
    004DB9E3   .  84C0                 test    al,al
    004DB9E5   .  74 14                je      short 004DB9FB  ;关键跳
    004DB9E7   .  33D2                 xor     edx,edx
    004DB9E9   .  8B83 AC030000        mov     eax,dword ptr ds:[ebx+0x3AC]
    004DB9EF   .  E8 24C6FFFF          call    004D8018
    004DB9F4   .  E8 4F8CF2FF          call    00404648     ; 第2步中的call
    

    更改关键跳为jmp后还是出错。

    4、去看视频
    5、第3步中的代码找对了,关键跳修改的也对。就是我没有在修改后程序崩溃的情况下F8单步调试,看看到底是哪里导致的崩溃。原来后面有很多类似的代码,都调用了00404648,把这些代码中的关键跳都修改了就可以了。
    把修改后的代码保存出来后运行,发现可以看到程序的主界面了。可是一点击”软件注册“,程序就又被删除了。
    这说明还是有暗桩没有处理完。
    6、这里作者给出了一种非常考验手速的方法。把修改后的程序载入OD后点击”软件注册“,立马回到OD中按F12,让程序暂停下来。要是慢了话,程序就删除了。我也是试了两回才成功。
    断下来后按Alt+F9返回用户代码,F8单步,不久就发现又调用了00404648。那么就找到了另一处暗桩。
    把修改保存出来。

    相关文章

      网友评论

          本文标题:《第3期-12 巧妙的处理暗桩》学习笔记

          本文链接:https://www.haomeiwen.com/subject/wderfqtx.html