首页
社区
课程
招聘
[原创]PESpin 1.33全保护脱壳笔记
发表于: 2011-7-8 12:06 18702

[原创]PESpin 1.33全保护脱壳笔记

2011-7-8 12:06
18702

【文章标题】: PESpin 1.33全保护脱壳笔记
【文章作者】: Nerin
【下载地址】: 见附件
【加壳方式】: PESpin
【使用工具】: OllyIce PEID LordPE ImportRec
【操作平台】: Windows XP SP2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  PEID查壳,显示为“PESpin 0.3x - 1.xx -> cyberbob”。双击文件运行,打开任务管理器发现有两个进程,我们脱壳的第一步就是要去掉双进程保护。用OllyIce载入文件,开始我们的脱壳之旅。
  单步F7几次之后,发现了我们很熟悉的几条指令:
  

  0041C0D7    60                PUSHAD
  0041C0D8    E8 00000000       CALL UnPackMe.0041C0DD
  0041C0DD    8B1C24            MOV EBX,DWORD PTR SS:[ESP]
  0041C0E0    83C3 12           ADD EBX,12
  
  0041FE1E    8985 6E6E4000     MOV DWORD PTR SS:[EBP+406E6E],EAX
  0041FE24    8D85 E2281F03     LEA EAX,DWORD PTR SS:[EBP+31F28E2]
  0041FE2A    2D FCCEDE02       SUB EAX,2DECEFC
  0041FE2F    FF10              CALL DWORD PTR DS:[EAX]
  0041FE31    BB CA7DB9FE       MOV EBX,FEB97DCA
  0041FE36    81EB 137DB9FE     SUB EBX,FEB97D13
  0041FE3C    3BC3              CMP EAX,EBX
  0041FE3E    9C                PUSHFD        ★走到这里将ZF标志位改成1
  0041FE3F    C12C24 06         SHR DWORD PTR SS:[ESP],6
  0041FE43    F71424            NOT DWORD PTR SS:[ESP]
  0041FE46    832424 01         AND DWORD PTR SS:[ESP],1
  0041FE4A    58                POP EAX
  0041FE4B    2BD2              SUB EDX,EDX
  0041FE4D    BB BAE74D02       MOV EBX,24DE7BA
  0041FE52    81EB 86E74D02     SUB EBX,24DE786
  0041FE58    F7E3              MUL EBX
  0041FE5A    81CB FE12F40E     OR EBX,0EF412FE
  0041FE60    8D8428 4E0E91ED   LEA EAX,DWORD PTR DS:[EAX+EBP+ED910E4E]
  0041FE67    2D 179B50ED       SUB EAX,ED509B17
  0041FE6C    FFE0              JMP EAX      ★父子进程的分水岭
  
  0041FE85    F1              INT1
  0041FE86    E8 1C030000     CALL UnPackMe.004201A7
  0041FE8B    85C0            TEST EAX,EAX
  0041FE8D    75 23           JNZ SHORT UnPackMe.0041FEB2
  0041FE8F    8BC3            MOV EAX,EBX
  0041FE91    35 08001F0E     XOR EAX,0E1F0008
  0041FE96    C3              RETN
  
  0041C51B    B8 4AAC1C95     MOV EAX,951CAC4A     ★此处新建EIP
  0041C520    2BC9            SUB ECX,ECX
  0041C522    83C9 15         OR ECX,15
  0041C525    0FA3C8          BT EAX,ECX
  0041C528    0F83 81000000   JNB UnPackMe.0041C5AF
  
  004207AD    F1              INT1
  004207AE    87DF            XCHG EDI,EBX
  004207B0    57              PUSH EDI
  004207B1    C3              RETN
  
  0041D6D4   /EB 04           JMP SHORT UnPackMe.0041D6DA    ★新建EIP
  0041D6D6   |7A EB           JPE SHORT UnPackMe.0041D6C3
  0041D6D8   |04 9A           ADD AL,9A
  0041D6DA  ^\EB FB           JMP SHORT UnPackMe.0041D6D7
  0041D6DC    FFF6            PUSH ESI
  
  0041CE25    F3:A4           REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
  0041CE27    8BC6            MOV EAX,ESI
  0041CE29    8BF7            MOV ESI,EDI
  0041CE2B    5F              POP EDI
  
  0041CD64    83FA 12             CMP EDX,12
  0041CD67    73 7B               JNB SHORT UnPackMe.0041CDE4    ★直接跳过这里的循环
  0041CD69    8B18                MOV EBX,DWORD PTR DS:[EAX]
  0041CD6B    EB 07               JMP SHORT UnPackMe.0041CD74
  
  0041D08D   /0F84 92000000       JE UnPackMe.0041D125    ★这里的循环也直接跳
  0041D093   |47                  INC EDI
  0041D094   |EB 01               JMP SHORT UnPackMe.0041D097
  
  0041D1A0    8907                MOV DWORD PTR DS:[EDI],EAX    ★这里就是关键了,在这里下一个硬件执行断点
  0041D1A2    EB 02               JMP SHORT UnPackMe.0041D1A6
  0041D1A4    02F5                ADD DH,CH
  0041D1A6    F9                  STC
  0041D1A7    72 08               JB SHORT UnPackMe.0041D1B1
  0041D1A9    73 0E               JNB SHORT UnPackMe.0041D1B9
  0041D1AB  - E9 83042417         JMP 1765D633
  0041D1B0    C3                  RETN
  

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 421
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
多谢分享。PESpin这个壳以前自己很少见到。
2011-7-8 14:33
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
感谢分享,帖子排版清晰
2011-7-8 16:14
0
雪    币: 80
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
确实很少见,不错
2011-7-8 16:40
0
雪    币: 7160
活跃值: (1170)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享,学习学习!
2011-7-8 18:10
0
雪    币: 3800
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不错,留个小脚印
2011-7-9 02:12
0
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
7
看不太明白 看来要继续努力了
2011-7-9 15:14
0
雪    币: 2548
活跃值: (965)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
8
学习了,mark
2011-7-9 18:56
0
雪    币: 12348
活跃值: (5113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9

脱壳一定要来学习一下
2011-7-9 19:50
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
如果有视频教程就好了,看文章蛋疼(电脑上看)
2011-7-10 11:52
0
雪    币: 293
活跃值: (40)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
又重新看了一下,解决了跨平台的问题了,SDK修复代码如下
00401160  /$  55            push    ebp
00401161  |.  8BEC          mov     ebp, esp
00401163  |.  81EC 60020000 sub     esp, 260
00401169  |.  53            push    ebx
0040116A  |.  56            push    esi
0040116B  |.  57            push    edi
0040116C  |.  90            nop
0040116D  |.  90            nop
0040116E  |.  90            nop
0040116F  |.  90            nop
00401170  |.  90            nop
00401171  |.  90            nop
00401172  |.  90            nop
00401173  |.  90            nop
00401174  |.  90            nop
00401175  |.  90            nop
00401176  |.  66:C785 F8FDF>mov     word ptr [ebp-208], 0
0040117F  |.  B9 81000000   mov     ecx, 81
00401184  |.  33C0          xor     eax, eax
00401186  |.  8DBD FAFDFFFF lea     edi, dword ptr [ebp-206]
0040118C  |.  F3:AB         rep     stos dword ptr es:[edi]
0040118E  |.  66:AB         stos    word ptr es:[edi]
00401190  |.  68 04010000   push    104                              ; /BufSize = 104 (260.)
00401195  |.  8D85 F8FDFFFF lea     eax, dword ptr [ebp-208]         ; |
0040119B  |.  50            push    eax                              ; |PathBuffer
0040119C  |.  6A 00         push    0                                ; |hModule = NULL
0040119E  |.  FF15 2C604200 call    dword ptr [<&kernel32.GetModuleF>; \GetModuleFileNameW
004011A4  |.  C685 E8FDFFFF>mov     byte ptr [ebp-218], 0
004011AB  |.  33C9          xor     ecx, ecx
004011AD  |.  898D E9FDFFFF mov     dword ptr [ebp-217], ecx
004011B3  |.  898D EDFDFFFF mov     dword ptr [ebp-213], ecx
004011B9  |.  898D F1FDFFFF mov     dword ptr [ebp-20F], ecx
004011BF  |.  66:898D F5FDF>mov     word ptr [ebp-20B], cx
004011C6  |.  888D F7FDFFFF mov     byte ptr [ebp-209], cl
004011CC  |.  8D95 E8FDFFFF lea     edx, dword ptr [ebp-218]
004011D2  |.  52            push    edx
004011D3  |.  8D85 F8FDFFFF lea     eax, dword ptr [ebp-208]
004011D9  |.  50            push    eax
004011DA  |.  E8 11FFFFFF   call    004010F0
004011DF  |.  83C4 08       add     esp, 8
004011E2  |.  85C0          test    eax, eax
004011E4  |.  0F84 82000000 je      0040126C
004011EA  |.  66:C785 A0FDF>mov     word ptr [ebp-260], 0
004011F3  |.  B9 10000000   mov     ecx, 10
004011F8  |.  33C0          xor     eax, eax
004011FA  |.  8DBD A2FDFFFF lea     edi, dword ptr [ebp-25E]
00401200  |.  F3:AB         rep     stos dword ptr es:[edi]
00401202  |.  C785 E4FDFFFF>mov     dword ptr [ebp-21C], 0
0040120C  |.  EB 0F         jmp     short 0040121D
0040120E  |>  8B8D E4FDFFFF /mov     ecx, dword ptr [ebp-21C]
00401214  |.  83C1 01       |add     ecx, 1
00401217  |.  898D E4FDFFFF |mov     dword ptr [ebp-21C], ecx
0040121D  |>  83BD E4FDFFFF> cmp     dword ptr [ebp-21C], 10
00401224  |.  7D 30         |jge     short 00401256
00401226  |.  8B95 E4FDFFFF |mov     edx, dword ptr [ebp-21C]
0040122C  |.  33C0          |xor     eax, eax
0040122E  |.  8A8415 E8FDFF>|mov     al, byte ptr [ebp+edx-218]
00401235  |.  50            |push    eax                             ; /<%02x>
00401236  |.  68 30804000   |push    00408030                        ; |Format = "%02x"
0040123B  |.  8B8D E4FDFFFF |mov     ecx, dword ptr [ebp-21C]        ; |
00401241  |.  D1E1          |shl     ecx, 1                          ; |
00401243  |.  8D944D A0FDFF>|lea     edx, dword ptr [ebp+ecx*2-260]  ; |
0040124A  |.  52            |push    edx                             ; |s
0040124B  |.  FF15 58614200 |call    dword ptr [<&user32.wsprintfW>] ; \wsprintfW
00401251  |.  83C4 0C       |add     esp, 0C
00401254  |.^ EB B8         \jmp     short 0040120E
00401256  |>  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00401258  |.  68 3C804000   push    0040803C                         ; |Title = "PESpin 1.33 UnPackMe"
0040125D  |.  8D85 A0FDFFFF lea     eax, dword ptr [ebp-260]         ; |
00401263  |.  50            push    eax                              ; |Text
00401264  |.  6A 00         push    0                                ; |hOwner = NULL
00401266  |.  FF15 5C614200 call    dword ptr [<&user32.MessageBoxW>>; \MessageBoxW
0040126C  |>  90            nop
0040126D  |.  90            nop
0040126E  |.  90            nop
0040126F  |.  90            nop
00401270  |.  90            nop
00401271  |.  90            nop
00401272  |.  90            nop
00401273  |.  90            nop
00401274  |.  90            nop
00401275  |.  90            nop
00401276  |.  5F            pop     edi
00401277  |.  5E            pop     esi
00401278  |.  5B            pop     ebx
00401279  |.  8BE5          mov     esp, ebp
0040127B  |.  5D            pop     ebp
0040127C  \.  C3            retn

更新下脱壳文件
dumped_4.rar
上传的附件:
2011-7-10 22:58
0
雪    币: 90
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
顶个。。。。。顺便MARK下。。。。。
2011-7-11 12:25
0
雪    币: 309
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
没看懂哦,看来要学习的地方还老多哦。
2011-7-11 14:39
0
雪    币: 384
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
分析得很清晰,很详细,谢谢分享
2011-7-11 22:09
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
感谢分享,要学习的地方还很多
2011-7-19 19:33
0
雪    币: 227
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
谢谢分享,标记一下。
2011-7-21 14:18
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
mark下 以后学习用
2011-7-22 18:20
0
游客
登录 | 注册 方可回帖
返回
//