手动脱壳之-胡乱一脱

我是胡乱脱壳,胡乱写出来的,如果有不对的地方请你笑过我以后,告诉学生啊!
前些天朋友发来一个程序让我帮着破解一下,我就答应了,发过来看了一下是vb写的一个顶贴器。真的没有当会事,于是用OD载入看了一下,直觉告诉我这东西一定加了壳,因为以前从来没有手动脱过,于是又点郁闷了,用peid看了一下什么也没查出来。既然答应朋友了怎么也要试一下。毕竟看过很多关于脱壳的文章姑且试试吧。
用OD加载程序如下
00409EF1 >/$  0FB7FD        movzx   edi, bp
00409EF4  |.  4D            dec     ebp
00409EF5  |.  C7C3 51D053CA mov     ebx, CA53D051
00409EFB  |.  4D            dec     ebp
00409EFC  |.  F7D3          not     ebx
00409EFE  |.  69C8 FCCF56C1 imul    ecx, eax, C156CFFC
00409F04  |.  FEC8          dec     al
00409F06  |.  11EE          adc     esi, ebp
00409F08  |.  0FAFEF        imul    ebp, edi
00409F0B  |.  FFC3          inc     ebx
00409F0D  |.  0FA5C1        shld    ecx, eax, cl
00409F10  |.  85C3          test    ebx, eax
00409F12  |.  0FA3FD        bt      ebp, edi
00409F15  |.  3E:0FA4C1 7C  shld    ecx, eax, 7C
00409F1A  |.  8BF5          mov     esi, ebp
00409F1C  |.  84F1          test    cl, dh
00409F1E  |.  0FC1DA        xadd    edx, ebx
00409F21  |.  85DA          test    edx, ebx
00409F23  |.  13F5          adc     esi, ebp
00409F25  |.  69EF 53CA6594 imul    ebp, edi, 9465CA53
00409F2B  |.  C7C6 352457BE mov     esi, BE572435
00409F31  |.  23CF          and     ecx, edi
00409F33  |.  D1D6          rcl     esi, 1
00409F35  |.  C6C4 93       mov     ah, 93
00409F38  |.  86D5          xchg    ch, dl
00409F3A  |.  C1E1 AC       shl     ecx, 0AC
00409F3D  |.  D1D6          rcl     esi, 1
00409F3F  |.  F3:           prefix rep:
00409F40  |.  0FA4D3 39     shld    ebx, edx, 39
00409F44  |.  84D5          test    ch, dl
00409F46  |.  EB 01         jmp     short runskydt.00409F49
00409F48  |   85            db      85
00409F49  |>  87F1          xchg    ecx, esi
00409F4B  |.  8D2D 138A2554 lea     ebp, dword ptr ds:[54258A13]
00409F51  |.  8BF5          mov     esi, ebp
00409F53  |.  0FA3FD        bt      ebp, edi
00409F56  |.  35 814003BA   xor     eax, BA034081
00409F5B  |.  80DC 53       sbb     ah, 53
00409F5E  |.  EB 01         jmp     short runskydt.00409F61
00409F60  |   21            db      21                               ;  CHAR '!'
00409F61  |>  B0 7F         mov     al, 7F
00409F63  |.  C6C6 ED       mov     dh, 0ED
00409F66  |.  13F5          adc     esi, ebp
00409F68  |.  1C 3B         sbb     al, 3B
00409F6A  |.  86D5          xchg    ch, dl
00409F6C  |.  0FABC1        bts     ecx, eax
00409F6F  |.  EB 01         jmp     short runskydt.00409F72
00409F71  |   15            db      15
00409F72  |>  85C3          test    ebx, eax
00409F74  |.  F6DC          neg     ah
00409F76  |.  0FA5D3        shld    ebx, edx, cl
00409F79  |.  0FBCC8        bsf     ecx, eax
00409F7C  |.  11EE          adc     esi, ebp
00409F7E  |.  0FACFD BB     shrd    ebp, edi, 0BB
00409F82  |.  0FBDD5        bsr     edx, ebp
00409F85  |.  0FC9          bswap   ecx
00409F87  |.  F7C0 9504B79E test    eax, 9EB70495
00409F8D  |.  0FA5C1        shld    ecx, eax, cl
00409F90  |.  0FB7FD        movzx   edi, bp
00409F93  |.  EB 01         jmp     short runskydt.00409F96
00409F95  |   F3            db      F3
00409F96  |>  65:25 8C1F669>and     eax, 91661F8C
00409F9C  |.  69C3 6F7661A0 imul    eax, ebx, A061766F
00409FA2  |.  0FB7D9        movzx   ebx, cx
00409FA5  |.  21F9          and     ecx, edi
00409FA7  |.  0FC1F1        xadd    ecx, esi
00409FAA  |.  80DC 7B       sbb     ah, 7B
00409FAD  |.  65:D1E1       shl     ecx, 1
00409FB0  |.  C7C6 55C4775E mov     esi, 5E77C455
00409FB6  |.  F2:           prefix repne:
00409FB7  |.  F7D6          not     esi
00409FB9  |.  65:89CB       mov     ebx, ecx
00409FBC  |.  81E1 4CDF2651 and     ecx, 5126DF4C
00409FC2  |.  0FADD8        shrd    eax, ebx, cl
00409FC5  |.  EB 01         jmp     short runskydt.00409FC8
00409FC7  |>  C3            retn
00409FC8  |>  BA 709D4000   mov     edx, runskydt.00409D70
00409FCD  |.  83EC 04       sub     esp, 4
00409FD0  |.  891424        mov     dword ptr ss:[esp], edx
00409FD3  |.  B9 A8000000   mov     ecx, 0A8
00409FD8  |>  8132 7C1F1700 /xor     dword ptr ds:[edx], 171F7C
00409FDE  |.  50            |push    eax
00409FDF  |.  B8 04000000   |mov     eax, 4
00409FE4  |.  50            |push    eax
00409FE5  |.  031424        |add     edx, dword ptr ss:[esp]
00409FE8  |.  58            |pop     eax
00409FE9  |.  58            |pop     eax
00409FEA  |.  83E9 03       |sub     ecx, 3
00409FED  |.^ E2 E9         /loopd   short runskydt.00409FD8
00409FEF  /.^ EB D6         jmp     short runskydt.00409FC7

 

估计要是牛人看了这个就知道是什么壳了,不过我真的不知道从哪里下手,不过希望还是有的,脱不好还脱不坏吗?忽然想起来一些普通壳的加壳原理,总是把程序加密后放在一个程序段里,然后从程序段里解密出来于是在OD中按了一下[M]看到程序有如下段。
看到这个程序有个MYXy段挺可疑的,就在该段上下了访问断点。程序停在下面代码处。


00409D88   > /8A06          mov     al, byte ptr ds:[esi]  ‘程序停在该处
00409D8A   . |46            inc     esi
00409D8B   . |8807          mov     byte ptr ds:[edi], al
00409D8D   . |47            inc     edi
00409D8E   > |01DB          add     ebx, ebx
00409D90   . |75 07         jnz     short runskydt.00409D99
00409D92   > |8B1E          mov     ebx, dword ptr ds:[esi]
00409D94   . |83EE FC       sub     esi, -4
00409D97   . |11DB          adc     ebx, ebx
00409D99   >^/72 ED         jb      short runskydt.00409D88
00409D9B   .  B8 01000000   mov     eax, 1
00409DA0   >  01DB          add     ebx, ebx
00409DA2   .  75 07         jnz     short runskydt.00409DAB
00409DA4   .  8B1E          mov     ebx, dword ptr ds:[esi]
00409DA6   .  83EE FC       sub     esi, -4
00409DA9   .  11DB          adc     ebx, ebx
00409DAB   >  11C0          adc     eax, eax
00409DAD   .  01DB          add     ebx, ebx
00409DAF   .^ 73 EF         jnb     short runskydt.00409DA0
00409DB1   .  75 09         jnz     short runskydt.00409DBC
00409DB3   .  8B1E          mov     ebx, dword ptr ds:[esi]
00409DB5   .  83EE FC       sub     esi, -4
00409DB8   .  11DB          adc     ebx, ebx
00409DBA   .^ 73 E4         jnb     short runskydt.00409DA0
00409DBC   >  31C9          xor     ecx, ecx
00409DBE   .  83E8 03       sub     eax, 3
00409DC1   .  72 0D         jb      short runskydt.00409DD0
00409DC3   .  C1E0 08       shl     eax, 8
00409DC6   .  8A06          mov     al, byte ptr ds:[esi]
00409DC8   .  46            inc     esi
00409DC9   .  83F0 FF       xor     eax, FFFFFFFF
00409DCC   .  74 74         je      short runskydt.00409E42
00409DCE   .  89C5          mov     ebp, eax
00409DD0   >  01DB          add     ebx, ebx
00409DD2   .  75 07         jnz     short runskydt.00409DDB
00409DD4   .  8B1E          mov     ebx, dword ptr ds:[esi]
00409DD6   .  83EE FC       sub     esi, -4
00409DD9   .  11DB          adc     ebx, ebx
00409DDB   >  11C9          adc     ecx, ecx
00409DDD   .  01DB          add     ebx, ebx
00409DDF   .  75 07         jnz     short runskydt.00409DE8
00409DE1   .  8B1E          mov     ebx, dword ptr ds:[esi]
00409DE3   .  83EE FC       sub     esi, -4
00409DE6   .  11DB          adc     ebx, ebx
00409DE8   >  11C9          adc     ecx, ecx
00409DEA   .  75 20         jnz     short runskydt.00409E0C
00409DEC   .  41            inc     ecx
00409DED   >  01DB          add     ebx, ebx
00409DEF   .  75 07         jnz     short runskydt.00409DF8
00409DF1   .  8B1E          mov     ebx, dword ptr ds:[esi]
00409DF3   .  83EE FC       sub     esi, -4
00409DF6   .  11DB          adc     ebx, ebx
00409DF8   >  11C9          adc     ecx, ecx
00409DFA   .  01DB          add     ebx, ebx
00409DFC   .^ 73 EF         jnb     short runskydt.00409DED
00409DFE   .  75 09         jnz     short runskydt.00409E09
00409E00   .  8B1E          mov     ebx, dword ptr ds:[esi]
00409E02   .  83EE FC       sub     esi, -4
00409E05   .  11DB          adc     ebx, ebx
00409E07   .^ 73 E4         jnb     short runskydt.00409DED
00409E09   >  83C1 02       add     ecx, 2
00409E0C   >  81FD 00F3FFFF cmp     ebp, -0D00
00409E12   .  83D1 01       adc     ecx, 1
00409E15   .  8D142F        lea     edx, dword ptr ds:[edi+ebp]
00409E18   .  83FD FC       cmp     ebp, -4
00409E1B   .  76 0F         jbe     short runskydt.00409E2C
00409E1D   >  8A02          mov     al, byte ptr ds:[edx]
00409E1F   .  42            inc     edx
00409E20   .  8807          mov     byte ptr ds:[edi], al
00409E22   .  47            inc     edi
00409E23   .  49            dec     ecx
00409E24   .^ 75 F7         jnz     short runskydt.00409E1D
00409E26   .^ E9 63FFFFFF   jmp     runskydt.00409D8E
00409E2B      90            nop
00409E2C   >  8B02          mov     eax, dword ptr ds:[edx]
00409E2E   .  83C2 04       add     edx, 4
00409E31   .  8907          mov     dword ptr ds:[edi], eax
00409E33   .  83C7 04       add     edi, 4
00409E36   .  83E9 04       sub     ecx, 4
00409E39   .^ 77 F1         ja      short runskydt.00409E2C
00409E3B   .  01CF          add     edi, ecx
00409E3D   .^ E9 4CFFFFFF   jmp     runskydt.00409D8E
00409E42   >  5E            pop     esi
00409E43   .  89F7          mov     edi, esi
00409E45   .  B9 02000000   mov     ecx, 2
00409E4A   >  8A07          mov     al, byte ptr ds:[edi]
00409E4C   .  47            inc     edi
00409E4D   .  2C E8         sub     al, 0E8
00409E4F   >  3C 01         cmp     al, 1
00409E51   .^ 77 F7         ja      short runskydt.00409E4A
00409E53   .  803F 01       cmp     byte ptr ds:[edi], 1
00409E56   .^ 75 F2         jnz     short runskydt.00409E4A
00409E58   .  8B07          mov     eax, dword ptr ds:[edi]
00409E5A   .  8A5F 04       mov     bl, byte ptr ds:[edi+4]
00409E5D   .  66:C1E8 08    shr     ax, 8
00409E61   .  C1C0 10       rol     eax, 10
00409E64   .  86C4          xchg    ah, al
00409E66   .  29F8          sub     eax, edi
00409E68   .  80EB E8       sub     bl, 0E8
00409E6B   .  01F0          add     eax, esi
00409E6D   .  8907          mov     dword ptr ds:[edi], eax
00409E6F   .  83C7 05       add     edi, 5
00409E72   .  89D8          mov     eax, ebx
00409E74   .^ E2 D9         loopd   short runskydt.00409E4F
00409E76   .  8DBE 00700000 lea     edi, dword ptr ds:[esi+7000]
00409E7C   >  8B07          mov     eax, dword ptr ds:[edi]
00409E7E   .  09C0          or      eax, eax
00409E80   .  74 45         je      short runskydt.00409EC7
00409E82   .  8B5F 04       mov     ebx, dword ptr ds:[edi+4]
00409E85   .  8D8430 D09800>lea     eax, dword ptr ds:[eax+esi+98D0]
00409E8C   .  01F3          add     ebx, esi
00409E8E   .  50            push    eax
00409E8F   .  83C7 08       add     edi, 8
00409E92   .  FF96 0C990000 call    near dword ptr ds:[esi+990C]
00409E98   .  95            xchg    eax, ebp
00409E99   >  8A07          mov     al, byte ptr ds:[edi]
00409E9B   .  47            inc     edi
00409E9C   .  08C0          or      al, al
00409E9E   .^ 74 DC         je      short runskydt.00409E7C
00409EA0   .  89F9          mov     ecx, edi
00409EA2   .  79 07         jns     short runskydt.00409EAB
00409EA4   .  0FB707        movzx   eax, word ptr ds:[edi]
00409EA7   .  47            inc     edi
00409EA8   .  50            push    eax
00409EA9   .  47            inc     edi
00409EAA      B9            db      B9
00409EAB   .  57            push    edi
00409EAC   .  48            dec     eax
00409EAD   .  F2:AE         repne   scas byte ptr es:[edi]
00409EAF   .  55            push    ebp
00409EB0   .  FF96 10990000 call    near dword ptr ds:[esi+9910]
00409EB6   .  09C0          or      eax, eax
00409EB8   .  74 07         je      short runskydt.00409EC1
00409EBA   .  8903          mov     dword ptr ds:[ebx], eax
00409EBC   .  83C3 04       add     ebx, 4
00409EBF   .^ EB D8         jmp     short runskydt.00409E99
00409EC1   >  FF96 14990000 call    near dword ptr ds:[esi+9914]
00409EC7   >  61            popad       ‘露出马脚了
00409EC8   .- E9 E371FFFF   jmp     runskydt.004010B0  ‘估计这个jmp就飞到OEP了

 

程序断在00409D88处时我单步跟了一下好多循环,基本都是修改MYXy段里的数据,估计应该是解密过程了,所以感到希望就在前方了,跳出几次循环后,向下拉了一下看到popad。记得以前看过popad就是指引希望的炮塔的,何况后边还真有一个jmp,跳的还挺远的,继续跟进吧。程序跳到004010B0处,我想就是传说的OEP了吧,这个代码很有标志性吧,其实我没看过vb的程序,不过感觉就应该是这样的了, ThunRTMain我还是可以理解的! 直接Dump了! 用peid看了一下, 原型毕露了!


004010AA  - FF25 3C104000   jmp     near dword ptr ds:[40103C]       ; MSVBVM60.ThunRTMain
004010B0    68 6C194000     push    runskydt.0040196C
004010B5    E8 F0FFFFFF     call    runskydt.004010AA                ; jmp 到 MSVBVM60.ThunRTMain
004010BA    0000            add     byte ptr ds:[eax], al

 

第一次脱这个不知道名的壳,真的是在迷茫中回忆着前人的文章就脱了。挺有意思。等我破了这个程序看看有没有什么值得写的 再写些什么上来 呵呵!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值