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, 内存取证, 客户端加密, 恶意软件分析, 终端安全