zoukankan      html  css  js  c++  java
  • 手脱nSPack 2.1

    1.载入PEID

    使用核心扫描出的结果

    nSPack 2.1 - 2.5 -> North Star/Liu Xing Ping
    

    2.载入OD,一进来就是一个大跳转,F8跟着走

    00410944 >- E9 327E0000     jmp Aspack变.0041877B              ; //程序入口点
    00410949    C7              ???                               
    0041094A    4E              dec esi
    0041094B    FFC3            inc ebx
    0041094D    FFFF            ???                              
    0041094F    EB 0A           jmp short Aspack变.0041095B
    00410951    E8 40FFFF94     call 95410896
    00410956    FD              std
     

    3.走到这里,看到一个push入栈,下一行ESP定律,下硬件断点,然后shift+F9运行

    0041877B    68 13884100     push Aspack变.00418813
    00418780    E8 84FEFFFF     call Aspack变.00418609             ; //ESP
    00418785    41              inc ecx
    00418786    A4              movs byte ptr es:[edi],byte ptr d>
    00418787    0018            add byte ptr ds:[eax],bl
    00418789    14 3C           adc al,0x3C
    0041878B    38041C          cmp byte ptr ss:[esp+ebx],al
     

    4.落脚后记得删除硬件断点继续F8,看到一个向上跳转,按照常规思维是向上跳转的下一行F4,但是这样会跑飞,再按照常规思维是继续F8让这个向上跳转实现,但是实现后你会发现你继续F8的时候实际上是陷入了一个循环,那么我们要做的是在这个跳转的位置下断点F2,然后shift+F9运行,像最后一次异常法一样,找到最后一次异常。是第57次,58次就跑飞了

    0041861B    89E5            mov ebp,esp                       ; //ESP落脚点
    0041861D    81EC C0000000   sub esp,0xC0
    00418623    89E7            mov edi,esp
    00418625    0375 00         add esi,dword ptr ss:[ebp]
    00418628    8A06            mov al,byte ptr ds:[esi]
    0041862A    46              inc esi                           ; Aspack变.00418814
    0041862B    0FB6C0          movzx eax,al
    0041862E  ^ FF2485 2B814100 jmp dword ptr ds:[eax*4+0x41812B] ; //下一行会跑飞
    00418635    66:8B45 00      mov ax,word ptr ss:[ebp]
     

    5.shift+F9运行57次后取消断点,然后F8一次就落到了这里,你会发现,原先跟上去的时候会陷入的循环,现在没有了,然后继续F8

    004185FC    89EC            mov esp,ebp                       ; //落脚点
    004185FE    5A              pop edx
    004185FF    5A              pop edx
    00418600    5D              pop ebp
    00418601    59              pop ecx
    00418602    9D              popfd
    00418603    58              pop eax
     

    6.F8走到这里的时候,我们发现一个pushad,可以使用ESP定律了,下硬件断点,然后shift+F9运行

    00410B19    9C              pushfd
    00410B1A    60              pushad
    00410B1B    E8 00000000     call Aspack变.00410B20             ; //ESP
    00410B20    5D              pop ebp
    00410B21    81ED DC010000   sub ebp,0x1DC
    00410B27  ^ E9 34FEFFFF     jmp Aspack变.00410960
     

    7.ESP落脚点,删除硬件断点,然后继续F8

    00410B7C    9D              popfd                             ; //落脚点
    00410B7D    EB 4E           jmp short Aspack变.00410BCD
    00410B7F    F4              hlt
    00410B80    FD              std
    00410B81    FFFF            ???                               
    00410B83    8BDD            mov ebx,ebp
    00410B85    81EB 08000000   sub ebx,0x8
     

    8.经过几次F8之后倒了这里,这个就是指向OEP的关键跳了,F8一下

    00410BCD  - E9 EE16FFFF     jmp Aspack变.004022C0              ; //指向OEP的关键跳
    00410BD2    8BB5 48FDFFFF   mov esi,dword ptr ss:[ebp-0x2B8]  
    00410BD8    0BF6            or esi,esi
    00410BDA    0F84 97000000   je Aspack变.00410C77
    00410BE0    8B95 50FDFFFF   mov edx,dword ptr ss:[ebp-0x2B0]
    00410BE6    03F2            add esi,edx      
     

    9.来到OEP,可以脱壳了,需要注意的是,脱壳后需要使用LoadPE重建PE表才能正常运行

    004022C0    E8 970B0000     call Aspack变.00402E5C             ; //OEP
    004022C5    E8 C60A0000     call Aspack变.00402D90             
    004022CA    8BF0            mov esi,eax                       
    004022CC    6A 00           push 0x0
    004022CE    68 B3534000     push Aspack变.004053B3             
    004022D3    56              push esi
    004022D4    E8 570D0000     call Aspack变.00403030
    004022D9    A2 F7594000     mov byte ptr ds:[0x4059F7],al
    004022DE    6A 00           push 0x0
    004022E0    68 BA534000     push Aspack变.004053BA 

    10.运行,查壳

    运行OK,查壳:TASM / MASM (312 ms)
    
  • 相关阅读:
    双指针
    二分查找
    二叉树
    递归思想
    排序算法
    Java常用集合使用方法总结
    攻防世界-PHP文件包含
    正则表达式随笔
    ts 函数
    ts 联合类型
  • 原文地址:https://www.cnblogs.com/JianXu/p/5158374.html
Copyright © 2011-2022 走看看