RynezzZ/MemScan

GitHub: RynezzZ/MemScan

一款跨平台的进程内存关键字扫描工具,用于应急响应和安全分析场景,通过在进程内存中快速搜索文本或 HEX 字节来定位可疑进程。

Stars: 4 | Forks: 0

# MemScan [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Go](https://img.shields.io/badge/Go-1.21+-00ADD8.svg)](https://go.dev/) ![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20(amd64%2Farm64)-lightgrey.svg) 跨平台的进程内存关键字扫描工具,主要用于**应急响应**与安全分析。通过在各进程内存中搜索关键字 (如 C2 地址、可疑命令、Webshell 特征、明文凭据等),快速定位发起可疑连接、执行可疑命令的进程。 提供 **图形界面(GUI)** 与 **无界面命令行(CLI)** 两种形态,覆盖 Windows 与 Linux (amd64 / arm64,含主流国产化系统)。 ## 功能特性 - **文本 / HEX 搜索**:按文本或 HEX 字节序列(如 `DE AD BE EF`)搜索,支持通配符(文本 `?`,HEX `??`)。 - **自动多编码匹配**:文本含非 ASCII(如中文)时,自动同时按 UTF-8 / UTF-16 LE / GBK 搜索,命中标明实际编码。 - **可控扫描范围**:默认聚焦可写 / 已驻留页(快);可切换全量扫描(含只读段、映射文件)。 - **字符串 dump**:按编码(ASCII / UTF-16 LE)与长度过滤,导出进程内可打印字符串。 - **GUI**:匹配上下文预览、双击跳转内存查看器、进程详情。 - **CLI**:纯 Go 静态二进制、零外部依赖、可交叉编译,适合 headless 服务器;支持 `text` / `json` / `csv` 输出。 - **跨平台**:Windows 10 / Server 2016+,Linux amd64 & arm64(含国产化系统);Windows 7 提供 CLI 版。 - 中文字体已内嵌,免装字体。 ## 截图 在上方输入框中输入要查询的内容(例如 C2 地址),点击「开始扫描」即可,默认配置已是最佳实践。 ![GUI 扫描结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a5f3d37d5b171149.png) ## 下载 预编译产物见 [Releases](../../releases): | 平台 | 文件 | 说明 | | --- | --- | --- | | **Linux amd64** | `memscan-cli-amd64` | x86-64 命令行版本 | | | `memscan-gui-amd64` | x86-64 图形界面版本 | | **Linux arm64** | `memscan-cli-arm64` | ARM64 命令行版本(国产化系统可用) | | | `memscan-gui-arm64` | ARM64 图形界面版本(国产化系统可用) | | **Windows amd64** | `memscan.exe` | 通用图形界面版本,支持 Win10 / Server 2016+ | | | `memscan-cli.exe` | 通用命令行版本,支持 Win10+ | | | `memscan-cli-win7.exe` | Win7 专用(Win7 不支持 GUI,仅命令行) | | | `memscan-GUI-winserver.zip` | Windows Server / 虚拟机等缺少 OpenGL 渲染库、GUI 报错时使用 | ## 快速开始 读取其他进程的内存需要足够权限: - **Linux**:以 root 运行(`sudo ./memscan`),或给二进制授予 ptrace 能力免 sudo: sudo setcap cap_sys_ptrace,cap_dac_read_search+ep ./memscan-cli - **Windows**:以管理员身份运行(CLI 需在管理员权限终端里运行)。 ## GUI 使用说明 在上方输入框中输入需要查询的内容,例如 C2 地址,点击「开始扫描」即可,默认配置已是最佳实践。 如果第一遍扫描没有需要的结果,勾选「含只读页」并取消「仅驻留页」,则为全量内存扫描。 搜索到结果后可以展示具体的匹配值及其前后一定范围内的内容,用以辅助判断是否是所需要定位的进程。 也可以双击某条结果跳转至 `内存查看器` 页面,展示该条匹配项所属内存页的全部内容。 ### 功能区选项说明 | 选项 | 默认 | 含义 | | --- | --- | --- | | `hex` | 否 | 用 HEX 字节序列(如 `DE AD BE EF`)当作搜索内容 | | 通配符 | 否 | 通配符:文本用 `?`,HEX 用 `??` | | 含只读页 | 否 | 默认不扫描属性**仅**为只读的内存页 | | 仅驻留页 | 是 | 仅扫描已驻留物理内存(活跃)的页,取消勾选将增加磁盘 IO 占用 | | 单进程最大匹配 | `200` | 单进程内最多匹配到符合输入的字符串的个数 | | 上下文字节 | `16` | 展示内存中匹配到的字符串前后的字节数(1–32) | ## CLI 使用说明 完整命令行参考(含输出格式、退出码、编码细节)见 **[docs/CLI.md](docs/CLI.md)**。下面是速查与三种模式。 memscan-cli -list # 列进程 memscan-cli <文本> # 全局搜文本 memscan-cli -pid N <文本> # 指定进程搜文本 memscan-cli -hex "AA BB CC" # 搜 HEX memscan-cli -strings -pid N # dump 字符串 memscan-cli -strings -pid N -len =8 # dump 恰好 8 位字符串 memscan-cli ... -format json -out result.json # 导出 JSON | 模式 | 命令形式 | 说明 | | --- | --- | --- | | **搜索(默认)** | `memscan-cli [选项] <搜索内容>` | 在进程内存中查找文本 / HEX | | 字符串 dump | `memscan-cli -strings -pid [选项]` | 导出某进程中的可打印字符串 | | 列出进程 | `memscan-cli -list` | 打印 `PID 名称`,便于挑选目标 | 常用示例: memscan-cli password # 所有进程搜索文本 password(不区分大小写) memscan-cli -pid 1234 -case Secret # 只在 PID 1234 中区分大小写搜索 memscan-cli -hex "DE AD BE EF" # 按 HEX 字节序列搜索 memscan-cli -wildcard "us?r" # 文本通配符 memscan-cli -hex -wildcard "DE ?? BE EF" # HEX 通配符 memscan-cli -format json -out hits.json token # 结果以 JSON 写入文件 memscan-cli -strings -pid 1234 -len ">=16" -encoding ascii -out s.txt ## 兼容性测试 Linux 版本仅确认可运行、功能可用,具体效果差异未详细测试。已验证的系统: **x86-64** - Huawei EulerOS 2.0 - CentOS 7.9 - Ubuntu 18 - UOS 1050e - 麒麟桌面 V10 (SP1) 2503 - Windows 7 及以上(Win7 仅命令行版本) **ARM64** - Huawei Cloud EulerOS 2.0 - CentOS 7.4 - Ubuntu 18 - Kylin Linux Advanced Server - UOS 20 Euler (1000) ## 从源码构建 各平台(Windows / Linux amd64 / arm64 / 老发行版兼容 / Win7 CLI)的编译步骤见 **[HowToBuild.md](HowToBuild.md)**。 # Linux GUI ./build.sh # 无界面 CLI(纯 Go 静态,可交叉编译) ./build-cli.sh # Windows(GUI + CLI) build.bat ## License [MIT](LICENSE) © RyneZ
标签:EVTX分析, Go, Ruby工具, 内存扫描, 库, 应急响应, 日志审计