FSG2.0 手动脱壳笔记

来源:互联网 发布:网络维护书籍 编辑:程序博客网 时间:2024/06/02 21:14

    为了逆向研究一款木马,给自己的马提供思路,需要脱壳。用PEID侦测,发现类型为FSG 2.0 -> bart/xt。试着脱了一下,ESP定律,内存镜像法都跑飞了。无奈只好单步跟踪了!这个壳很多朋友反应不好脱,有一定的难度,脱完之后的修复是关键!     用OD载入,

00400154 >  8725 6CD34000   xchg    ds:[40D36C], esp  ;停在这里单步F8

0040015A    61              popad

0040015B    94              xchg    eax, esp           ;ZX_Clear.0040D370

0040015C    55              push    ebp

0040015D    A4              movs    byte ptr es:[edi], byte ptr ds:[>

0040015E    B6 80           mov     dh, 80

00400160    FF13            call    ds:[ebx]

00400162  ^ 73 F9           jnb     short ZX_Clear.0040015D

00400164    33C9            xor     ecx, ecx   ;F4运行到这 F8继续

00400166    FF13            call    ds:[ebx]

00400168    73 16           jnb     short ZX_Clear.00400180

0040016A    33C0            xor     eax, eax

0040016C    FF13            call    ds:[ebx]

0040016E    73 1F           jnb     short ZX_Clear.0040018F

00400170    B6 80           mov     dh, 80

00400172    41              inc     ecx

00400173    B0 10           mov     al, 10

00400175    FF13            call    ds:[ebx]

00400177    12C0            adc     al, al

00400179  ^ 73 FA           jnb     short ZX_Clear.00400175

0040017B    75 3A           jnz     short ZX_Clear.004001B7  ;F4运行到这

0040017D    AA              stos    byte ptr es:[edi]

0040017E  ^ EB E0           jmp     short ZX_Clear.00400160

00400180    FF53 08         call    ds:[ebx+8];F4运行到这

00400183    02F6            add     dh, dh

00400185    83D9 01         sbb     ecx, 1

00400188    75 0E           jnz     short ZX_Clear.00400198

0040018A    FF53 04         call    ds:[ebx+4]

0040018D    EB 24           jmp     short ZX_Clear.004001B3 .........................  遇到向上跳的F4

004001C2    AD              lods    dword ptr ds:[esi]

004001C3    97              xchg    eax, edi

004001C4    AD              lods    dword ptr ds:[esi]

004001C5    50              push    eax

004001C6    FF53 10         call    ds:[ebx+10]

004001C9    95              xchg    eax, ebp

004001CA    8B07            mov     eax, ds:[edi]

004001CC    40              inc     eax

004001CD  ^ 78 F3           js      short ZX_Clear.004001C2

004001CF    75 03           jnz     short ZX_Clear.004001D4;注意这里不能实现这个跳转

004001D1    FF63 0C         jmp     ds:[ebx+C]这里就跳到了程序的OEP

004001D4    50              push    eax

 

 DUMP 出来之后并没有结束,运行出现错误用,修复引入表之后依然出现错误。很多朋友都做到这一步!由于引入表被壳修改了,需要我们手动查找,如图1,具体的方法是找一个API函数,然后F7跟进去,查看JMP后的地址,如这里我查看了GetMessage这个函数,后边的405130包含在引入表的范围之内,在数据串口跟随地址,然后找到上下全0的开始和结束就是整个引入表的范围了 开始修复 左下角的数值 注意有个错误RVA填成40508C了应该是508C,是我们上一步搜到的 Getimports->show Invalid 然后删除非法的 保存就大功告成了

原创粉丝点击