Gabryx412-coder/RuntimeMemoryGuardian
GitHub: Gabryx412-coder/RuntimeMemoryGuardian
Runtime Memory Guardian 是一个纯防御性的 C++20 跨平台库,通过只读方式监控应用程序运行时内存完整性,检测代码段篡改、hook 注入和异常模块加载。
Stars: 1 | Forks: 0
# Runtime Memory Guardian
[](https://github.com/Gabryx412-coder/RuntimeMemoryGuardian/actions/workflows/ci-linux.yml)
[](https://github.com/Gabryx412-coder/RuntimeMemoryGuardian/actions/workflows/ci-windows.yml)
[](https://github.com/Gabryx412-coder/RuntimeMemoryGuardian/actions/workflows/code-quality.yml)
[](LICENSE)
[](https://en.cppreference.com/w/cpp/20)
**Runtime Memory Guardian (RMG)** 是一个现代化的 C++20 库,用于在 Windows 和 Linux 上进行**防御性的、只读的运行时内存监控**。它帮助应用程序检测运行时篡改的迹象——修改过的代码段、可疑的 inline/IAT/EAT hooks,以及意外的模块加载——所有这些都是使用已公开记录的、非侵入式的技术来实现的。
RMG 专为安全工程师、反作弊/反篡改开发者,以及任何希望自己的应用程序能够察觉其内存是否在运行时被修改的人而打造。
## 设计原则
- **纯粹的防御性。** RMG 只读取内存并报告观察结果。它绝不对目标进程中的任何内容进行 patch、inject 或修改。
- **天生的跨平台。** 单一的 `IPlatformTraits` 抽象支撑了 Windows 和 Linux 的实现;领域逻辑(完整性检查、hook 检测、模块监控)只编写一次。
- **没有隐藏的依赖。** 核心库零第三方依赖——仅使用 C++20 标准库。测试和基准测试获取 GoogleTest/Google Benchmark 仅仅是为了开发目的。
- **大声报错,绝不静默。** 每个容易失败的操作都会返回 `rmg::core::Result`(基于 `std::expected`);没有需要捕获的隐藏异常。
## 功能
- 🔒 **完整性基线** — 对代码段进行哈希处理(默认使用 SHA-256),并在稍后检测任何偏差。
- 🔍 **内存扫描** — 使用灵活的过滤器(仅可执行、W^X 检测、按模块)枚举和读取内存区域。
- 🪝 **Hook 检测** — 识别已公开记录的 inline-hook 操作码模式(`JMP`、`JMP [rip+disp32]`、`PUSH;RET` trampolines);IAT/EAT 验证逻辑已实现并为计划中的镜像格式解析器做好了准备(参见 [docs/architecture/HOOK_DETECTOR.md](docs/architecture/HOOK_DETECTOR.md))。
- 📦 **模块监控** — 当模块被意外加载或卸载时获得通知。
- ⚙️ **连续或按需监控** — 通过 `ProcessMonitor` 运行后台轮询循环,或手动驱动检查。
- 🖥️ **CLI 工具** — `rmg-cli` 用于临时检查,`rmg-baseline-generator` 用于生成随你的应用程序一起发布的基线。
## 快速开始
```
#include
#include
int main() {
auto guardian = rmg::api::RuntimeMemoryGuardian::createForSelf();
if (!guardian) {
std::fprintf(stderr, "%s\n", guardian.error().toDiagnosticString().c_str());
return 1;
}
if (auto result = guardian->establishBaseline(); !result) {
std::fprintf(stderr, "%s\n", result.error().toDiagnosticString().c_str());
return 1;
}
auto report = guardian->checkIntegrity();
if (report && report->isValid) {
std::printf("No tampering detected.\n");
}
}
```
请参阅 [`examples/`](examples/) 查看五个逐步丰富的使用场景,以及 [docs/guides/GETTING_STARTED.md](docs/guides/GETTING_STARTED.md) 获取完整的演练。
## 构建
```
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build --output-on-failure
```
有关所有 CMake 选项、平台要求和 CMake 预设,请参见 [docs/guides/BUILDING.md](docs/guides/BUILDING.md)。
## 文档
- [入门指南](docs/guides/GETTING_STARTED.md)
- [从源码构建](docs/guides/BUILDING.md)
- [集成指南](docs/guides/INTEGRATION_GUIDE.md)
- [架构概述](docs/architecture/OVERVIEW.md)
## 支持的平台
| 平台 | 状态 |
|----------|--------|
| Windows 10/11 (x64) | ✅ 支持 |
| Linux (x64, glibc) | ✅ 支持 |
| macOS | ❌ 目前不支持 |
## 安全
如果你发现安全漏洞,请遵循 [SECURITY.md](SECURITY.md) 中描述的负责任的披露流程。请勿针对对安全敏感的报告公开提 issue。
## 许可证
Runtime Memory Guardian 采用 [MIT License](LICENSE) 授权。
标签:API接口, Bash脚本, C++20, DNS 反向解析, Hook检测, 内存完整性, 系统底层, 防篡改