首页 > 逆向调试 > PECompact 2.x -> Jeremy Collake脱壳

PECompact 2.x -> Jeremy Collake脱壳

看到网上有用SEH脱壳的,看的不是很明白(最主要还是讲的很不明白,然后很多人千篇一律的转载,所以就看不明白了)。另外还有看到用ESP脱壳的,这个比较好理解(ESP定律就那么一个套路,不懂的请看《ESP定律脱壳》一文)。

首先,对目标程序用PEiD查壳,提示PECompact 2.x -> Jeremy Collake,然后OD载入,OD会提示数据有加密或者压缩,点击否。然后OD断下的代码大概如下:

00401000 >  B8 D09A6D00     MOV EAX,Watermar.006D9AD0
00401005    50              PUSH EAX
00401006    64:FF35 0000000>PUSH DWORD PTR FS:[0]  ;运行到这里时观察ESP,用ESP定律设硬件访问断点
0040100D    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
00401014    33C0            XOR EAX,EAX
00401016    8908            MOV DWORD PTR DS:[EAX],ECX
00401018    50              PUSH EAX

接下来F9运行程序,OD断下:

;这里是ntdll的领空
7C94A889    3B45 F8         CMP EAX,DWORD PTR SS:[EBP-8]
7C94A88C    72 09           JB SHORT ntdll.7C94A897
7C94A88E    3B45 F4         CMP EAX,DWORD PTR SS:[EBP-C]
7C94A891  ^ 0F82 B7E0FFFF   JB ntdll.7C94894E
7C94A897    50              PUSH EAX
7C94A898    E8 67000000     CALL ntdll.7C94A904
7C94A89D    84C0            TEST AL,AL
7C94A89F  ^ 0F84 A9E0FFFF   JE ntdll.7C94894E
7C94A8A5    F605 1AE4997C 8>TEST BYTE PTR DS:[7C99E41A],80
7C94A8AC    0F85 61590200   JNZ ntdll.7C970213
7C94A8B2    FF73 04         PUSH DWORD PTR DS:[EBX+4]

一路F8,来到一个jmp eax的地方:

006D9B65    8956 08         MOV DWORD PTR DS:[ESI+8],EDX
006D9B68    8B4B 0C         MOV ECX,DWORD PTR DS:[EBX+C]
006D9B6B    894E 14         MOV DWORD PTR DS:[ESI+14],ECX
006D9B6E    FFD7            CALL EDI
006D9B70    8985 3F130010   MOV DWORD PTR SS:[EBP+1000133F],EAX
006D9B76    8BF0            MOV ESI,EAX                              ; Watermar.00636300
006D9B78    8B4B 14         MOV ECX,DWORD PTR DS:[EBX+14]
006D9B7B    5A              POP EDX
006D9B7C    EB 0C           JMP SHORT Watermar.006D9B8A
006D9B7E    03CA            ADD ECX,EDX
006D9B80    68 00800000     PUSH 8000
006D9B85    6A 00           PUSH 0
006D9B87    57              PUSH EDI
006D9B88    FF11            CALL DWORD PTR DS:[ECX]
006D9B8A    8BC6            MOV EAX,ESI
006D9B8C    5A              POP EDX
006D9B8D    5E              POP ESI
006D9B8E    5F              POP EDI
006D9B8F    59              POP ECX
006D9B90    5B              POP EBX
006D9B91    5D              POP EBP
006D9B92    FFE0            JMP EAX   ;OEP就是这里了

跳转之后,在反汇编窗口右键“用OllyDump脱壳调试进程”,然后保存文件,OK。
PECompact-2x


觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> PECompact 2.x -> Jeremy Collake脱壳
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: 逆向调试 标签: , , ,
  1. 本文目前尚无任何评论.