SyedShaheerHussain/Memory-scanner-for-injected-DLLs-and-shellcode-detection-C

GitHub: SyedShaheerHussain/Memory-scanner-for-injected-DLLs-and-shellcode-detection-C

一款用纯 C 语言编写的跨平台只读内存取证 CLI 工具,通过扫描进程内存权限、已加载模块异常和 shellcode 启发式特征来检测可疑注入行为并生成可解释的威胁评分报告。

Stars: 2 | Forks: 0

# 🛡️ MemoryScannerX ### *一款使用 C 语言编写的只读、跨平台内存取证与端点可见性工具* **开发者:** Syed Shaheer Hussain **版权所有:** © 2026 Syed Shaheer Hussain。保留所有权利。 **许可证:** MIT **语言:** ISO C17(纯 C,非 C++) **平台:** Linux ✅(已构建并测试) | Windows ⚠️(已编写代码,但尚未在真实的 Windows 机器上编译/测试) `#cybersecurity` `#memory-forensics` `#malware-analysis` `#endpoint-security` `#C-programming` `#cross-platform` `#defensive-security` `#DFIR` `#CLI-tool` `#open-source` ## ⚠️ 重要说明 — 范围澄清(请先阅读) 作为本文档的一部分被要求实现的某些功能**并不属于本项目**,且已被刻意排除: - ❌ **从 Chrome/浏览器中提取各网站保存的密码或用户名** — 这是凭证收集,正是信息窃取恶意软件所使用的功能。无论出于何种理由,MemoryScannerX 都**绝不会**这样做。 - ❌ **反钓鱼 / 电子邮件钓鱼检测** — 这属于完全不同类别的工具(网页/电子邮件内容分析)。MemoryScannerX 根本不涉及该领域 — 它只检查**进程内存**,而不涉及电子邮件或网站。 如果确实需要已保存凭证查看器或钓鱼/电子邮件检测器,它们必须是**完全独立的项目** — 就像之前的“RedFlag”诈骗检测器 Web 应用一样 — 并且必须严格在道德和法律的范围内进行设计(例如,通过 Chrome 自身的 `chrome://settings/passwords` 页面查看您自己保存的密码 — 通过第三方工具执行此操作是不合适且有风险的)。 以下所有内容仅反映 **MemoryScannerX 中实际存在的功能。** ## 📖 目录 1. [简介](#-1-introduction) 2. [使命与概述](#-2-mission--overview) 3. [目标](#-3-objectives) 4. [什么是内存取证?(概念)](#-4-what-is-memory-forensics-concepts) 5. [本项目的价值所在](#-5-why-this-project-has-value-market-relevance) 6. [功能](#-6-features) 7. [函数 / 模块分解](#-7-functions--modules-breakdown) 8. [GUI / 界面](#-8-gui--interface) 9. [使用的技术](#-9-technologies-used) 10. [架构](#-10-architecture) 11. [文件夹结构](#-11-folder-structure) 12. [流程图 — 工作原理](#-12-flow-chart--how-it-works) 13. [安装说明](#-13-installation) 14. [运行工具](#-14-running-the-tool) 15. [用法 — 每个命令的详细说明](#-15-usage--every-command-explained) 16. [示例输出](#-16-sample-output) 17. [威胁评分的工作原理](#-17-how-threat-scoring-works) 18. [优势](#-18-advantages) 19. [劣势 / 限制](#-19-disadvantages--limitations) 20. [注意事项与安全说明](#-20-cautions--safety-notes) 21. [免责声明](#-21-disclaimer) 22. [在构建此项目时学习/研究了什么](#-22-what-was-studied--learned-building-this) 23. [未来增强](#-23-future-enhancements--roadmap) 24. [常见问题解答 (FAQ)](#-24-faq) 25. [致谢与版权](#-25-credits--copyright) ## 🧭 1. 简介 **MemoryScannerX** 是一款使用 **C 编程语言**编写的**命令行界面 (CLI) 防御性安全工具**。对于任何正在运行的进程,其目的在于: - 🧠 检查 **RAM(虚拟内存)** - 🔍 检测可疑的**内存权限**(例如同时具有可写和可执行权限的内存区域) - 📦 列出已加载的**模块/DLL/共享库**并识别其中的异常 - 🐛 启发式检测**类似 shellcode 的模式**(高熵值、NOP sled、匿名可执行内存) - 📊 将所有这些观察结果结合成一个**透明、可解释的威胁评分** 它的工作原理非常类似于**任务管理器和杀毒软件的内存扫描功能的结合体** — 但仅提供**只读可见性**;它从不修改或阻止任何事物。 ## 🎯 2. 使命与概述 **概述:** | 项目 | 详情 | |---|---| | 类型 | 命令行界面 (CLI) 工具 | | 类别 | 防御性安全 / DFIR / 端点可见性 | | 核心操作 | 对进程和内存进行**只读**检查 | | 不会做的事情 | 修改、终止、注入或挂起任何进程 | | 目标受众 | 安全专业学生、恶意软件分析师、SOC 分析师、DFIR 响应人员 | ## 🏆 3. 目标 1. ✅ 构建一个**可移植、无依赖**的 C 代码库,可在 Linux 和 Windows 上运行。 2. ✅ 仅使用**已记录的操作系统 API**(`/proc`、`VirtualQueryEx`、`Toolhelp32`、`PSAPI`)来枚举进程和内存 — 不使用任何未公开或内核黑客技术。 3. ✅ 为每次检测附加一个**通俗易懂的原因** — 没有黑盒评分。 4. ✅ 严格保持在**防御/只读范围内** — 不具备任何攻击、注入或规避能力。 5. ✅ 保持代码模块化,以便未来可以轻松添加新模块(PE/ELF 解析器、hook 检测、YARA 等)。 ## 🧪 4. 什么是内存取证?(概念) **内存取证**(也称为“RAM 取证”)是一种网络安全技术,涉及分析运行中系统的**实时内存 (RAM)**,以确定: - 🕵️ 恶意代码是否已被直接加载到内存中(而从未触及磁盘) - 🕵️ 合法进程内部是否**注入/隐藏了代码** - 🕵️ 内存区域的权限是否偏离了“正常”状态(例如,数据区域突然变为可执行) ### 本项目中使用的关键概念: - **虚拟内存区域** — 每个进程都有自己的虚拟地址空间,被划分为更小的“区域”(堆、栈、已加载库、匿名内存等)。 - **内存权限 (R/W/X)** — 每个区域都可以是可读、可写或可执行的。同时**具有可写和可执行权限 (W+X)** 是一个**典型的危险信号**(合法代码通常是“读取+执行”或“读取+写入”,很少同时具备两者)。 - **香农熵** — 衡量数据“随机”程度的数学指标。加密、打包或压缩的恶意代码通常显示出极高的熵值(在最高 8.0 中大于 7.2)。 - **隐藏模块** — 恶意软件有时会将其已加载的库从操作系统的正常模块列表中隐藏。检测此情况的方法是从两个独立的源提取模块列表并进行比较。 - **NOP Sled** — Shellcode 通常包含一长串 `0x90`(NOP/无操作)字节,用于将执行流程“滑动”到实际的有效载荷上。 ## 💹 5. 本项目的价值所在(市场相关性) - 🏢 **端点检测与响应 (EDR)** 行业是一个价值数十亿美元的市场(CrowdStrike、SentinelOne、Microsoft Defender for Endpoint 等都使用了类似的内存/进程检查概念)。 - 🎓 **内存取证项目**在网络安全领域的作品集中享有很高的声誉,因为它们展示了对操作系统内部原理、系统编程和威胁检测的综合掌握能力。 - 🛠️ 本项目演示了商业杀毒软件/EDR 产品内部使用的**基础技术** — 而没有任何专有或闭源的依赖。 - 📚 这是一个**用于学习目的、真实且可运行的实现** — 不是模拟/伪造的数据,而是从实际的 `/proc` 文件系统和 Win32 API 提取实时数据的工具。 ## ✨ 6. 功能 ### ✅ 当前已实现(真实、已编译、已测试): 1. 📋 **进程枚举** — 所有正在运行的进程列表(PID、PPID、名称、路径、用户、架构、线程数、RAM 使用情况) 2. 🧠 **内存区域扫描器** — 每个进程的虚拟内存区域(基地址、大小、权限、类型) 3. 🚨 **RWX / 可疑权限检测** — 可写+可执行区域,匿名可执行内存 4. 📦 **模块枚举** — 已加载的共享库/DLL 列表 5. 🕵️ **隐藏模块 / 异常检测** — 比较两个独立来源以发现不一致 6. 🐛 **Shellcode 启发式扫描器** — 熵、NOP-sled 检测、零字节比例、匿名可执行内存 7. 🔢 **香农熵计算** — 用于识别加壳/加密内容 8. #️⃣ **无依赖 SHA-256 哈希** — 用于模块/文件完整性校验 9. 📊 **透明威胁评分引擎** — 每个发现都附带原因和分值,没有黑盒 10. 📄 **JSON + 纯文本报告** — 同时提供机器可读和人类可读的格式 11. 💻 **完整 CLI** — `list`、`inspect`、`scan --pid`、`scan --all` 12. 🧪 **单元测试** — 熵、SHA-256(已通过 FIPS 测试向量验证)、评分逻辑 ### 🔜 尚未实现(如实记录,非伪造): - PE(Windows 可执行文件)深度解析器 - ELF(Linux 可执行文件)深度解析器 - API hook 检测(IAT/EAT/inline hooks) - Process hollowing 检测 - YARA 规则集成 - 插件架构 - 基于线程池的并发扫描 - Handle 枚举 - 代码洞检测 - HTML/Markdown/CSV 报告格式 - 实时/持续刷新的仪表板模式 - GitHub Actions CI pipeline ## ⚙️ 7. 函数 / 模块分解 | 模块 | 文件 | 用途 | |---|---|---| | **平台抽象层** | `utils/msx_common.h` | 通用类型、错误代码、Linux/Windows 检测宏 | | **进程模块** | `process/msx_process.*` | 获取进程列表和单进程详细信息 | | **内存模块** | `memory/msx_memory.*` | 枚举内存区域,读取区域内容 | | **模块扫描器** | `scanner/msx_modules.*` | 列出已加载库 + 隐藏模块异常检查 | | **Shellcode 扫描器** | `scanner/msx_shellcode.*` | 基于熵/NOP-sled/零比例的启发式扫描 | | **评分引擎** | `scanner/msx_scoring.*` | 计算加权的、可解释的威胁评分 | | **扫描引擎 (调度器)** | `scanner/msx_scan_engine.*` | 为给定进程运行所有模块 | | **报告生成器** | `report/msx_report.*` | 生成 JSON 和文本报告 | | **日志记录** | `utils/msx_log.*` | 带时间戳、分级别的控制台/文件日志记录 | | **熵实用工具** | `utils/msx_entropy.*` | 香农熵计算 | | **SHA-256 实用工具** | `utils/msx_sha256.*` | 无依赖哈希 | | **CLI / main** | `cli/main.c` | 命令行参数解析 + 入口点 | ## 🖥️ 8. GUI / 界面 **MemoryScannerX 没有 GUI** — 它被刻意设计为**纯 CLI(命令行界面)**工具,就像 `ls`、`ps`、`netstat` 或在终端中运行的 Python 脚本一样。 - ❌ 没有窗口、按钮或图形仪表板 - ✅ 一切都通过终端/cmd.exe 中的文本输出进行 - ✅ 存在彩色控制台输出(用于日志记录),但它仍然在终端内 - 💡 **为什么没有 GUI?** — CLI 工具易于自动化(它们可以轻松集成到脚本、cron 作业和 SOC pipeline 中),并且 CLI 是系统编程作品集的标准配置 ## 🧰 9. 使用的技术 | 类别 | 技术 | |---|---| | **语言** | ISO C17(兼容 GNU11,纯 C — 非 C++) | | **构建系统** | CMake (3.16+) | | **支持的编译器** | GCC, Clang, MSVC, MinGW/TDM-GCC (Dev-C++) | | **Linux API** | `/proc` 文件系统, `process_vm_readv()` | | **Windows API** | `CreateToolhelp32Snapshot`, `Process32First/Next`, `VirtualQueryEx`, `ReadProcessMemory`, `OpenProcessToken`, PSAPI (`EnumProcessModulesEx`, `GetModuleFileNameExA`) | | **线程(日志记录互斥锁)** | Linux 上 POSIX threads (`pthread`),Windows 上使用 `CRITICAL_SECTION` | | **哈希** | 自定义的无依赖 SHA-256 实现 | | **测试** | 自定义的轻量级测试框架(无需外部测试框架) | | **Sanitizers** | AddressSanitizer + UndefinedBehaviorSanitizer(在开发期间使用) | ## 🏛️ 10. 架构 MemoryScannerX 遵循**分层、模块化的架构**: ``` ┌─────────────────────────────────────────────┐ │ CLI Layer (main.c) │ ← Parses user commands ├─────────────────────────────────────────────┤ │ Scan Engine (Orchestrator) │ ← Coordinates all modules ├───────────┬───────────┬───────────┬──────────┤ │ Process │ Memory │ Module │Shellcode │ ← Analysis layers │ Module │ Module │ Scanner │ Scanner │ ├───────────┴───────────┴───────────┴──────────┤ │ Scoring Engine (Transparent) │ ← Converts findings into a score ├───────────────────────────────────────────────┤ │ Reporter (JSON/Text) │ ← Produces the final output ├───────────────────────────────────────────────┤ │ Platform Abstraction (#ifdef Linux/Windows) │ ← Isolates OS-specific code └───────────────────────────────────────────────┘ ``` **设计原则:** 每一层仅与其下层通信 — 没有紧密耦合。这意味着可以轻松添加新模块(PE 解析器、YARA 等),而不会破坏现有代码。 ## 📁 11. 文件夹结构 ``` MemoryScannerX/ │ ├── CMakeLists.txt # Root build configuration ├── README.md # Project documentation ├── LICENSE # MIT License │ ├── include/ # Public header files (.h) │ ├── process/ │ │ └── msx_process.h │ ├── memory/ │ │ └── msx_memory.h │ ├── scanner/ │ │ ├── msx_modules.h │ │ ├── msx_shellcode.h │ │ ├── msx_scoring.h │ │ └── msx_scan_engine.h │ ├── report/ │ │ └── msx_report.h │ └── utils/ │ ├── msx_common.h │ ├── msx_log.h │ ├── msx_entropy.h │ └── msx_sha256.h │ ├── src/ # Implementation files (.c) │ ├── cli/ │ │ └── main.c # Entry point │ ├── process/ │ │ └── msx_process.c │ ├── memory/ │ │ └── msx_memory.c │ ├── scanner/ │ │ ├── msx_modules.c │ │ ├── msx_shellcode.c │ │ ├── msx_scoring.c │ │ └── msx_scan_engine.c │ ├── report/ │ │ └── msx_report.c │ └── utils/ │ ├── msx_common.c │ ├── msx_log.c │ ├── msx_entropy.c │ └── msx_sha256.c │ └── tests/ ├── CMakeLists.txt └── test_main.c # Unit tests ``` ## 🔄 12. 流程图 — 工作原理 ``` ┌───────────────────┐ │ User runs CLI │ │ (list/inspect/ │ │ scan --pid/all) │ └─────────┬─────────┘ │ ▼ ┌────────────────────────┐ │ Process Enumeration │ │ (/proc or Toolhelp32) │ └────────────┬────────────┘ │ ▼ ┌────────────────────────┐ │ Memory Region Scan │ │ (maps / VirtualQueryEx) │ └────────────┬────────────┘ │ ┌────────────┼────────────┐ ▼ ▼ ▼ ┌──────────────┐ ┌──────────┐ ┌───────────────┐ │ Permission │ │ Module │ │ Shellcode │ │ Analysis │ │ Anomaly │ │ Heuristics │ │ (RWX/WX) │ │ Check │ │ (entropy/NOP) │ └──────┬────────┘ └────┬─────┘ └───────┬────────┘ │ │ │ └────────────────┼───────────────┘ ▼ ┌───────────────────────┐ │ Threat Scoring Engine │ │ (weighted + explained) │ └───────────┬────────────┘ ▼ ┌───────────────────────┐ │ Report Generator │ │ (Text to console / │ │ JSON to file) │ └───────────┬────────────┘ ▼ ┌─────────────┐ │ User sees │ │ results │ └─────────────┘ ``` ## 🛠️ 13. 安装说明 ### 🐧 Linux **第 1 步 — 安装前置条件:** ``` sudo apt update sudo apt install build-essential cmake ``` **第 2 步 — 解压项目并创建构建文件夹:** ``` cd MemoryScannerX mkdir build && cd build ``` **第 3 步 — 使用 CMake 配置:** ``` cmake .. -DCMAKE_BUILD_TYPE=Release ``` **第 4 步 — 编译:** ``` cmake --build . -j ``` **第 5 步 — 验证构建是否成功:** ``` ls -la memoryscannerx ``` 如果出现此文件(具有可执行权限 `-rwxr-xr-x`),则说明安装成功。✅ ### 🪟 Windows (Visual Studio / MSVC) **前置条件:** - 已安装 [CMake](https://cmake.org/download/) - Visual Studio Build Tools 或完整的 Visual Studio(包含“使用 C++ 的桌面开发”工作负载) **步骤:** ``` cd MemoryScannerX mkdir build cd build cmake -G "Visual Studio 17 2022" -A x64 .. cmake --build . --config Release ``` 生成的 `.exe` 可以在以下位置找到:`build\Release\memoryscannerx.exe` ### 🪟 Windows (Dev-C++ / TDM-GCC) **选项 A — 命令行(最快):** 1. 找到 Dev-C++ 安装目录中的 `TDM-GCC-64\bin` 文件夹(通常是 `C:\Program Files (x86)\Embarcadero\Dev-Cpp\TDM-GCC-64\bin`) 2. 在该文件夹中使用 `cmd.exe`,或者将其添加到您的 PATH 环境变量中 3. 导航到项目根文件夹,然后运行: ``` gcc -std=gnu11 -O2 -Wall -Iinclude -DWINVER=0x0600 -D_WIN32_WINNT=0x0600 ^ src\cli\main.c ^ src\process\msx_process.c ^ src\memory\msx_memory.c ^ src\scanner\msx_modules.c ^ src\scanner\msx_shellcode.c ^ src\scanner\msx_scoring.c ^ src\scanner\msx_scan_engine.c ^ src\report\msx_report.c ^ src\utils\msx_common.c ^ src\utils\msx_entropy.c ^ src\utils\msx_log.c ^ src\utils\msx_sha256.c ^ -lpsapi -ladvapi32 -o memoryscannerx.exe ``` **选项 B — Dev-C++ GUI 项目:** 1. `File → New → Project → Console Application → C Project`(⚠️ 是 **C**,不是 C++) 2. 删除默认的 `main.c` 3. `Project → Add to Project` → 添加所有 12 个 `.c` 文件(如上文所列) 4. `Project → Project Options → Directories → Include Directories` → 添加 `include\` 文件夹 5. `Project → Project Options → Parameters`: - 编译器:`-std=gnu11 -DWINVER=0x0600 -D_WIN32_WINNT=0x0600` - 链接器:`-lpsapi -ladvapi32` 6. `Execute → Compile` 或按 **F9** ## ▶️ 14. 运行工具 ### 分步指南 (Windows): 1. 按 **Windows 徽标键 + R** 2. 输入 `cmd`,按 **Enter** 3. 导航到包含 `.exe` 的文件夹: cd C:\Users\SnK\Downloads\ss 4. 运行命令: Project2.exe list *(或您为 `.exe` 起的任何名称)* ### 分步指南: ``` cd MemoryScannerX/build ./memoryscannerx list ``` ### 为什么要以管理员/Root 身份运行? - 对于您自己的进程,普通用户权限就足够了 - 要完整查看**其他用户或系统进程**(例如 Chrome 或系统服务): - **Windows:** 通过“以管理员身份运行”打开 cmd - **Linux:** `sudo ./memoryscannerx scan --all` - 如果没有管理员/root 权限,这些进程将被直接**跳过**(不会崩溃,也不会报错 — 这是正常的预期行为) ## 📘 15. 用法 — 每个命令的详细说明 ### 1️⃣ `list` — 显示所有正在运行的进程 ``` ./memoryscannerx list ``` **用途:** 类似于任务管理器 — 列出所有可见的进程:PID、PPID、名称、架构、可执行文件路径。 ### 2️⃣ `inspect --pid ` — 单个进程的详细信息 ``` ./memoryscannerx inspect --pid 1234 ``` **用途:** 显示特定进程的完整详细信息:名称、路径、命令行、用户、架构、线程数、RAM (RSS/VM 大小)、完整性级别。 **从哪里获取 PID?** 先运行 `list`,然后从中复制 PID。 ### 3️⃣ `scan --pid ` — 对单个进程进行全面安全扫描 ``` ./memoryscannerx scan --pid 1234 ``` **功能说明:** - 扫描内存区域 - 查找 RWX/可疑权限 - 检查模块异常 - 运行 shellcode 启发式检测 - 计算并显示威胁评分 **可选标志:** ``` ./memoryscannerx scan --pid 1234 --json output.json --text output.txt ``` - `--json FILE` → 将报告保存为 JSON 文件 - `--text FILE` → 将报告保存为文本文件 ### 4️⃣ `scan --all` — 扫描所有进程 ``` ./memoryscannerx scan --all ``` **功能说明:** 逐一扫描系统上每个可访问的进程,并报告任何看起来可疑的进程。 **可选标志:** ``` ./memoryscannerx scan --all --min-risk medium --json full_report.json ``` - `--min-risk LEVEL` → 仅显示达到或超过此风险级别的进程(`low`、`medium`、`high`、`critical`) - `--json FILE` → 将整个报告保存为 JSON 文件 ### 5️⃣ `--help` / `-h` — 帮助信息 ``` ./memoryscannerx --help ``` ### 6️⃣ `--version` — 显示版本 ``` ./memoryscannerx --version ``` ## 🖨️ 16. 示例输出 ### `list` 命令的输出: ``` PID PPID NAME ARCH EXE -------------------------------------------------------------------------- 1 0 systemd x64 /usr/lib/systemd/systemd 842 1 sh x64 /usr/bin/dash 1055 842 chrome x64 /usr/bin/chrome -------------------------------------------------------------------------- Total: 56 processes ``` ### `scan --pid` 的输出(干净/良性进程): ``` ================================================================ MemoryScannerX Forensic Scan Report ================================================================ PID: 842 PPID: 1 Name: sh Executable: /usr/bin/dash User: root Architecture: 64-bit Threads: 1 RSS: 1.93 MB -- Memory Regions (25 total) ----------------------------------- -- Module Anomalies (0) ---------------------------------------- -- Shellcode Heuristic Findings (0) ------------------------------ -- Threat Score ---------------------------------------------------- ------------------------------------------------------------ TOTAL SCORE: 0 RISK LEVEL: None ================================================================ ``` ### `scan --pid` 的输出(可疑进程 — 发现 RWX 内存): ``` ================================================================ MemoryScannerX Forensic Scan Report ================================================================ PID: 9911 Name: wx_test Architecture: 64-bit -- Memory Regions (12 total) ----------------------------------- [SUSPICIOUS] 0x00007fae12340000 size=4096 perms=rwx (anonymous) -- Threat Score ---------------------------------------------------- [+ 15] Executable anonymous region at 0x7fae12340000 (no backing file) ------------------------------------------------------------ TOTAL SCORE: 15 RISK LEVEL: Low ================================================================ ``` ## ⚖️ 17. 威胁评分的工作原理 每发现一个可疑项目都会获得**分数**,总分将被转换为**风险级别**: | 发现 | 默认分值 | |---|---:| | 可写+可执行区域 | +20 | | 匿名可执行内存 | +15 | | 模块异常(隐藏/不一致) | +30 | | 已删除的底层文件(被取消链接的二进制文件) | +35 | | Shellcode NOP-sled 模式 | +25 | | 高熵可执行区域 | +15 | | 总分 | 风险级别 | |---:|---| | 0 | 无 | | 1–24 | 🟢 低 | | 25–59 | 🟡 中 | | 60–99 | 🟠 高 | | 100+ | 🔴 严重 | ## ✅ 18. 优势 1. 🪶 **轻量级且无依赖** — 只需要 C 编译器,无需安装任何庞大的库 2. 🔓 **完全开源风格的代码** — 整个源代码均可用,没有隐藏的二进制大文件 3. 🖥️ **真正的跨平台设计** — 相同的架构适用于 Linux 和 Windows 4. 🔍 **透明评分** — 每一个检测都是可解释的 5. 🛡️ **100% 只读 / 安全** — 永不修改或损害目标进程 6. 📚 **教育价值** — 非常适合学习操作系统内部原理、内存管理和安全概念 7. ⚡ **快速** — 高效的缓冲内存读取,开销极小 ## ⚠️ 19. 劣势 / 限制 1. 🖥️ **无 GUI** — 仅支持命令行,这可能对非技术用户来说有难度 2. 🪟 **Windows 路径未经测试** — 代码已经编写完成,但在此开发环境中尚未在真实的 Windows 机器上进行编译/验证 3. 🔐 **权限受限** — 如果没有管理员/root 权限,其他用户的进程无法被正确扫描 4. 🧩 **功能集不完整** — PE/ELF 解析器、YARA、hook 检测和 hollowing 检测尚未实现 5. 📉 **Linux 上隐藏模块检测较弱** — 因为两个对比的“视图”都来源于 `/proc/maps`,真正独立的交叉检查将需要 ptrace/link_map 6. 🐌 **单线程** — 尚未实现并发/并行扫描,在较大型系统上可能稍慢 ## 🚧 20. 注意事项与安全说明 1. ⚠️ **Root/管理员权限**将授予完整的系统可见性 — 请仅在**受信任的环境**中运行此工具 2. ⚠️ 首次在任何**生产/关键系统**上运行之前,请先在测试环境中进行验证 3. ⚠️ `scan --all` 会扫描**整个系统上的每一个进程** — 这可能会在较大型系统上暂时占用更多 CPU/IO 资源 4. ⚠️ 此工具**不能替代杀毒软件** — 它是一个**可见性/分析工具**,不会自动删除或阻止任何内容 5. ⚠️ 在 Windows 上运行之前,请通知您的**杀毒软件/EDR** — 读取内存的工具有时会触发杀毒软件的误报(因为内存扫描器和恶意软件都在使用该技术) 6. ⚠️ 在修改源代码时,请保持**只读/防御范围** — 向本项目添加攻击性/注入能力违背了其核心设计原则 ## 📜 21. 免责声明 ## 🎓 22. 在构建此项目时学习/研究了什么 在构建此项目时,研究/学习了以下主题: 1. 🧠 **操作系统内部原理** — 虚拟内存、进程管理、`/proc` 文件系统结构 2. 🪟 **Windows Win32 API 编程** — Toolhelp32、PSAPI、Access Tokens、完整性级别 3. 🐧 **Linux 系统编程** — `/proc/pid/maps`、`process_vm_readv`、POSIX API 4. 🔐 **应用密码学基础** — SHA-256 算法(从零开始实现,无需库) 5. 📊 **信息论** — 香农熵及其安全应用 6. 🏗️ **C 系统编程** — 手动内存管理、平台抽象(`#ifdef`)、基于宏的泛型 7. 🛡️ **恶意软件分析基础** — RWX 检测、shellcode 特征、隐藏模块概念 8. 🧪 **软件工程实践** — 模块化架构、单元测试、基于 sanitizer 的调试 (ASan/UBSan) 9. 🔧 **构建系统** — 用于跨平台、多编译器项目的 CMake 配置 ## 🚀 23. 未来增强与路线图 ### 第二阶段(计划中): - [ ] Windows PE 文件解析器(头信息、节区、导入/导出、TLS) - [ ] Linux ELF 文件解析器(节区、动态符号、PLT/GOT) - [ ] API hook 检测(IAT/EAT/inline hooks) - [ ] Process hollowing 检测 ### 第三阶段(计划中): - [ ] YARA 规则引擎集成(可选,编译时标志) - [ ] 插件架构(动态加载的 .so/.dll 检测器) - [ ] 基于线程池的并发多进程扫描 ### 第四阶段(计划中): - [ ] HTML / Markdown / CSV 报告导出器 - [ ] 实时/自动刷新的仪表板模式(`--live` 标志,任务管理器式的连续视图) - [ ] 基于 JSON 的外部配置文件,用于设置评分权重/阈值 - [ ] GitHub Actions CI pipeline + 代码覆盖率 - [ ] Handle 枚举、代码洞检测 ## ❓ 24. 常见问题解答 **问:这个工具是用来做什么的?** 答:用于防御性内存取证 — 适用于恶意软件分析、DFIR 以及学习/执行端点可见性检查。 **问:它是杀毒软件吗?** 答:不是。它不“删除”或“阻止”任何东西 — 它只显示哪些是可疑的。 **问:它会损害任何进程吗?** 答:不会。它采用 100% 只读设计 — 整个代码库中没有任何写入、注入或终止操作。 **问:当我双击它时什么也没发生 — 这是 bug 吗?** 答:不是 — 这是一个 CLI 工具。请在终端/cmd 中使用类似 `.exe list` 的命令运行它。 **问:它在 Windows 上经过测试了吗?** 答:代码已针对 Windows API 进行编写和设计,但在此开发环境(即 Linux 沙盒)中无法在实际的 Windows 机器上进行编译/验证首次运行时请仔细测试。 **问:它能显示 Chrome 保存的密码吗?** 答:**不能,而且永远也不会。** 此功能超出了本项目的范围,并已被刻意排除(存在凭证收集的风险)。 ## 🧾 25. 致谢与版权 ``` Project: MemoryScannerX Developed by: Syed Shaheer Hussain Copyright: © 2026 Syed Shaheer Hussain License: MIT License Language: ISO C17 (Pure C) Category: Defensive Security / Memory Forensics / DFIR Tooling ``` ### 📌 快速参考速查表 | 命令 | 用途 | |---|---| | `memoryscannerx list` | 显示所有进程 | | `memoryscannerx inspect --pid X` | 单个进程的详细信息 | | `memoryscannerx scan --pid X` | 全面扫描单个进程 | | `memoryscannerx scan --all` | 扫描所有进程 | | `memoryscannerx scan --all --min-risk medium` | 仅显示中等风险及以上的进程 | | `memoryscannerx scan --pid X --json out.json` | 将报告保存为 JSON | | `memoryscannerx --help` | 帮助信息 | | `memoryscannerx --version` | 显示版本 | **🔚 文档结束。**
标签:Bash脚本, DAST, DNS 反向解析, Linux, SecList, 内存取证, 客户端加密, 恶意软件分析, 终端安全