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:
★五(略) 老K 发过了,呵呵, 只是没有做动画,
原文不动,咋不修改下,鼓励一下吧 这壳好像比较猛/:012
页:
[1]