首页
社区
课程
招聘
GHF Protector脱壳
发表于: 2005-8-18 14:46 4394

GHF Protector脱壳

2005-8-18 14:46
4394
GHF Protector脱壳

壳下载地址:http://free.ys168.com/?breezer

我用这个壳给一个小程序加壳,用PEiD检查显示为Morphine 1.4 - 2.7 -> Holy_Father & Ratter/29A

实际是GHF Protector。这个壳压缩引擎使用的是AHPack,加密引擎Morphine。脱壳比较简单。

忽略OD所有异常,载入程序:

00511687 >  22ED            AND CH,CH///壳的入口。
00511689    F5              CMC
0051168A    FC              CLD
0051168B    F9              STC
0051168C    8D2D 30010000   LEA EBP,DWORD PTR DS:[130]
00511692    55              PUSH EBP
00511693    52              PUSH EDX
00511694    81F7 00000000   XOR EDI,0
0051169A    5A              POP EDX
0051169B    5D              POP EBP
0051169C    FC              CLD
0051169D    57              PUSH EDI

到入口后 下断bp GetModuleHandleA

第一次断下:

77E12CD1 >  837C24 04 00    CMP DWORD PTR SS:[ESP+4],0 ///断在这里。
77E12CD6    74 18           JE SHORT 77E12CF0                        ; 77E12CF0
77E12CD8    FF7424 04       PUSH DWORD PTR SS:[ESP+4]
77E12CDC    E8 92FFFFFF     CALL 77E12C73                            ; 77E12C73
77E12CE1    85C0            TEST EAX,EAX

堆栈区:

0012F6E4   77BD1EB2  /CALL 到 GetModuleHandleA 来自 77BD1EAC
0012F6E8   77BF1094  \pModule = "kernel32.dll"

第二次断下时堆栈区:

0012FF9C   0040E10C  /CALL 到 GetModuleHandleA 来自 VB1_1?.0040E10A
0012FFA0   0040E054  \pModule = "KERNEL32.DLL"

取消断点,返回程序领空:

0040E10C    68 B3E04000     PUSH 40E0B3   ; ASCII "GlobalAlloc"///返回到这里。
0040E111    50              PUSH EAX
0040E112    B8 44E04000     MOV EAX,40E044
0040E117    FF10            CALL DWORD PTR DS:[EAX]
0040E119    68 00A00000     PUSH 0A000

往下找:

0040E281    FF10            CALL DWORD PTR DS:[EAX]
0040E283    68 BFE04000     PUSH 40E0BF                              ; ASCII "GlobalFree"
0040E288    50              PUSH EAX
0040E289    B8 44E04000     MOV EAX,40E044
0040E28E    FF10            CALL DWORD PTR DS:[EAX]
0040E290    8B15 CAE04000   MOV EDX,DWORD PTR DS:[40E0CA]
0040E296    52              PUSH EDX
0040E297    FFD0            CALL EAX
0040E299    61              POPAD
0040E29A    BA D8104000     MOV EDX,4010D8 ///4010D8就是入口。
0040E29F    FFE2            JMP EDX///跳向程序入口。
0040E2A1    90              NOP
0040E2A2    C3              RETN
0040E2A3    44              INC ESP
0040E2A4    0000            ADD BYTE PTR DS:[EAX],AL

来到程序真正的入口:

004010D8    68 BC614000     PUSH 4061BC ///OEP到了!
004010DD    E8 F0FFFFFF     CALL 004010D2                            ; JMP to MSVBVM60.ThunRTMain
004010E2    0000            ADD BYTE PTR DS:[EAX],AL
004010E4    0000            ADD BYTE PTR DS:[EAX],AL
004010E6    0000            ADD BYTE PTR DS:[EAX],AL
004010E8    3000            XOR BYTE PTR DS:[EAX],AL
004010EA    0000            ADD BYTE PTR DS:[EAX],AL

再来看IAT:

00400FF8  00 00 00 00 00 00 00 00  ........
00401000  EE 15 54 73 8B B4 52 73  ..Ts..Rs
00401008  67 7D 53 73 29 2F 52 73  g}Ss)/Rs
00401010  AE 7D 51 73 A0 7E 53 73  ?Qs.~Ss
00401018  03 B4 52 73 6F D8 45 73  ..Rso.Es
00401020  78 B7 45 73 85 E3 46 73  x.Es..Fs
00401028  33 7C 51 73 7C 67 51 73  3|Qs|gQs
00401030  5B 4E 46 73 20 C1 52 73  [NFs .Rs
00401038  6E 82 46 73 3B 66 52 73  n.Fs;fRs
00401040  3E DE 44 73 F1 49 46 73  >.Ds.IFs
00401048  48 82 53 73 6D D6 51 73  H.Ssm.Qs
00401050  00 00 00 00 00 00 00 00  ........

到入口后就可以DUMP进程了,但由于Morphine对文件头做了手脚,用LORDPE无法DUMP出有用的文件。改用PETOOLS就可以DUMP了。

DUMP后还要修复IAT,用ImportREC修复时不能自动搜索IAT,要注意设置“选项”中“使用来自磁盘的PE文件头”不能选上。然后填上OEP=10D8 RVA=1000 SIZE=50

搜索后修复即可。这个压缩引擎估计是早期版本,还比较好对付。附件:vb1.rar

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
先坐沙发
2005-8-18 15:41
0
游客
登录 | 注册 方可回帖
返回
//