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

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

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

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

工具目录

分类

查看所有分类
Loading categories
blenny — 一种载荷投递系统,可将载荷嵌入可执行文件的图标文件中! | Kitploit
工具/GitHubGitHub/frank2/blenny
Payload生成隐写术红队Payload 开发对抗性攻击
GitHubfrank2/blenny

blenny

一种载荷投递系统,可将载荷嵌入可执行文件的图标文件中!

查看仓库
74102年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

BLENNY!

Blenny 是一款面向 Windows 的概念验证型载荷混淆工具,它可以将可执行载荷数据隐藏在可执行文件的图标中。其名称来源于剑齿鳚,这种鱼会模仿清洁鱼的行为和外貌,以捕食毫无防备的鱼类。

为什么?

我已经记不清故事的具体经过,但一位名叫 retr0id(@DavidBuchanan314)的黑客提出了将载荷隐藏在可执行文件图标中的想法。由于 PNG 文件的种种特殊性质,再加上 Windows 图标文件可以包含 PNG 数据,我意识到可以相当轻松地实现这个想法,只是需要费些功夫。为此,我创建了 Facade 库——一个专门用于在 PNG 文件中生成载荷的库。

最终成果是一个紧凑的载荷文件和构建系统,可用于定制面向 Windows 的基础投放器/执行器载荷。

获取

Blenny 使用 Facade 库 从图标文件创建载荷,因此在获取仓库时,需要初始化子模块(及其子模块):

root@kitploit:~
$ git clone https://github.com/frank2/blenny.git
$ cd blenny
$ git submodule update --init --recursive

这就是初始化仓库以进行构建所需的全部操作。

构建

这个项目从设计上就是为 CMake 而生的,因此在构建此项目之前,你绝对需要获取并安装 CMake。否则项目很可能无法正常工作(除非你真的愿意手动设置所有这些 CMake 定义)。你还需要一份 Visual Studio 来编译该项目。

此项目使用大量 CMake 变量来配置构建过程。要获得一个基本的演示载荷——一只可爱的小羊朋友会出现在你的桌面上——你可以在项目主目录中运行以下命令:

root@kitploit:~
$ mkdir build
$ cd build
$ cmake -D BLENNY_ZTEXT_PAYLOAD=ON ../
$ cmake --build ./ --config Release
$ ./Release/blenny.exe

默认情况下,它会从可执行文件的图标中提取一个名为“blenny.exe”的可执行文件到当前用户的临时目录,然后执行它。默认载荷是 @AdrianoTiger 的 DesktopPet,这是对 90 年代经典 esheep.exe 的专门重建。

实现这一切的所有变量都是可定制的!必须设置一个载荷变量(BLENNY_TRAILING_PAYLOAD、BLENNY_TEXT_PAYLOAD、BLENNY_ZTEXT_PAYLOAD 或 BLENNY_STEGO_PAYLOAD)。该变量控制载荷最终如何被塞入图标中。有关这些技术的详细信息,请参阅 Facade 库。例如,要使用自己的载荷,请执行以下操作:

root@kitploit:~
$ cmake -D BLENNY_PAYLOAD_FILE="path/to/your/payload.exe" -D BLENNY_ZTEXT_PAYLOAD=ON ../
$ cmake --build ./ --config Release

以下是所有可配置项、默认值及作用的表格。

下载工具
标志类型默认值用途
BLENNY_PAYLOAD_FILE字符串"${PROJECT_SOURCE_DIR}/res/defaultpayload.exe"要嵌入到图标文件中的载荷。注意: 由于最终执行技术是 ShellExecuteA,因此它可以是任何能从文件资源管理器启动的文件,例如批处理脚本!
BLENNY_ICON_FILE字符串"${PROJECT_SOURCE_DIR}/res/defaulticon.ico"用作可执行文件的图标,并在其中嵌入载荷。注意: 并非所有图标都适用!图标文件中必须包含 PNG 图像数据。请在十六进制编辑器中检查目标图标的数据,确认其中是否包含 PNG 图像!
BLENNY_TRAILING_PAYLOAD布尔型OFF启用图标 PNG 文件中的尾部数据载荷。
BLENNY_TEXT_PAYLOAD布尔型OFF启用图标 PNG 文件中的 tEXt 数据块载荷。
BLENNY_ZTEXT_PAYLOAD布尔型OFF启用图标 PNG 文件中的 zTXt 数据块载荷,这是一种经过压缩的 tEXt 载荷。
BLENNY_STEGO_PAYLOAD布尔型OFF启用图标 PNG 文件中的隐写载荷。注意: 由于大多数图标的图像大小被限制为 256x256,并非所有载荷都能通过此选项容纳!
BLENNY_PAYLOAD_KEYWORD字符串"blenny"对于 text/ztext 载荷,设置用于标记载荷数据的关键字。
BLENNY_ADMIN布尔型OFF启用 runas 关键字,以管理员身份运行载荷。
BLENNY_PATH字符串"%TEMP%"执行前存放载荷的路径。环境变量将在执行时展开。
BLENNY_FILENAME字符串"blenny"提取时为载荷指定的文件名。
BLENNY_RANDOM_FILENAME布尔型OFF启用后,在提取时为载荷生成随机文件名。
BLENNY_RANDOM_FILENAME_LENGTH整型8调整随机文件名的长度。
BLENNY_RANDOM_FILENAME_RANDOM_LENGTH布尔型OFF在提取时让文件名具有随机长度。
BLENNY_PAYLOAD_ARGS字符串""执行时传递给载荷文件的参数。
BLENNY_FILE_ATTRIBUTES整型0x80 (即 FILE_ATTRIBUTE_NORMAL)创建文件时赋予该文件的文件属性。
BLENNY_CMD_SHOW整型5 (即 SW_SHOW)执行时载荷文件的显示方式。另一个示例是 SW_HIDE,其值为 0。