Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
debloat — 一款用于去除可执行文件中冗余内容的 GUI 和 CLI 工具。 | Kitploit
工具/GitHubGitHub/squiblydoo/debloat
逆向工程恶意软件分析数字取证二进制分析
GitHubsquiblydoo/debloat

debloat

一款用于去除可执行文件中冗余内容的 GUI 和 CLI 工具。

查看仓库
453372个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

debloat

Debloat

Debloat 是一款 GUI 和 CLI 工具,用于从膨胀的可执行文件中移除多余的垃圾数据。

这里所说的多余垃圾数据,是指添加到二进制文件中、以防止其被送入沙箱的 100 - 800 MB 垃圾字节。这种添加垃圾数据的方法被称为对二进制文件进行“膨胀”(inflating)或“注水”(pumping)。Debloat 目前可处理 10 种最常见的膨胀手法。

由于采用 Python 构建,该应用程序可以轻松集成到其他工作流程中。目前,debloat 已被 CCCS 的 AssemblyLine 和 CERT Polska 的 MWDB 使用。

该程序可针对 Windows、MacOS、Linux 进行编译。GUI 和 CLI 的选项极少:其设计意图是尽可能简单,程序内部的逻辑会自动处理不同的使用场景。

预编译的二进制文件已包含在 Releases 中。

可以使用 pip install debloat 安装 debloat。使用 debloat 启动 CLI,使用 debloat-gui 启动 GUI。

对于高级用户,Debloat 还可以导入到其他脚本中,并单独调用其处理函数。

如何使用 GUI?

Debloat 的 GUI 旨在做到尽可能直观。 启动后,你可以将膨胀文件拖放到文本栏上,然后点击“处理文件”按钮。 一些技术信息会输出到滚动的文本框中,去除膨胀后的文件会写入文件来源的目录中。 听起来很简单?确实如此!

处理文件需要几秒钟。
image

如何使用 CLI?

使用 pip install debloat 安装后,运行命令 debloat。
debloat 可接受两个参数。第一个参数是必需的:要去除膨胀的文件。第二个参数是可选的:输出位置。如果未提供输出位置,文件将写入原始文件所在目录。

也可以使用命令 debloat-gui 从 CLI 启动 GUI。

它总是有效吗?

目前还不能。 根据我最近的分析,debloat 能够在 97.8% 的情况下从膨胀文件中移除垃圾数据。

在之前的版本中,debloat 可能会意外移除过多的二进制内容。除非你使用 "--last-ditch" 开关,否则这种情况不会再发生。如果你需要用到这个开关,请考虑共享该样本以进行进一步分析。该选项现已添加到 GUI 中。从功能上讲,这个函数会移除整个覆盖层(如果存在的话)。在某些情况下这是必要的,因为找不到垃圾数据的模式---这最常见于压缩效果不佳的样本中。

使用场景(图片来自 Malcat)

完整支持

  • 膨胀数据被附加到已签名 PE 的末尾。
    在下图中,膨胀数据被附加到了可执行文件的末尾。
    Screenshot 2023-02-11 at 3 32 36 PM

  • 已签名或未签名的加壳可执行文件。
    在下图中,膨胀数据在加壳后被附加到了可执行文件上。
    Screenshot 2023-02-11 at 3 44 10 PM

  • 已签名可执行文件的膨胀数据位于 PE 的 .rsrc 节中。
    在下图中,膨胀数据被识别为位于 .rsrc 节中,并将其从 PE 中移除。
    Screenshot 2023-02-11 at 3 35 21 PM

  • 膨胀数据被添加到 PE 节内部的情况。
    在下图中,膨胀数据被包含在一个名为 [0] 的 PE 节中。
    Screenshot 2023-02-11 at 3 26 52 PM

  • 可执行文件为 Nullsoft Scriptable Installer System 可执行文件(NSIS,又称 Nullsoft)的情况。 这些 exe 是可能包含一个或多个文件的安装程序。其中包含的文件可能是恶意的,也可能不是。(有时攻击者添加文件仅仅是为了增大文件体积。)安装程序中的所有文件都会被提取到一个新目录中。该目录还包含安装程序的脚本,可以查阅该脚本来确定哪些文件可能是恶意的。 在下图中,Malcat 已将该可执行文件识别为 NSIS 安装程序。 image

部分支持

  • 垃圾数据过于随机且熵过高的情况。在这些情况下,一个名为 "--last-ditch" 的开关/选项

其他使用场景

有些使用场景下该工具无法生效。不过,我计划在公布太多细节之前先解决这些问题。

为什么?

能够轻松处理膨胀可执行文件的工具似乎为数不多。我见到最多的两个工具是“foremost”(用于从磁盘镜像中恢复二进制文件)和“pecheck”。

Foremost 在垃圾字节为空字节 (0x00) 的情况下效果最佳,而当二进制文件带有伪造或真实签名时,它就显得力不从心。用它来移除文件中的膨胀数据并非其原本的用途。

Pecheck 已开发了 14 年以上,其命令行选项有些令人困惑。移除膨胀内容并非该脚本的主要功能。为了处理已签名的可执行文件,Pecheck 必须与另一个工具(disitool)配合使用。根据我的经验,pecheck 有时还会出错,返回一个体积是原始膨胀可执行文件两倍的可执行文件。如果你处理的二进制文件数量不多,这些因素似乎还可以接受,但随着二进制文件数量和处理方法的增加,就需要一个专门用于移除膨胀数据的工具。

Binary Refinery 是一款了不起的工具。它的开发初衷是成为命令行版的 CyberChef。虽然这两款工具都很出色,但它们都有一个共同的缺点:需要用户知道应该应用哪些配方。

有一些可靠的手动方法可以从二进制文件中移除膨胀数据,但这些方法可能非常繁琐,而且并非所有分析师都具备这样做的技能。这款工具免去了你需要了解如何手动移除膨胀数据的负担。此外,它还支持更好的规模化扩展。脚本中使用的原理也使得在需要自动化时能够更好地扩展。

如何构建?

请遵循适合你平台的构建命令。构建命令之间的主要区别在于图标的格式。
MacOS
pyinstaller --onefile --noconsole --additional-hooks-dir=./hook --icon=debloat.icns gui.py

Windows
pyinstaller --onefile --noconsole --additional-hooks-dir=./hook --icon=debloat.ico gui.py

Linux
pyinstaller --onefile --noconsole --icon=debloat.ico --collect-all tkinterdnd2 gui.py

想参与讨论?

可以考虑加入 debloat Discord。

致谢

特别感谢 Binary Refinery 的创建者 Jesko Hüttenhain。NSIS 提取功能基于他对 NSIS 文件格式的逆向工程。如果你还没用过 Binary Refinery,不妨去看看。

这个项目下一步的计划是什么?

批量处理:处理一个目录中的所有文件并生成报告。

更好地支持在 debloat 之外使用这些处理方法。

支持无需解压即可去除膨胀。

下载工具