首页
社区
课程
招聘
[原创]一些简单的壳分析
发表于: 2010-2-3 22:16 18117

[原创]一些简单的壳分析

2010-2-3 22:16
18117
收藏
免费 7
支持
分享
最新回复 (49)
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
26
4010cc……
上传的附件:
  • a.JPG (70.76kb,75次下载)
2010-2-25 11:18
0
雪    币: 1657
活跃值: (291)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
27
// 发现加密算法简单,而且IAT并未被加密了,CALL调用被拿掉了,比较麻烦些~!我觉得这个壳完全可以硬解码
//

// 从入口直接F4这里,上面就是VirtualAlloc获得数据空间,解密代码:
// 停在这里后,已经解密完成.
0040D22E    2B7C24 28       sub     edi, dword ptr [esp+28]
0040D232    897C24 1C       mov     dword ptr [esp+1C], edi
0040D236    61              popad
0040D237    C2 0800         retn    8

// 实际早就觉得这个地方是JMP的关键,果真:
0040D183    50              push    eax
0040D184    53              push    ebx
0040D185    E8 05000000     call    0040D18F
0040D18A    5A              pop     edx
0040D18B    52              push    edx
0040D18C    55              push    ebp
0040D18D  - FFE2            jmp     edx  //跟进去吧~!

// 出现异常
00390090    AD              lods    dword ptr [esi]
00390091    CD20 33F6E810   vxdjump 10E8F633
00390097    0000            add     byte ptr [eax], al

// 重新载入,直接F4,再F7
00390000    E8 16000000     call    0039001B
00390005    8B5C24 0C       mov     ebx, dword ptr [esp+C]
00390009    8BA3 C4000000   mov     esp, dword ptr [ebx+C4]
0039000F    64:8F05 0000000>pop     dword ptr fs:[0]
00390016    83C4 04         add     esp, 4
00390019    EB 14           jmp     short 0039002F
0039001B    64:FF35 0000000>push    dword ptr fs:[0]
00390022    64:8925 0000000>mov     dword ptr fs:[0], esp
00390029    33C9            xor     ecx, ecx
0039002B    99              cdq
0039002C    F7F1            div     ecx                ;这里会有个除法异常
0039002E    E9 E8030000     jmp     0039041B

// 那来这么多异常撒~~!
// 忽略全部异常,在代码段下写入异常,F9段下,发现代码段已经完全解密,发现CALL调用
// 已经被修改了。可能需要还在前面来处理.
// 取消写入断点,按F7就来到了,F8会飞了的.
0040D18F    60              pushad
0040D190    8B7424 24       mov     esi, dword ptr [esp+24]
0040D194    8B7C24 28       mov     edi, dword ptr [esp+28]
0040D198    FC              cld
0040D199    B2 80           mov     dl, 80
0040D19B    33DB            xor     ebx, ebx
0040D19D    A4              movs    byte ptr es:[edi], byte ptr [esi>
0040D19E    B3 02           mov     bl, 2

// 第一次解密的是代码段,第二次解密的是数据段,看明白了
// GO ON~~!按流程是到了解密IAT的时候,果真:
00392845    AA              stos    byte ptr es:[edi]
00392846    61              popad
00392847    8D95 26070000   lea     edx, dword ptr [ebp+726]
0039284D    52              push    edx
0039284E    56              push    esi
0039284F    FF95 73060000   call    dword ptr [ebp+673]        //获得IAT表
00392855    8907            mov     dword ptr [edi], eax        //EDI为IAT地址
00392857    5A              pop     edx
00392858    0FB642 FF       movzx   eax, byte ptr [edx-1]
0039285C    03D0            add     edx, eax
0039285E    42              inc     edx
0039285F    83C7 04         add     edi, 4
00392862    59              pop     ecx
00392863  ^ E2 A9           loopd   short 0039280E
00392865  ^ E9 63FFFFFF     jmp     003927CD        //F2 断点,继续下一个DLL

// IAT表解密完成,004062DC - 0040652C
004062DC  00 00 00 00 00 00 00 00 BB 7A DD 77 27 6C DD 77  ........粃輜'l輜
004062EC  E7 EA DD 77 C8 EF DD 77 F3 BC DF 77 00 00 00 00  珀輜蕊輜蠹遷....
004062FC  25 8D F1 77 71 5A F1 77 CE EC F1 77 70 5B F1 77  %嶑wqZ駑戊駑p[駑
0040630C  D2 4C F4 77 F1 DE F2 77 5F 6E F1 77 9E F4 F2 77  襆魒褶騱_n駑烎騱
0040631C  79 5E F4 77 61 DC F2 77 FF DC F1 77 00 BF F3 77  y^魒a茯w荞w.矿w
0040632C  F2 4D F4 77 DB 5E F1 77 1F 94 F1 77 45 DF F1 77  騇魒踍駑旕wE唏w

// 下面应该怎么到OEP了:
// 有点眼熟~!
003928DB    8B07            mov     eax, dword ptr [edi]  ;unpackme.00401A5C
003928DD    0BC0            or      eax, eax

// 这里没有找OEP,而是逐一替换地址
// EDI表的格式为 地址 KEY
003928D5    8DB5 6D050000   lea     esi, dword ptr [ebp+56D]
003928DB    8B07            mov     eax, dword ptr [edi]   ;EDI这里有个表
003928DD    0BC0            or      eax, eax
003928DF    75 02           jnz     short 003928E3
003928E1    EB 1D           jmp     short 00392900
003928E3    25 FFFFFF7F     and     eax, 7FFFFFFF
003928E8    0385 83060000   add     eax, dword ptr [ebp+683]
003928EE    2B85 8F060000   sub     eax, dword ptr [ebp+68F]
003928F4    8BDE            mov     ebx, esi
003928F6    2BD8            sub     ebx, eax
003928F8    8958 FC         mov     dword ptr [eax-4], ebx
003928FB    83C7 08         add     edi, 8
003928FE  ^ EB DB           jmp     short 003928DB

// 替换完地址就是应该OEP了吧
// ^o^还真是去了OEP了
00392947    89AD A7050000   mov     dword ptr [ebp+5A7], ebp
0039294D    8B85 B3060000   mov     eax, dword ptr [ebp+6B3]
00392953    0385 83060000   add     eax, dword ptr [ebp+683]
00392959    8BF8            mov     edi, eax                         ;

unpackme.004010CC

// 飞向光明之颠~~!
00392987    5D              pop     ebp
00392988    5B              pop     ebx
00392989    59              pop     ecx
0039298A    5A              pop     edx
0039298B    5E              pop     esi
0039298C  - FFE0            jmp     eax                              ;

unpackme.004010CC

// 比较简单的脱壳方法就是DUMP了
// 修复比较麻烦,

// 跑了一圈发现了关键所在,不知道大家明白了吗?
// bp VirtualAlloc:
// 第一次断下是00390000,这个是解密程序,GO ON~!
// 第二次断下是003D0000,这个是代码段,看看原始加密的代码段是否完好~!
//

// ESI -EDI就是将代码段的内容拷贝到003D0000
0040D190    8B7424 24       mov     esi, dword ptr [esp+24]
0040D194    8B7C24 28       mov     edi, dword ptr [esp+28]
0040D198    FC              cld
0040D199    B2 80           mov     dl, 80
0040D19B    33DB            xor     ebx, ebx
0040D19D    A4              movs    byte ptr es:[edi], byte ptr [esi>
0040D19E    B3 02           mov     bl, 2

// 发现这个加密算法并不多难,数据段和代码段都是同一个算法,完全硬解码也不是多困难
//

// 主要是这个函数:
0040D212    02D2            add     dl, dl    ;关键,累加
0040D214    75 05           jnz     short 0040D21B
0040D216    8A16            mov     dl, byte ptr [esi]
0040D218    46              inc     esi
0040D219    12D2            adc     dl, dl    ;关键
0040D21B    C3              retn

// 代码已经解密出来了,哎~~!本以为原始代码没动过,结果还是动了.
003D00E1    56              push    esi
003D00E2    90              nop
003D00E3    E8 00000000     call    003D00E8        ;这里默认指下一条指令
003D00E8    8BF0            mov     esi, eax
003D00EA    8A00            mov     al, byte ptr [eax]
003D00EC    84C0            test    al, al
003D00EE    74 04           je      short 003D00F4
003D00F0    3C 22           cmp     al, 22
003D00F2  ^ 75 ED           jnz     short 003D00E1
003D00F4    803E 22         cmp     byte ptr [esi], 22
003D00F7    75 15           jnz     short 003D010E
003D00F9    46              inc     esi
003D00FA    EB 12           jmp     short 003D010E

// 无意思了~~~~~~~~~~!
2010-2-25 11:48
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
28
多谢梦婷
2010-2-25 12:14
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
29
看来我早已到达过OEP了……
2010-2-25 13:45
0
雪    币: 154
活跃值: (40)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
30
学习之后,发觉分析脱壳有兴趣多了。也明白了一些加密壳以及一些压缩壳的功能以及跳过他的一些原理..

现在终于知道看那些视频为什么下断点以及在那OD(F4); 建议大家多练.. ..  感谢Resty 谢谢
2010-3-1 16:45
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
楼主真的辛苦了。
2010-3-5 14:32
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
谢谢了,下来学习
2010-3-9 11:52
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
先下载下来看看。
2010-3-9 13:18
0
雪    币: 333
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
34
谢谢了。。。。
2010-3-10 10:55
0
雪    币: 97
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
楼主还有没有这方面的经验,多分享一下,学习学习
2010-3-10 14:35
0
雪    币: 445
活跃值: (52)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
36
支持一个
,,,,
2010-3-16 10:59
0
雪    币: 211
活跃值: (326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
能写出来就是好!
2010-3-17 14:11
0
雪    币: 155
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
怎么瑞星报毒啊
backdoor.pcclient.kuz
2010-3-18 06:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
下载学习了,多谢。
2010-3-18 17:45
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
顶楼主一下。学习。
2010-3-18 20:02
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
很不错案例 学习啦
2010-3-24 20:02
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
谢谢提供,好好学习一下,希望能够继续看到这样的好资料。
2010-3-28 06:32
0
雪    币: 86
活跃值: (237)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
43
恩,好好学习之.
2010-3-28 08:38
0
雪    币: 5451
活跃值: (3537)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
44
下来学习一下,不错!
2010-3-28 12:08
0
雪    币: 92
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
pao
45
不错,下载学习感谢楼主啦!
2010-4-27 00:13
0
雪    币: 1719
活跃值: (1237)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
好东西,学习一下。
2010-4-30 09:36
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
学习了-总结到位
2010-5-1 22:49
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
这个不错,下来学习下
2010-5-1 23:49
0
雪    币: 421
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
49
多谢分享,RL!dePacker的Upx壳试了多次都没能脱掉。
2010-5-2 00:59
0
雪    币: 118
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
第7个 楼主的脚本在我这跑步起来 不知道是不是楼主没给我们对的
2010-5-14 10:10
0
游客
登录 | 注册 方可回帖
返回
//