使用OllyDbg手动脱壳RLPack V1.17加壳DLL文件完整详细步骤教程
RLPack壳脱壳实战教程:从OEP定位到完美修复 RLPack壳在加壳DLL时,其OEP(原始入口点)通常处于未加密状态,查找起来非常简便。其原理颇具特色:当DLL卸载时,程序会再次从入口点(EP)开始执行,经过几次跳转后,OEP便会直接暴露出来。 下面分析入口处的代码: 0094BEA0 807
RLPack壳脱壳实战教程:从OEP定位到完美修复
RLPack壳在加壳DLL时,其OEP(原始入口点)通常处于未加密状态,查找起来非常简便。其原理颇具特色:当DLL卸载时,程序会再次从入口点(EP)开始执行,经过几次跳转后,OEP便会直接暴露出来。
下面分析入口处的代码:
0094BEA0 807C24 08 01 cmp byte ptr ss:[esp+8],1
在OllyDBG调试器中,程序会暂停在EP位置。此处有一个关键判断:当DLL卸载时,执行流程会进入一条特殊路径:
0094BEA5 0F85 7E010000 jnz 0094C029 0094C029 E9 BE3AFAFF jmp 008EFAEC
注意跳转地址0094C029,这就是通往OEP的捷径。实际跟踪发现,该路径几乎固定不变,因此可以放心使用。
RLPack输入表修复:利用软肋简化脱壳
RLPack V1.1X Full Edition版本在加壳EXE文件时会对输入表进行加密,但有趣的是,它对DLL文件的输入表几乎不做处理,这大大简化了脱壳过程。
具体操作时,可设置BP GetProcAddress断点。按Shift+F9运行,中断后清除断点,再按Alt+F9返回,即可观察到输入表处理过程:
0094BF57 56 push esi 0094BF58 FF95 E3090000 call near dword ptr ss:[ebp+9E3] ; kernel32.LoadLibraryA ... 0094BF9F FF95 E7090000 call near dword ptr ss:[ebp+9E7] ; kernel32.GetProcAddress 0094BFA5 85C0 test eax,eax
返回后,可以看到系统函数地址被逐一写入:
0094BFAD 8907 mov dword ptr ds:[edi],eax ; ntdll.RtlDeleteCriticalSection
此时EDI的值为008F3154,这个地址指向输入表所在位置。在数据窗口中按Ctrl+G输入008F3154,然后右键选择Long→Address,即可查看完整的输入表:
008F3150 00000000 008F3154 7C93188A ntdll.RtlDeleteCriticalSection 008F3158 7C9210ED ntdll.RtlLea veCriticalSection ... 008F37E0 7D610EC0 shell32.ShellExecuteA 008F37E4 00000000
根据这些数据,可以推算出输入表的RVA(相对虚拟地址)和Size(大小):
- 输入表开始RVA = 008F3154 - 00870000 = 00083154
- 输入表Size = 008F37F0 - 008F3154 = 0000069C
重定位表分析:本篇教程的核心价值
跟踪分析发现,RLPack并未对重定位表进行加密,这为脱壳提供了极大便利。
以下代码在清理内存后调用了重定位处理函数:
0094C023 E8 55000000 call 0094C07D
实际的重定位处理逻辑如下:
0094C07D 60 pushad 0094C07E 8BB5 460A0000 mov esi,dword ptr ss:[ebp+A46] ; [ebp+A46]=00087000 重定位表RVA ... 0094C088 8BBD 3E0A0000 mov edi,dword ptr ss:[ebp+A3E] ; [ebp+A3E]=00400000 文件基址 0094C08E 8B4424 48 mov eax,dword ptr ss:[esp+48] ; [esp+48]=00870000 映像基址 0094C098 3BC7 cmp eax,edi 0094C09A 74 53 je short 0094C0EF
这里有一个关键判断:只有当映像基址与文件基址不一致时,才需要进行重定位处理。这意味着,如果当前程序没有重定位,可以直接Dump,脱壳后无需修改Dump文件的基址。
处理完成后,ESI的值变为009000F8,据此可计算出重定位表的大小:
- 重定位表Size = 009000F8 - 008F7000 = 000090F8
脱壳完成与修复步骤
最后,程序跳转到OEP:
0094C029 E9 BE3AFAFF jmp 008EFAEC
OEP的RVA计算为:008EFAEC - 00870000 = 0007FAEC。
使用ImportREC进行修复时,需注意:由于该DLL加载后已完成重定位处理,因此应取消勾选“Use PE Header From Disk”选项。选择OllyDbg的loaddll.exe进程,Pick DLL选择iBox.dll,并填入以下参数:
- OEP RVA = 0007FAEC
- 输入表RVA = 00083154
- 输入表Size = 0000069C
获取Imports后,可通过新增区段进行修复,或将输入表放置在程序的无用空白区域。最后使用LordPE修改dumped_.dll的重定位表信息:Relocation Table RVA = 00087000,Relocation Table Size = 000090F8。
至此,脱壳完成。如需更完美的优化,可能还需进一步打磨,但基本的脱壳流程已全部呈现。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
零基础Python网络安全学习指南,包住宿实战培训
先抛出几个核心判断:网络安全人才缺口确实已经超过70万。这个数字不算夸张,各大招聘网站上安全岗位的薪资涨幅和需求增长都是实实在在的。但实话实说,行业真正缺的是能上手干活的人,不是只懂几个理论概念的新手。因此,一套扎实且成体系的训练方案,对于零基础转行或进阶提升就显得格外关键。 从零基础到能够独立应对
网络安全定义与核心概念详解
谈到网络安全,不同组织与标准体系对其定义虽有差异,但核心目标高度统一:保护信息与系统不受威胁侵害。以下梳理几种主流定义—— 什么是网络安全? 国际标准化组织(ISO)在ISO-74982文献中将安全定义为:最大程度地降低数据和资源遭受攻击的可能性。该定义虽简短,却精准点出安全的本质——即风险控制。
IIS 7.0网站漏洞利用与修复方法指南
先来聊聊当前网络安全领域比较流行的一种实战技巧——以PHP环境为例,详细讲解图片马合并与解析漏洞利用的具体操作步骤。整个过程并不复杂,但细节往往决定成败,大家跟着流程逐步操作即可。 合并一张PHP一句话图片马 首先,我们需要将一句话木马脚本与一张正常图片合并,生成一个看似无害的图片文件。合并方式主要
织梦管理系统后台查找功能教程
通过SQL注入漏洞获取织梦CMS(DedeCMS)管理员密码后,满怀期待地准备进入后台,却发现怎么也找不到登录入口——这种情况其实相当常见。别着急,这里有一个实用的技巧值得尝试。 直接在网站地址后面添加以下路径: include dialog select_media php?f=form1 mur
微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析
BrowseDialog Class (ccrpbds6 dll) 导致 Internet Explorer 拒绝服务漏洞分析 该漏洞的PoC(概念验证代码)实现极为直接——触发浏览器崩溃的条件简单得令人意外。测试环境采用Windows XP Professional SP2(已安装全部补丁)并运行
- 热门数据榜
相关攻略
2026-07-25 22:28
2026-07-25 22:28
2026-07-25 22:28
2026-07-25 22:28
2026-07-25 22:10
2026-07-25 22:10
2026-07-25 22:10
2026-07-25 22:10
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

