游乐游手机版
首页/网络安全/文章详情

黑客技术 slv unpackme 脱壳

时间:2026-07-24 22:16
其实壳本身并非关键,真正的难点在于虚拟机内部的校验机制。多亏了 SM 同学手下留情,勉强能让它运行起来,但实在没有精力去完整还原整个 VM。在 VirtualFree 的 retn 指令上按下 F4,直到 [ESP] 指向某个 EXE 镜像内的地址,然后按 F7 返回: 0040FA91 B8 BE

其实壳本身并非关键,真正的难点在于虚拟机内部的校验机制。多亏了 SM 同学手下留情,勉强能让它运行起来,但实在没有精力去完整还原整个 VM。在 VirtualFree 的 retn 指令上按下 F4,直到 [ESP] 指向某个 EXE 镜像内的地址,然后按 F7 返回:

0040FA91    B8 BE180000     mov     eax, 18BE
0040FA96    BA 00004000     mov     edx, slv_unpa.00400000
0040FA9B    03C2            add     eax, edx
0040FA9D  - FFE0            jmp     eax

jmp eax 处按下 F4 再按 F7,即可跳转到 OEP:

004018BE    68 EA1AF500     push    0F51AEA
004018C3  - E9 EF01B500     jmp     00F51AB7
004018C8    CC              int3
004018C9    CC              int3

结果却跳进了 VM 段,那片内存区域无法直接 Dump。按 Ctrl+F2 重新开始,观察内存分配的位置:在 VirtualAlloc 函数上下断点,持续按 Ctrl+F9,直到 EAX 等于 0x00F50000 时停下:

0040FBB6    6A 40           push    40
0040FBB8    68 00100000     push    1000
0040FBBD    50              push    eax
0040FBBE    6A 00           push    0
0040FBC0    FF13            call    [ebx]                            ; kernel32.VirtualAlloc
0040FBC2    8BD0            mov     edx, eax
0040FBC4    8BFA            mov     edi, edx
0040FBC6    8B4E FC         mov     ecx, [esi-4]
0040FBC9    F3:A4           rep     movsb

继续向下执行,ECX = 0x000151E9,原来是在将 unpackme.exe 复制为 2.exe,同时新增一个节:VAddr=0x0022000,VSize=0x20000。加载 2.exe 后,在 0x0040FBC2 处按下 F4,将 EAX 修改为 0x422000。然后按照上述方法走到 OEP,使用 LordPE 进行 Dump(OllyDump 我从未成功使用过),得到 dumped.exe。

接着用 ImpREC 修复 IAT,生成 3.exe。一运行就报非法操作,挂上 OD 调试:

00422CCA    8910            mov     [eax], edx  // eax=00140688
00422CCC    E9 0D0E0000     jmp     00423ADE

往上看全是花指令(实际上都是 EB 开头的跳转),直接 Nop 掉:

00422CA4    33C0            xor     eax, eax
00422CAC    AC              lodsb
00422CB1    8B1487          mov     edx, [edi+eax*4]
00422CB7    33C0            xor     eax, eax
00422CBD    AC              lodsb
00422CC1    8B0487          mov     eax, [edi+eax*4]
00422CCA    8910            mov     [eax], edx
00422CCC    E9 0D0E0000     jmp     00423ADE

看起来只是一个虚拟机指令,但似乎丢失了一些关键信息。校验逻辑到底藏在何处?

思路一:GetFileSize 校验。估计 SM 同学不屑于使用这种低级手段,抱着侥幸心理试了一下,果然无效。

思路二:在某处设置了标记。之前 VirtualAlloc 分配的内存已被释放,VM 段也 Dump 下来了,还能在哪里?联想到 SM 同学一向喜欢在 PE Header 做手脚,于是去查看 PE Header。加载 2.exe 时,在 OEP 按 Alt+M,在 PE Header 上 F2 下断,果然触发了访问:[400110] == 1000。加载 3.exe 同样中断:[400110] == 18BE

原来校验的是入口点,后续很可能当作常数参与了运算——因为所有 KBYS 都会将 0x1000 作为入口。解决方案有两种:一是编写一段入口代码将入口改为 0x1000;二是挪动入口。考虑到写保护操作不便,我选择了挪动。在 0x401000 处 Ctrl+R 找到两处引用,均改为 0x401005:

004011DA    E8 21FEFFFF     call    3.00401000
004011EC    E8 0FFEFFFF     call    3.00401000

修改此处代码:

00401000 > /E9 B9080000     jmp     4.004018BE
00401005   |68 EA9C4200     push    4.00429CEA
0040100A  -|E9 A82A0200     jmp     4.00423AB7

保存到文件,最后用 LordPE 将入口点改为 0x1000,保存为 4.exe。嗯,图片显示出来了!但点击“She”之后程序没有自行退出,反而又弹出了自己。估计是虚拟机里有一段调用 0x1000 退出的代码,结果跳到了 0x18BE 又执行了 DialogParam。那么只能选择写保护方案。用 LordPE 添加一个输入函数 VirtualProtect,在 OEP 下方找一片空地编写代码,最后跳回 0x18BE:

004018C8 >  B8 00004000     mov     eax, 00400000
004018CD    0340 3C         add     eax, [eax+3C]
004018D0    8D78 28         lea     edi, [eax+28]
004018D3    50              push    eax
004018D4    54              push    esp
004018D5    6A 04           push    4
004018D7    6A 04           push    4
004018D9    57              push    edi
004018DA    FF15 1E304400   call    [44301E]                         ; kernel32.VirtualProtect
004018E0    58              pop     eax
004018E1    B8 00100000     mov     eax, 1000
004018E6    AB              stosd
004018E7  ^ EB D5           jmp     004018BE

将入口点改为 0x18C8,搞定收工。

来源:https://www.jb51.net/hack/5191.html
上一篇暴力破解原理详解:破解技术中的核心方法 下一篇微软IIS6漏洞致服务器敏感信息易被窃取
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
零基础Python网络安全学习指南,包住宿实战培训
网络安全 · 2026-07-25

零基础Python网络安全学习指南,包住宿实战培训

先抛出几个核心判断:网络安全人才缺口确实已经超过70万。这个数字不算夸张,各大招聘网站上安全岗位的薪资涨幅和需求增长都是实实在在的。但实话实说,行业真正缺的是能上手干活的人,不是只懂几个理论概念的新手。因此,一套扎实且成体系的训练方案,对于零基础转行或进阶提升就显得格外关键。 从零基础到能够独立应对

网络安全定义与核心概念详解
网络安全 · 2026-07-25

网络安全定义与核心概念详解

谈到网络安全,不同组织与标准体系对其定义虽有差异,但核心目标高度统一:保护信息与系统不受威胁侵害。以下梳理几种主流定义—— 什么是网络安全? 国际标准化组织(ISO)在ISO-74982文献中将安全定义为:最大程度地降低数据和资源遭受攻击的可能性。该定义虽简短,却精准点出安全的本质——即风险控制。

IIS 7.0网站漏洞利用与修复方法指南
网络安全 · 2026-07-25

IIS 7.0网站漏洞利用与修复方法指南

先来聊聊当前网络安全领域比较流行的一种实战技巧——以PHP环境为例,详细讲解图片马合并与解析漏洞利用的具体操作步骤。整个过程并不复杂,但细节往往决定成败,大家跟着流程逐步操作即可。 合并一张PHP一句话图片马 首先,我们需要将一句话木马脚本与一张正常图片合并,生成一个看似无害的图片文件。合并方式主要

织梦管理系统后台查找功能教程
网络安全 · 2026-07-25

织梦管理系统后台查找功能教程

通过SQL注入漏洞获取织梦CMS(DedeCMS)管理员密码后,满怀期待地准备进入后台,却发现怎么也找不到登录入口——这种情况其实相当常见。别着急,这里有一个实用的技巧值得尝试。 直接在网站地址后面添加以下路径: include dialog select_media php?f=form1 mur

微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析
网络安全 · 2026-07-25

微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析

BrowseDialog Class (ccrpbds6 dll) 导致 Internet Explorer 拒绝服务漏洞分析 该漏洞的PoC(概念验证代码)实现极为直接——触发浏览器崩溃的条件简单得令人意外。测试环境采用Windows XP Professional SP2(已安装全部补丁)并运行