kyukyu1-prog/Mooring

GitHub: kyukyu1-prog/Mooring

Mooring 是一个 Windows 平台上的轻量级进程完整性与防注入检测库,帮助独立开发者以低成本检测代码篡改、未授权注入和运行时调试。

Stars: 0 | Forks: 0

# Mooring 适用于 Windows 应用程序的进程完整性与防注入检测工具包。Mooring 是一个小型检测器库,应用程序可以针对自身的进程调用它,以暴露代码篡改、未授权注入或运行时调试的迹象。 ## 检测内容 | 检测器 | 捕获 | |-----------------------|----------------------------------------------------------------------------| | `inline_hook` | 导出函数的序言补丁(`JMP rel32`、`MOV r64,imm64;JMP r`、间接跳转) | | `iat_hook` | 重定向到原始模块外部的 Import Address Table 条目 | | `thread_origin` | `Win32StartAddress` 位于所有已加载模块之外的线程 | | `hidden_module` | 存在于地址空间但未出现在 loader list 中的 `MEM_IMAGE` 区域 | | `hardware_breakpoint` | 调用者以外的任何线程上非零的 `Dr0`–`Dr3` | 有关每个检测器测量什么、其背后的技术以及在哪里可能产生误报,请参阅 [`docs/detector-reference.md`](docs/detector-reference.md)。 ## 为什么 商业的运行时应用自我保护(RASP)和反作弊产品对于 Mooring 的目标受众来说遥不可及:独立游戏开发者、模组社区和面临相同威胁面(DLL 注入、inline hooking、内存篡改、调试器辅助的逆向工程)却没有预算或许可条件去购买 EAC 级别产品的小型 ISV。Mooring 是该基础技术栈中一个体积小巧、可嵌入、许可宽松的替代方案。 它特意设计得很狭窄。它不提供攻击性工具。它不试图自己*阻止*任何事情——它只是为宿主应用程序提供足够的信号以作出反应。 ## 快速开始 ``` #include int main() { auto result = mooring::detectors::scan_self(); for (auto const& f : result.findings) { // ... report, log, react ... } return result.count(mooring::severity::critical) ? 1 : 0; } ``` 更完整的示例在 [`examples/scan_self.cpp`](examples/scan_self.cpp) 中。 ## 构建 要求:Windows 10 或更高版本,CMake 3.20+,MSVC 2019+ 或 clang-cl 13+。目前仅支持 x64。 ``` cmake -S . -B build -A x64 cmake --build build --config Release .\build\examples\Release\scan_self.exe ``` 静态库位于 `build\Release\mooring.lib`。示例可执行文件位于 `build\examples\Release\scan_self.exe`。 ## 布局 ``` include/mooring/ public API headers src/core/ shared utilities (PEB walk, PE parser) src/detectors/ one .cpp per detector examples/ sample programs docs/ architecture and detector reference ``` ## 嵌入者注意事项 在将 Mooring 接入实际应用程序之前,有几点值得了解: - **在后台线程上运行。** 完整的 `scan_self()` 会读取每个已加载模块的磁盘映像以比较序言字节;在大型进程中,这是相当大的 I/O 开销。不要因此阻塞你的 UI 线程。 - **重新扫描而不是只扫描一次。** 一些信号(正在加载中的模块、正在创建中的工作线程)可能会瞬间看起来像是发现项。在短暂的延迟后经过两次扫描依然存在的发现项,是真实发现的可能性要大得多。 - **由你决定如何处理发现项。** Mooring 只负责报告;反应策略由宿主决定。一个常见的起点是:`critical` → 故障关闭(退出、禁用敏感功能、拒绝网络握手),`suspicious` → 记录并观察,`info` → 仅限遥测。 - **白名单是你自己的问题。** Mooring 没有为已知的分析器、调试器或合法的 hookers 捆绑提供白名单。“我的用户运行的工具”集合是特定于应用程序的;每个 `finding` 都包含足够的地址 / 模块 / 名称详细信息,供你根据需要进行过滤。 ## 范围与非目标 Mooring 是一个*防御性*工具包。它研究攻击性技术以构建检测和加固原语,并且不将它们作为终端用户武器发布。有关明确的边界以及针对第三方防御产品的发现披露策略,请参阅 [`SCOPE.md`](SCOPE.md)。 ## 许可证 MIT。详见 [`LICENSE`](LICENSE)。
标签:Bash脚本, C++, DOM解析, 反注入, 反调试, 安全意识培训, 数据擦除, 端点可见性, 运行时应用自保护, 进程完整性