吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4725|回复: 19
收起左侧

[原创] 使用Scylla进行Dump时遇到的Bug分析、利用与修复

  [复制链接]
寞叶 发表于 2025-8-17 23:37
本帖最后由 寞叶 于 2025-8-18 00:24 编辑

前言


Scylla是一个常用的内存转储(Dump)和导入表修复工具,你可以在很多脱壳教程中见到它,它是开源的(https://github.com/NtQuery/Scylla)。

scylla

scylla


分析


下图中的代码展示了Scylla进行内存转储的主要过程。

code1

code1

code2

code2

阅读源码可以了解,在进行Dump时,Scylla假定每个区段的正常大小为对应的 Virtual Size。
操作系统加载PE文件时,若 Virtual Size 大于 Raw Size,会用0填充内存中的剩余空间。
Virtual Size 也可以小于 Raw Size,下图是我用msvc编译出的一个例子。由于内存对齐,.text区段加载到内存中的大小为0x13000,这使得可以容纳略大一些的数据(0x12600)。

sample

sample

在未加壳情况下,Scylla Dump一般不会出现问题,即使 Virtual Size 小于 Raw Size,Scylla也只是读取内存中的数据并覆盖掉前面部分的原始数据。但是当程序被加壳压缩时,Raw Size和Raw Data被清空,Scylla的Dump在特定情况下就会发生数据丢失问题。

利用


可以构造特定的区段结构进行反Dump。以下是手动修改程序的步骤,模拟被加壳时的状态。
1、新增一个空的可执行区段,大小比.text略大一些。
2、备份.text区段的数据至新区段中,清空.text区段的数据,清空Raw size,修改.text区段属性可写。
3、在新区段开头使用汇编恢复被清空的.text数据,修改入口点。
4、修改.text区段的Vitual Size至一个比原始值略小的特殊值(0x12001),.text区段加载到内存中的大小仍为0x13000。

sample_pack

sample_pack

被加壳后的程序运行并不会发生问题。让被加壳的程序运行到OEP,再使用Scylla Dump,可以发现Dump后的程序丢失了末尾的代码,Dump后的程序无法正常运行。

sample_dump

sample_dump


修复

以下是我的修复,认定的正常大小不应为Virtual Size,修改为内存对齐后的大小。附件为修复后的Scylla。

fix_scylla

fix_scylla

Scylla_x86.zip (221.26 KB, 下载次数: 138) Scylla_x64.zip (256.58 KB, 下载次数: 202)

免费评分

参与人数 5威望 +1 吾爱币 +24 热心值 +4 收起 理由
a865170 + 1 + 1 你这个修改的有BUG,一些区段的可写属性被去掉了,导致运行不起来
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yp17792351859 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
china0man + 1 我很赞同!
照片依旧 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 寞叶 发表于 2025-8-18 00:22
本帖最后由 寞叶 于 2025-8-18 00:26 编辑
m_h 发表于 2025-8-18 00:21
修复对应的 是哪个 git 版本号?

下载最新的分支v0.9.8,bug是之前的版本都有,这个挺久没更新了。
m_h 发表于 2025-8-18 00:21
m_h 发表于 2025-8-18 00:38
寞叶 发表于 2025-8-18 00:22
下载最新的分支v0.9.8,bug是之前的版本都有,这个挺久没更新了。

好的
https://github.com/ergrelet/Scylla   这里似乎 也更新了不少。
 楼主| 寞叶 发表于 2025-8-18 00:41
m_h 发表于 2025-8-18 00:38
好的
https://github.com/ergrelet/Scylla   这里似乎 也更新了不少。

我看了一下,这个版本并没有修复这个问题,不过有人更新也是好事
m_h 发表于 2025-8-18 00:43
寞叶 发表于 2025-8-18 00:41
我看了一下,这个版本并没有修复这个问题,不过有人更新也是好事

克隆并修复 发布自己的
加菲猫_1999 发表于 2025-8-18 11:34
好用的插件
x64dbg 从某个版本开始默认不加载这个插件了
baguobuyi 发表于 2025-8-18 11:43
好东西,感谢分享,正好需要
atookpp 发表于 2025-8-18 12:54
好东西,感谢分享,及时雨
cxzj 发表于 2025-8-19 12:43
感谢楼主分享好东西
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-10-16 16:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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