enjon 发表于 2007-9-29 13:48:32

hmimys-Packer V1.2、1.3 脱脱脱(动画)

hmimys-Packer V1.2、1.3 脱脱脱
hmimys-Packer V1.2、1.3 脱脱脱

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

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

★一、OD载入目标程序:

/*1012CD8*/call PYG脱客_.01012D72         //EP
/*1012CDD*/add byte ptr ds:,dl
/*1012CDF*/add dword ptr ds:,eax
/*1012CE1*/add byte ptr ds:,dl
/*1012CE3*/add byte ptr ds:,al
/*1012CE5*/in al,dx
/*1012CE6*/dec esp
/*1012CE7*/add byte ptr ds:,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:,5A4D
/*7C93080B*/jnz short ntdll.7C93082A
/*7C93080D*/mov edx,dword ptr ds:
/*7C930810*/cmp edx,10000000
/*7C930816*/jnb short ntdll.7C93082A
/*7C930818*/lea eax,dword ptr ds:
/*7C93081B*/mov dword ptr ss:,eax
/*7C93081E*/cmp dword ptr ds:,4550
/*7C930824*/jnz ntdll.7C958BB5
/*7C93082A*/or dword ptr ss:,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:,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:,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:
/*1006435*/push eax
/*1006436*/mov dword ptr fs:,esp
/*100643D*/add esp,-68
/*1006440*/push ebx
/*1006441*/push esi
/*1006442*/push edi
/*1006443*/mov dword ptr ss:,esp
/*1006446*/mov dword ptr ss:,0
/*100644D*/push 2
/*100644F*/call dword ptr ds:

★五、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:
/*1028DD1*/stosd                     //找到这里
/*1028DD2*/jmp short PYG脱客_.01028DB8
/*1028DD4*/lodsd
/*1028DD5*/push eax
/*1028DD6*/push ebp
/*1028DD7*/call dword ptr ds:
/*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:
/*1006435*/push eax
/*1006436*/mov dword ptr fs:,esp
/*100643D*/add esp,-68
/*1006440*/push ebx
/*1006441*/push esi
/*1006442*/push edi
/*1006443*/mov dword ptr ss:,esp
/*1006446*/mov dword ptr ss:,0
/*100644D*/push 2
/*100644F*/call dword ptr ds:

★五(略)

yingfeng 发表于 2007-9-29 16:12:15

老K 发过了,呵呵, 只是没有做动画,

原文不动,咋不修改下,鼓励一下吧

zongmin 发表于 2007-10-6 00:09:01

这壳好像比较猛/:012
页: [1]
查看完整版本: hmimys-Packer V1.2、1.3 脱脱脱(动画)