首页
社区
课程
招聘
[原创]hmimys-Packer V1.2、1.3 脱脱脱
发表于: 2007-9-19 16:52 9368

[原创]hmimys-Packer V1.2、1.3 脱脱脱

2007-9-19 16:52
9368

娱乐一下,看论坛没朋友写这个,就忽悠一下!

今天有朋友叫我帮忙脱一壳,查壳后发现是hmimys-Packer V1.2 -> hmimys,但感觉奇怪,似乎这个壳被某人修改过,代码有所不同(后面证明):

★一、OD载入目标程序:

/*1012CD8*/  call PYG脱客_.01012D72           //EP
/*1012CDD*/  add byte ptr ds:[eax],dl
/*1012CDF*/  add dword ptr ds:[eax],eax
/*1012CE1*/  add byte ptr ds:[eax],dl
/*1012CE3*/  add byte ptr ds:[ecx],al
/*1012CE5*/  in al,dx
/*1012CE6*/  dec esp
/*1012CE7*/  add byte ptr ds:[eax],al
/*1012CE9*/  iretd

★二、Alt+M 打开内存镜像:

Memory map
地址       大小       属主                        区段       包含                  类型   访问      初始访问  已映射为
01000000   00001000   PYG脱客_ 01000000 (自身)               PE 文件头             Imag   R         RWE
01001000   00011000   PYG脱客_ 01000000           hmimys     代码                  Imag   R         RWE
01012000   0000E000   PYG脱客_ 01000000           hmimys     SFX,输入表,资源       Imag   R         RWE
01020000   00001000   PYG脱客_ 01000000           hmimys                           Imag   R         RWE

在第一“PE 文件头”区段上,F2设置访问中断,F9运行中断:

Memory map, 条目 17
地址=01000000
大小=00001000 (4096.)
属主=PYG脱客_ 01000000 (自身)
区段=
包含=PE 文件头
类型=Imag 01001002
访问=R
初始访问=RWE

中断后来到这里:

/*7C930806*/  cmp word ptr ds:[ecx],5A4D
/*7C93080B*/  jnz short ntdll.7C93082A
/*7C93080D*/  mov edx,dword ptr ds:[ecx+3C]
/*7C930810*/  cmp edx,10000000
/*7C930816*/  jnb short ntdll.7C93082A
/*7C930818*/  lea eax,dword ptr ds:[edx+ecx]
/*7C93081B*/  mov dword ptr ss:[ebp-1C],eax
/*7C93081E*/  cmp dword ptr ds:[eax],4550
/*7C930824*/  jnz ntdll.7C958BB5
/*7C93082A*/  or dword ptr ss:[ebp-4],FFFFFFFF
/*7C93082E*/  call ntdll.7C92EE02
/*7C930833*/  retn 4

★三、再次 Alt+M 打开内存镜像:

在第一区段上,F2设置访问中断,F9运行中断:

Memory map, 条目 18
地址=01001000
大小=00011000 (69632.)
属主=PYG脱客_ 01000000
区段=hmimys
包含=代码
类型=Imag 01001002
访问=R
初始访问=RWE

中断后来到这里:

/*10102D3*/  mov dword ptr ss:[esp],eax
/*10102D6*/  call PYG脱客_.010102E7
/*10102DB*/  inc ebx
/*10102DC*/  insb
/*10102DD*/  outsd
/*10102DE*/  jnb short PYG脱客_.01010345
/*10102E0*/  dec eax
/*10102E1*/  popad
/*10102E2*/  outsb
/*10102E3*/  insb
/*10102E5*/  add byte ptr gs:[ebp-1],dl
/*10102E9*/  salc
/*10102EA*/  call eax
/*10102EC*/  push 0
/*10102EE*/  call PYG脱客_.010102FE

四、Ctrl+S搜索代码:

popad
push eax

找到这里:

/*10106C9*/  popad
/*10106CA*/  push eax
/*10106CB*/  push E82BBDF5
/*10106D0*/  pushad
/*10106D1*/  push C748640E
/*10106D6*/  sub esp,-4
/*10106D9*/  popad
/*10106DA*/  sub esp,-4
/*10106DD*/  pop eax
/*10106DE*/  call PYG脱客_.010106E3
/*10106E3*/  jmp short PYG脱客_.010106E6
/*10106E5*/  outsb
/*10106E6*/  add ebx,7B30DA6E
/*10106EC*/  sub ebx,7B30DA6E
/*10106F2*/  retn                   //在这里F2设置断点,经过2次中断后飞向OEP

飞向OEP:

/*1006420*/  push ebp               //OEP
/*1006421*/  mov ebp,esp
/*1006423*/  push -1
/*1006425*/  push PYG脱客_.01001888
/*100642A*/  push PYG脱客_.010065D0
/*100642F*/  mov eax,dword ptr fs:[0]
/*1006435*/  push eax
/*1006436*/  mov dword ptr fs:[0],esp
/*100643D*/  add esp,-68
/*1006440*/  push ebx
/*1006441*/  push esi
/*1006442*/  push edi
/*1006443*/  mov dword ptr ss:[ebp-18],esp
/*1006446*/  mov dword ptr ss:[ebp-4],0
/*100644D*/  push 2
/*100644F*/  call dword ptr ds:[1001160]

★五、LoadPE脱壳、Import REC修复即可!

OEP=1006420-1000000=0006420

为了证明我开场的观点,于是用真正的hmimys-Packer V1.2加了几个试炼程序(包括脱壳后我们的目标程序):

脱壳前三步与以上的一样,接着我们来说第四步,也就是找OEP:(这里目标为脱壳后再加壳的目标程序)

★一(略)

★二(略)

★三(略)

四、Ctrl+B搜索代码:

AB EB E4 AD 50 55 FF 53 04 AB EB E0 C3

来到:

/*1028DB8*/  lodsb
/*1028DB9*/  test al,al
/*1028DBB*/  jnz short PYG脱客_.01028DB8
/*1028DBD*/  lodsw
/*1028DBF*/  test ax,ax
/*1028DC2*/  je short PYG脱客_.01028DAD
/*1028DC4*/  lodsb
/*1028DC5*/  sub esi,3
/*1028DC8*/  test al,al
/*1028DCA*/  je short PYG脱客_.01028DD4
/*1028DCC*/  push esi
/*1028DCD*/  push ebp
/*1028DCE*/  call dword ptr ds:[ebx+4]
/*1028DD1*/  stosd                       //找到这里
/*1028DD2*/  jmp short PYG脱客_.01028DB8
/*1028DD4*/  lodsd
/*1028DD5*/  push eax
/*1028DD6*/  push ebp
/*1028DD7*/  call dword ptr ds:[ebx+4]
/*1028DDA*/  stosd
/*1028DDB*/  jmp short PYG脱客_.01028DBD
/*1028DDD*/  retn                        //在这里F2设置断点,中断后F8飞向OEP

飞向OEP:

/*1006420*/  push ebp
/*1006421*/  mov ebp,esp
/*1006423*/  push -1
/*1006425*/  push PYG脱客_.01001888
/*100642A*/  push PYG脱客_.010065D0
/*100642F*/  mov eax,dword ptr fs:[0]
/*1006435*/  push eax
/*1006436*/  mov dword ptr fs:[0],esp
/*100643D*/  add esp,-68
/*1006440*/  push ebx
/*1006441*/  push esi
/*1006442*/  push edi
/*1006443*/  mov dword ptr ss:[ebp-18],esp
/*1006446*/  mov dword ptr ss:[ebp-4],0
/*100644D*/  push 2
/*100644F*/  call dword ptr ds:[1001160]

★五(略)

原来hmimys-Packer 1.30也可以这么脱~~o(∩_∩)o...


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (15)
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
2
沙发~!

支持老K

老K,你太强大了,膜拜膜拜再膜拜
2007-9-19 16:54
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
3
原来hmimys-Packer 1.30也可以这么脱~~o(∩_∩)o...
2007-9-19 17:22
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
老K,哈,哈,,我给你顶下,不要不知道我是谁/
2007-9-19 17:25
0
雪    币: 8227
活跃值: (3376)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看他得意那样?老忽悠人,

四、Ctrl+B搜索代码:

AB EB E4 AD 50 55 FF 53 04 AB EB E0 C3

这里怎么又这样搜索了,说的不清不楚的,咱菜鸟BS他一下
2007-9-19 17:31
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
6
我这样脱的
PEiD插件查OEP为1004260

OD载入跑起来,找到输入表的最后项
010012EC   .  A9C43C76      dd      comdlg32.ChooseFontW
010012F0   .  D6483D76      dd      comdlg32.PageSetupDlgW
010012F4   .  CE003C76      dd      comdlg32.CommDlgExtendedError
010012F8      00            db      00

关掉OD,重新载入(直接重载会退出)
下bp GetModuleHandleA
数据窗口跟随到输入表最后项地址010012F4 ,此时为全0
F9几次后断下010012F4 已被填入IAT
这个时候CTRL+F9多次直到返回到程序领空,

0101066D   .  FFD7          call    edi
0101066F   .  83EC 04       sub     esp, 4  //返回到里
01010672   .  50            push    eax
01010673   .  33DB          xor     ebx, ebx
01010675   >  8B45 00       mov     eax, dword ptr [ebp]
01010678   .  8B8418 000000>mov     eax, dword ptr [eax+ebx+1000000]
0101067F   .  A9 00000080   test    eax, 80000000
01010684   .  74 07         je      short 0101068D
01010686   .  25 FFFF0000   and     eax, 0FFFF
0101068B   .  EB 09         jmp     short 01010696
0101068D   >  85C0          test    eax, eax
0101068F   .  74 1D         je      short 010106AE
01010691   .  05 02000001   add     eax, 01000002
01010696   >  894424 04     mov     dword ptr [esp+4], eax
0101069A      FF            db      FF
0101069B   .  D6            salc
0101069C   .  83EC 08       sub     esp, 8
0101069F   .  8B4D 10       mov     ecx, dword ptr [ebp+10]
010106A2   .  898419 000000>mov     dword ptr [ecx+ebx+1000000], eax
010106A9   .  83C3 04       add     ebx, 4
010106AC   .^ EB C7         jmp     short 01010675
010106AE   >  83C4 08       add     esp, 8
010106B1   .  83C5 14       add     ebp, 14
010106B4   .  837D 10 00    cmp     dword ptr [ebp+10], 0
010106B8   .^ 75 A9         jnz     short 01010663
010106BA   .  45            inc     ebp
010106BB   .  68 4657A8E4   push    E4A85746
010106C0   .  EB 03         jmp     short 010106C5
010106C2      48            db      48                               ;  CHAR 'H'
010106C3      8C            db      8C
010106C4      B7            db      B7
010106C5   >  83EC FC       sub     esp, -4
010106C8   .  4D            dec     ebp
010106C9   .  61            popad
010106CA   .  50            push    eax
010106CB   .  68 F5BD2BE8   push    E82BBDF5
010106D0   .  60            pushad
010106D1   .  68 0E6448C7   push    C748640E
010106D6   .  83EC FC       sub     esp, -4
010106D9   .  61            popad
010106DA   .  83EC FC       sub     esp, -4
010106DD   .  58            pop     eax
010106DE   .  E8 00000000   call    010106E3
010106E3   $  EB 01         jmp     short 010106E6
010106E5   .  6E            outs    dx, byte ptr es:[edi]
010106E6   >  81C3 6EDA307B add     ebx, 7B30DA6E
010106EC   .  81EB 6EDA307B sub     ebx, 7B30DA6E
010106F2   .  C3            retn


最后这个RETN了两次,第二次指向PEiD插件找到的OEP1004260
dump,fix,运行成功
2007-9-19 17:34
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
刚说老K,故意,他又不相信,哈哈,搜不到K他

最后这个RETN了两次,第二次指向PEiD插件找到的OEP1004260(这是OEP吗?应该是1006420吧)
)
2007-9-19 17:35
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
8
我也不知道他是OEP
只是试了下
成功了呗
运气运气...
2007-9-19 17:39
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
9
更新一下!
2007-9-21 06:06
0
雪    币: 242
活跃值: (1664)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
10
学习一下!
2007-9-21 08:56
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
tc eip<```````
2007-9-21 09:09
0
雪    币: 1919
活跃值: (901)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
12
老K又冒泡了,顶哈~~
2007-9-21 12:47
0
雪    币: 340
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
  哈哈 KGG的咚咚当然要来看看咯
不过貌似 偶是得到的第一手资料 嘿嘿
2007-9-27 04:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
见到就一定得收下啦..
呵呵
2007-10-13 15:34
0
雪    币: 198
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
15
Open to olly
F7    on first call
Scroll down BP on first RETN F9
Delete BP (F2) And F7 = OEP
;)
2007-10-13 20:28
0
雪    币: 122
活跃值: (68)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
菜鸟只能学习
2007-10-14 00:38
0
游客
登录 | 注册 方可回帖
返回
//