acidicoala/Koaloader

GitHub: acidicoala/Koaloader

一个利用DLL搜索顺序劫持机制实现自动注入指定DLL的工具集合,支持多种常见Windows系统DLL作为代理。

Stars: 402 | Forks: 41

= 🐨 Koaloader 📥 一个使用搜索顺序劫持来自动注入指定 DLL 的 DLL 集合。 == 🔗 链接 https://cs.rin.ru/forum/viewtopic.php?p=2536753#p2536753[官方论坛主题] == 🚀 使用方法 只需将其中一个代理 DLL 放置在进程尝试加载它的位置,并设置配置文件以加载您希望注入的 DLL。 === 📚 支持的代理 注意:➕ 如果您希望看到其他代理 DLL 得到支持,欢迎在官方论坛主题中请求,请注明 DLL 名称并描述其用例。 # .点击查看所有代理 [%collapsible] * [x] *audioses.dll* * [x] *d3d9.dll* * [x] *d3d10.dll* * [x] *d3d11.dll* * [x] *dinput8.dll* * [x] *dwmapi.dll* * [x] *dxgi.dll* * [x] *glu32.dll* * [x] *hid.dll* * [x] *iphlpapi.dll* * [x] *msasn1.dll* * [x] *msimg32.dll* * [x] *mswsock.dll* * [x] *opengl32.dll* * [x] *profapi.dll* * [x] *propsys.dll* * [x] *textshaping.dll* * [x] *version.dll* * [x] *winhttp.dll* * [x] *wldp.dll* * [x] *winmm.dll* * [x] *xinput9_1_0.dll* ==== == ⚙ 配置 :fn-search-dirs: 搜索目录脚注:fn-search-dirs[搜索目录包括 Koaloader DLL 所在的目录以及目标进程的工作目录。] Koaloader 附带一个配置文件 `Koaloader.config.json`,该文件适用于任何代理 DLL。 配置文件符合标准 JSON 格式。 下面介绍每个可用选项的描述: `logging`:: 启用或禁用写入 `Koaloader.log` 文件的日志记录。 可能的值:`true`、`false`(默认)。 `enabled`:: 完全启用或禁用 Koaloader 注入。 可用于快速禁用 Koaloader 而无需修改磁盘上的文件。 可能的值:`true`(默认)、`false`。 `auto_load`:: 启用或禁用自动加载已知 DLL。 这可用于在无需 `Koaloader.config.json` 配置文件的情况下自动注入 DLL。 启用后,Koaloader 将首先在 {fn-search-dirs} 的父目录中查找已知 DLL。 如果找不到,它将递归遍历 {fn-search-dirs} 目录中的所有文件,并搜索具有已知文件名的文件。 默认:`true`。 已知文件名列表(以 32 和 64 结尾的名称分别仅由 32 位和 64 位二进制文件加载): * `Unlocker.dll`、`Unlocker32.dll`、`Unlocker64.dll` * `Lyptus.dll`、`Lyptus32.dll`、`Lyptus64.dll` * `ScreamAPI.dll`、`ScreamAPI32.dll`、`ScreamAPI64.dll` * `SmokeAPI.dll`、`SmokeAPI32.dll`、`SmokeAPI64.dll` * `smoke_api.dll`、`smoke_api32.dll`、`smoke_api64.dll` * `UplayR1Unlocker.dll`、`UplayR1Unlocker32.dll`、`UplayR1Unlocker64.dll` * `UplayR2Unlocker.dll`、`UplayR2Unlocker32.dll`、`UplayR2Unlocker64.dll` `targets`:: 指定目标可执行文件的字符串列表。 这可用于防止被无关可执行文件意外加载。 Koaloader 将仅在以下情况下注入模块: * 目标列表为空,**或者** * 目标列表包含已加载 Koaloader 的可执行文件。 `modules`:: 描述将按定义顺序加载的模块的对象列表。 每个对象具有以下属性: + [horizontal] `path`::: 指定 DLL 绝对或相对路径的字符串。 相对路径是相对于工作目录的,可能与可执行文件目录不同。 `required`::: 标记模块为加载所必需的布尔值。 这可用于指定 Koaloader 加载给定模块失败时的行为。 加载必需模块失败将导致崩溃并弹出消息框,而对于非必需模块,Koaloader 只会将错误打印到日志文件中。 默认:`true`。 您可以参考以下配置作为示例。 [sidebar] -- 这里我们定义了 2 个要加载的 DLL: * `target.dll` - 通过相对于可执行文件当前工作目录的路径 * `eucalyptus.dll` - 通过绝对路径。 ## [source,json] ## { "logging": true, "enabled": true, "auto_load": false, "targets": [ "program32.exe", "program64.exe" ], "modules": [ { "path": "target.dll", "required": true }, { "path": "C:/users/acidicoala/eucalyptus.dll", "required": false } ] } -- == 🏗️ 从源代码构建 === 🚦 前提条件 :fn-lower-ver: 脚注:lower-versions[也可能支持旧版本。] * CMake v3.24(确保 cmake 可从 powershell 使用) * Visual Studio 2022{fn-lower-ver}。 * 已在 Windows 11 SDK (10.0.22621.0) 上测试{fn-lower-ver}。 === 👨‍💻 命令 使用子模块克隆项目: ## [source,powershell] ## git clone --recurse-submodules https://github.com/acidicoala/Koaloader.git 使用所需参数运行构建脚本: ## [source,powershell] ## ./build.ps1 $Arch $Config $Proxy 其中 [horizontal] `$Arch`:: 程序架构。 有效值: * `32` * `64` `$Config`:: 构建配置。 有效值: * `Debug` * `Release` * `RelWithDebInfo` `$Proxy`:: 要构建的代理 DLL。 任何来自 `C:/Windows/System32` 且仅包含命名导出的 DLL 都有效。 示例: ## [source,powershell] ## ./build.ps1 64 Release d3d11 最终 DLL 位于 `build\$Arch\$Proxy\$Config` === 可能的改进 * [ ] 具有未命名导出(按序号)的 DLL * [ ] 缺少 System32 目录中的 DLL === 其他说明 * 版本在 link:CMakeLists.txt[CMakeLists.txt] 中定义 * 更改 link:res[res] 目录中的文件后,可能需要重新加载 CMake 项目。 * GitHub actions 会在每次推送到 `master` 时构建项目,但仅当最后一次提交被标记时才会准备草稿发布。 * CI 发布的代理 DLL 需要在 link:.github/workflows/ci.yml[ci.yml] 中定义 == 👋 致谢 请参阅 https://github.com/acidicoala/Koalabox?tab=readme-ov-file#-acknowledgments[KoalaBox Readme] 中该项目使用的开源库列表。 == 📄 许可证 本软件根据 https://unlicense.org/[Unlicense] 获得许可,其条款可在 link:UNLICENSE.txt[UNLICENSE.txt] 中获取。
标签:API接口, Bash脚本, d3d11, d3d9, dinput8, DLL劫持, DLL注入, DNS 反向解析, Homebrew安装, opengl32, Payload投递, Search Order Hijacking, Windows, Windows逆向工程, xinput, 代理DLL, 作弊工具, 后门注入, 搜索顺序劫持, 流量审计, 游戏作弊