首页
社区
课程
招聘
[求助]一个CRACKME脱壳分析!求告知是什么壳
发表于: 2016-3-21 06:05 7184

[求助]一个CRACKME脱壳分析!求告知是什么壳

2016-3-21 06:05
7184
新手学逆向 拿到了junzz在09年做的一个CRACKME
样本加密过了,附加调试找到了KEY算法和关键跳-----这不是重点
因为想DUMP出来,先用各种查壳工具都查不出来是什么壳
算了 自己手动搞吧-----09年的东西 想必强度不是很大,后来也证明我的猜测是正确的。

先是用了各种查壳工具 都不知道是什么壳(希望各位日壳千万的大神帮忙看看这是什么壳)。

0047A034 >  60              pushad
0047A035    9C              pushfd
0047A036    E8 8E000000     call CrackMe.0047A0C9   
0047A03B    C3              retn
0047A03C    EB 06           jmp short CrackMe.0047A044

入口明显的压站 对ESP下硬访

中断到

002E087A    E8 980D0000     call 002E1617    断在这里
002E087F    51              push ecx
002E0880    E9 600C0000     jmp 002E14E5
002E0885    83C6 04         add esi,0x4
002E0888    E8 D4FCFFFF     call 002E0561

F7跟进 call 002E1617

002E1617    8D6424 04       lea esp,dword ptr ss:[esp+0x4]
002E161B    61              popad
002E161C  ^ E9 E7F9FFFF     jmp 002E1008

002E1008  - FFE0            jmp eax                                  ; CrackMe.0047148B ----------飞向光明
002E100A    8D6424 04       lea esp,dword ptr ss:[esp+0x4]
002E100E    6A 00           push 0x0
002E1010    E8 8EFAFFFF     call 002E0AA3

jmp eax 跳向OEP

0047148B  /.  55            push ebp
0047148C  |.  8BEC          mov ebp,esp
0047148E  |.  6A FF         push -0x1
00471490  |.  68 28514700   push CrackMe.00475128
00471495  |.  68 58214700   push CrackMe.00472158                    ;  SE 处理程序安装
0047149A  |.  64:A1 0000000>mov eax,dword ptr fs:[0]
004714A0  |.  50            push eax                                 ;  CrackMe.0047148B
004714A1  |.  64:8925 00000>mov dword ptr fs:[0],esp
004714A8  |.  83EC 58       sub esp,0x58
004714AB  |.  53            push ebx
004714AC  |.  56            push esi
004714AD  |.  57            push edi
004714AE  |.  8965 E8       mov [local.6],esp
004714B1  |.  FF15 80504700 call dword ptr ds:[0x475080]
004714B7  |.  33D2          xor edx,edx                              ;  CrackMe.<ModuleEntryPoint>

然后看IAT

搜索FF 15

004714B1  |.  FF15 80504700 call dword ptr ds:[0x475080]

我们看  ds:[0x475080]=3b5039

明显 IAT被处理了

数据窗口中先确定下长度

00475000  003B2264                   d";.  ---start
*
*
*
*
0047511C  003B052F                   /;.  ASCII "h\n"  ----end

然后我们跟进
004714B1  |.  FF15 80504700 call dword ptr ds:[0x475080]看看IAT的调用

003B5039    68 0A000080     push 0x8000000A
003B503E    53              push ebx
003B503F    57              push edi
003B5040    E8 00000000     call 003B5045
003B5045    5B              pop ebx                                  ; kernel32.GetVersion
003B5046    81EB 0C104000   sub ebx,0x40100C
003B504C    81C3 24104000   add ebx,0x401024
003B5052    8BFB            mov edi,ebx
003B5054    8B3F            mov edi,dword ptr ds:[edi]
003B5056    897C24 08       mov dword ptr ss:[esp+0x8],edi
003B505A    5F              pop edi                                  ; kernel32.GetVersion
003B505B    5B              pop ebx                                  ; kernel32.GetVersion
003B505C    C3              retn

retn到  kernel32.GetVersion

地址是
74EE4467 > /EB 05           jmp short <jmp.&API-MS-Win-Core-SysInfo->
74EE4469   |90              nop
74EE446A   |90              nop
74EE446B   |90              nop
74EE446C   |90              nop
74EE446D   |90              nop
74EE446E  -\FF25 0C0CEE74   jmp dword ptr ds:[<&API-MS-Win-Core-SysI>; KernelBa.GetVersion
74EE4474    8B4D A8         mov ecx,dword ptr ss:[ebp-0x58]
74EE4477    8908            mov dword ptr ds:[eax],ecx
74EE4479    8B4D AC         mov ecx,dword ptr ss:[ebp-0x54]
74EE447C    8948 04         mov dword ptr ds:[eax+0x4],ecx
74EE447F    E9 983E0000     jmp kernel32.74EE831C
74EE4484    8B55 D4         mov edx,dword ptr ss:[ebp-0x2C]          ; CrackMe.0047A41D
74EE4487    8910            mov dword ptr ds:[eax],edx               ; CrackMe.<ModuleEntryPoint>
74EE4489    E9 783E0000     jmp kernel32.74EE8306

于是我们手动修复这条IAT

把ds:[0x475080]=3b5039
改成ds:[0x475080]=74ee446e

这一条就修复完成了

但是手动修复IAT实在工程量太过庞大

想请各位高手看看 这是什么壳 有没有现成的修复工具(我不是伸手党啦~~~)

下面发几个该壳的一些特征
首先是壳的入口

0047A034 >  60              pushad
0047A035    9C              pushfd
0047A036    E8 8E000000     call CrackMe.0047A0C9
0047A03B    C3              retn
0047A03C    EB 06           jmp short CrackMe.0047A044
0047A03E    44              inc esp
0047A03F    EB 0F           jmp short CrackMe.0047A050
0047A041    44              inc esp
0047A042    EB 0F           jmp short CrackMe.0047A053
0047A044    8B1C24          mov ebx,dword ptr ss:[esp]               ; kernel32.74EE33CA

其次是飞向OEP的特征

jmp eax

最后是对GetVersion的处理

003B5045    5B              pop ebx                                  ; kernel32.GetVersion
003B5046    81EB 0C104000   sub ebx,0x40100C
003B504C    81C3 24104000   add ebx,0x401024
003B5052    8BFB            mov edi,ebx
003B5054    8B3F            mov edi,dword ptr ds:[edi]
003B5056    897C24 08       mov dword ptr ss:[esp+0x8],edi

小弟冰天雪地裸身三百六十度后空翻跪地求指导这到底是啥壳~~

手动修复IAT的工程量实在太大啊。。。。。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 144
活跃值: (31)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
2
咦。  这crackme怎么看着这么眼熟。   有好几种IAT加密方式呢。 拿到特征码可以直接定位 。
2016-3-21 10:26
0
雪    币: 32
活跃值: (34)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
哈哈哈,何不把样本传上来看看。
2016-3-21 11:14
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
看了一下 难度不大,自己慢慢脱吧
上传的附件:
2016-3-21 11:50
0
雪    币: 12
活跃值: (142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
是一个很老的CRACKME啦
2016-3-21 15:19
0
雪    币: 12
活跃值: (142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我只是想确定这是什么壳而已
2016-3-21 15:20
0
雪    币: 12
活跃值: (142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=elianmeng;1421182]看了一下 难度不大,自己慢慢脱吧[/QUOTE]

壳的强度确实不大。。。我也能手动逐一修复IAT
但是想知道这什么壳 有没有什么快速修复脚本之类的
2016-3-21 15:21
0
游客
登录 | 注册 方可回帖
返回
//