飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2745|回复: 9

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

[复制链接]
  • TA的每日心情
    开心
    2022-9-25 11:58
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2007-9-20 12:10:27 | 显示全部楼层 |阅读模式
    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]

    ★五(略)

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

    本帖子中包含更多资源

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

    x
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-9-25 11:58
  • 签到天数: 12 天

    [LV.3]偶尔看看II

     楼主| 发表于 2007-9-21 15:22:04 | 显示全部楼层
    1. hmimys-Packer 1.30 主程序更为简便脱法(亦可应用于附件中的试炼品):

    2. 壳主程序EP:

    3. /*
    4. /*418360*/  call hmiPack1.004183FA
    5. /*418365*/  add byte ptr ds:[eax+1],al
    6. /*418368*/  add byte ptr ds:[eax],al
    7. /*41836A*/  adc byte ptr ds:[eax],al
    8. /*41836D*/  xlat byte ptr ds:[ebx+al]
    9. /*41836E*/  add byte ptr gs:[eax],al
    10. /*418371*/  push edi
    11. /*418372*/  mov dword ptr ds:[ecx],eax
    12. /*418375*/  add al,dh
    13. /*418377*/  inc ecx
    14. /*418378*/  add byte ptr ds:[eax+6B],dh
    15. /*41837B*/  inc eax
    16. /*41837C*/  add byte ptr ds:[eax],al
    17. /*41837E*/  inc eax
    18. /*41837F*/  inc ecx
    19. /*418380*/  add byte ptr ds:[edi+1D],dh
    20. /*418383*/  cmp byte ptr ds:[eax-53],80
    21. /*418388*/  jl short hmiPack1.0041838A
    22. /*41838A*/  add byte ptr ds:[eax],al
    23. */

    24. Alt+M打开内存镜像,在第一区段F2设置访问断点:

    25. /*
    26. Memory map, 条目 18
    27. 地址=00401000
    28. 大小=00014000 (81920.)
    29. 属主=hmiPack1 00400000
    30. 区段=hmimys
    31. 包含=代码
    32. 类型=Imag 01001002
    33. 访问=R
    34. 初始访问=RWE
    35. */

    36. F9 运行中断:

    37. /*
    38. /*418719*/  mov byte ptr ds:[eax+ecx],bl
    39. /*41871C*/  jge short hmiPack1.00418727
    40. /*41871E*/  and dword ptr ss:[ebp-4],0
    41. /*418722*/  jmp hmiPack1.00418944
    42. /*418727*/  cmp dword ptr ss:[ebp-4],0A
    43. /*41872B*/  jge short hmiPack1.00418736
    44. /*41872D*/  sub dword ptr ss:[ebp-4],3
    45. /*418731*/  jmp hmiPack1.00418944
    46. /*418736*/  sub dword ptr ss:[ebp-4],6
    47. /*41873A*/  jmp hmiPack1.00418944
    48. */

    49. Ctrl+B搜索代码:5F 5E 5B C9 C2 14 00

    50. /*
    51. /*418950*/  pop edi
    52. /*418951*/  pop esi
    53. /*418952*/  pop ebx
    54. /*418953*/  leave
    55. /*418954*/  retn 14     // F2设置访问断点,F9运行中断后F7跟进
    56. */

    57. Ctrl+B搜索代码:AB EB E4 AD 50 55 FF 53 04 AB EB E0 C3

    58. /*
    59. /*418459*/  stosd
    60. /*41845A*/  jmp short hmiPack1.00418440
    61. /*41845C*/  lodsd
    62. /*41845D*/  push eax
    63. /*41845E*/  push ebp
    64. /*41845F*/  call dword ptr ds:[ebx+4]
    65. /*418462*/  stosd
    66. /*418463*/  jmp short hmiPack1.00418445
    67. /*418465*/  retn        // F2设置访问断点,F9运行中断后F7跟进,飞向OEP
    68. */

    69. 找到OEP,LoadPE脱壳、Import REC修复即可!

    70. /*
    71. /*406B70*/  push 60
    72. /*406B72*/  push hmiPack1.0040B378
    73. /*406B77*/  call hmiPack1.00407DFC
    74. /*406B7C*/  mov edi,94
    75. /*406B81*/  mov eax,edi
    76. /*406B83*/  call hmiPack1.00407F60
    77. /*406B88*/  mov dword ptr ss:[ebp-18],esp
    78. /*406B8B*/  mov esi,esp
    79. /*406B8D*/  mov dword ptr ds:[esi],edi
    80. /*406B8F*/  push esi
    81. */
    复制代码
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-21 15:26:04 | 显示全部楼层
    看不懂啊
    好好研究下
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-22 22:50:52 | 显示全部楼层
    1.3的主程序哪里有下?
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2018-6-6 15:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-9-23 16:40:28 | 显示全部楼层
    K 哥的文章要学习的。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-23 18:32:07 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-25 23:53:55 | 显示全部楼层
    真的不错,/:001 /:001 /:001
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-26 19:33:22 | 显示全部楼层
    这个看不太懂啊!/:L
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    前天 21:42
  • 签到天数: 1665 天

    [LV.Master]伴坛终老

    发表于 2007-9-30 23:34:47 | 显示全部楼层
    在好多论坛看到着东西
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-10-3 03:06:15 | 显示全部楼层
    /:012 /:012 /:012 /:good /:good /:good
    KGG的咚咚哦
    嘿嘿
    ‘今天有朋友叫我帮忙脱一壳,并要文章’嘿嘿,这是个秘密。。。/:018 /:018
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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