飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2928|回复: 2

[脱壳破解] hmimys-Packer V1.2、1.3 脱脱脱(动画)

[复制链接]
  • TA的每日心情
    奋斗
    2023-12-2 20:17
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2007-9-29 13:48:32 | 显示全部楼层 |阅读模式
    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:[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]

    ★五(略)

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-2-17 18:27
  • 签到天数: 33 天

    [LV.5]常住居民I

    发表于 2007-9-29 16:12:15 | 显示全部楼层
    老K 发过了,呵呵, 只是没有做动画,

    原文不动,咋不修改下,鼓励一下吧
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2022-6-23 14:22
  • 签到天数: 50 天

    [LV.5]常住居民I

    发表于 2007-10-6 00:09:01 | 显示全部楼层
    这壳好像比较猛/:012
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表