3kyo0/macce

GitHub: 3kyo0/macce

MacCE 是一款 macOS 原生的 Cheat Engine 风格内存扫描器,用于在不禁用 SIP、无需 sudo 或 kext 的前提下检查和修改 Wine/CrossOver 等 Windows 翻译层下运行的进程内存。

Stars: 1 | Forks: 0

# MacCE [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/83a904a447235558.svg)](https://github.com/3kyo0/macce/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [简体中文 »](README_zh.md) 一个原生、Cheat-Engine 风格的内存扫描器,专用于**运行在任何 Windows 翻译层下的 macOS 目标** —— Wine, CrossOver, Whisky, Kegworks, PlayOnMac, Apple 的 Game Porting Toolkit,或是游戏捆绑的自定义 Wine 版本。 无需禁用 SIP。无需 sudo。无需 kext。仅需一个带有 `com.apple.security.cs.debugger` entitlement 的临时签名 (ad-hoc-signed) 二进制文件,通过 `task_for_pid` / `mach_vm_*` 与内核通信。 ## 为什么开发此工具 CheatEngine 本身无法在 macOS 上原生运行;现有的扫描器 (`scanmem`, `gameconqueror`)仅限 Linux 使用。在 macOS 上,任何想要 检查/扫描 Wine 下 Windows 程序的人,历来都必须通过 GDB 来完成,或者从头编写 Mach VM 胶水代码。MacCE 将其封装进了一个 外观和行为都与 CE 相似的 GUI 中:支持带有重扫 链式的类型/操作符/数值/范围扫描,带通配符的 AOB,基于快照的未知初始扫描,模块 映射(`notepad.exe+0x4150` 以 CE 风格的绿色渲染静态 地址),多级指针扫描,锁定/监视列表等等。 ## 功能 | 类别 | 支持的功能 | |---|---| | 数字类型 | i8/i16/i32/i64, u8/u16/u32/u64, f32, f64 | | 断言 (Predicates) | eq, ne, lt, le, gt, ge, range, unknown (首次扫描) | | 重扫描断言 | + changed, unchanged, increased, decreased | | AOB / 字节 | 带 `??` 通配符的十六进制模式(例如 `DE AD ?? BE EF`) | | 字符串 | UTF-8 (`str`) 和 UTF-16LE (`wstr` — Windows 原生,**支持 CJK**) | | 区域过滤 | rw-prv / rw-shr / r-- / r-x,对齐/未对齐,模块作用域 | | 快照模式 | `op=unknown` 首次扫描保留原始字节;首次重扫描进行比对 | | 指针扫描 | 1–4 层 BFS 链查找,优先静态锚点 | | 模块映射 | 基础名 + 偏移量显示;文件映射(静态)地址显示为绿色 | | 锁定 / 监视 | 冻结数值,定期刷新 | | 进程选择器 | 过滤 Wine / CrossOver / GPTK / Whisky / Kegworks / Wineskin / .exe | ## 性能 在基础的朴素扫描之上,叠加了多项重大优化: - **`mach_vm_remap(copy=TRUE)`** — 首次扫描读取是零拷贝的:目标 页面以 COW(写时复制)方式延迟映射到我们的地址空间;不需要 `mach_vm_read` 缓冲区。 - **对齐步长 + 针对 (type, op) 的专用内核** — `clang -O2` 将每个分支自动向量化为 SSE2/AVX2。 - **并行首次扫描** — 跨 N=min(ncpu, 8) 个 pthread 的区域工作队列, 线程局部的匹配向量,最后进行一次合并 + qsort。 - **并行重扫** — 已排序的匹配数组按索引分区;每个线程 每次 `mach_vm_read_overwrite` 调用批量读取最多 64 KiB。 - **Boyer-Moore-Horspool** AOB 跳转表 — 锚定在最右侧的 字面字节处,因此尾部带通配符的模式依然受益。对于较短或全为通配符的模式,会自动回退到 朴素匹配。 在 8 核 Intel Mac 上,针对几 GB 内存的 Wine 目标的典型首次扫描 能在不到一秒的时间内完成;随后的重扫几乎是瞬间完成的,直到 匹配集被换页出(page out)。 ## 构建 环境要求: - macOS (Intel;ARM64 只需对 Mach 进行少量修改即可运行)。 - Xcode 命令行工具。 - 来自 Homebrew 的 `glfw`:`brew install glfw`。 ``` make imgui # one-time: clones ImGui v1.91.5 into gui/third_party/ make # CLI: ./macce make gui # GUI: ./macce-gui ``` 这两个二进制文件都是使用 `entitlements.plist` 中的 entitlement 进行的临时签名 (ad-hoc-signed)。 附加到你自己的进程不需要 `sudo`;可以保持 SIP 开启。 ## CLI 快速入门 ``` # 按名称子字符串查找进程 ./macce find notepad # Dump region map (根据需要在 shell 中通过 -- 过滤) ./macce regions # 首次扫描: 32位 int 等于 100 ./macce scan i32 eq 100 # 重新扫描: 值已减少 ./macce rescan dec # String 扫描 (UTF-16LE — Windows 原生) ./macce scan wstr eq "Notepad" # 带通配符的 AOB ./macce scan bytes eq "DE AD ?? BE EF" # Pointer chain 查找器 (目标 -> 静态锚点) ./macce pscan 7ff0deadbeef 0x1000 3 # 读取 / 写入 ./macce read 7ff0deadbeef 64 ./macce write 7ff0deadbeef "01 02 03 04" ./macce list # show match preview ./macce clear # clear saved session at /tmp/macce.session ``` ## GUI 快速入门 1. `./macce-gui` 2. 在进程选择器中,保持选中 **wine only**(或取消勾选以查看所有 进程)。选择你要附加的 Wine 托管的 `.exe`。 3. 类型/操作符/数值 → **First scan**(首次扫描)。 4. 在目标程序中改变数值 → 使用相关的 断言(`changed`, `decreased`, `eq `, …)进行 **Rescan**(重扫)。 5. 右键点击结果以 **lock**(锁定)或添加到 **watch**(监视)。 6. 静态(由模块映射的)地址以绿色渲染为 `notepad.exe+0x4150`;动态的堆/栈地址保持普通的十六进制颜色。 ### 扩展 Wine 进程检测 如果你的运行环境不匹配内置模式 (`wine`, `crossover`, `gameportingtoolkit`, `whisky`, `kegworks`, `playonmac`, `winebridge`, `wineskin`, `wpreloader`)或者不以 `.exe` 结尾的二进制文件,可以在运行时进行扩展: ``` MACCE_WINE_PATTERNS="mygame:custom_wrapper" ./macce-gui ``` (以冒号分隔,针对可执行文件路径进行不区分大小写的子串匹配。) ## ⚠️ 仅限授权使用 此工具会读取和写入另一个进程的内存。**请仅对你拥有的软件、 你被授权测试的软件,或在 CTF / 研究 / 教育背景下使用。** - **请勿**将其用于带有反作弊 / 服务条款 (ToS) 限制的在线游戏或服务。 - 将带有反作弊技术的商业多人游戏作为目标 (Easy Anti-Cheat, BattlEye, NetEase ProtectShield/NP, Vanguard 等) 极有可能违反该软件的服务条款。根据 你的司法管辖区不同,这可能还会违反计算机滥用法 —— 包括但 不限于中国《刑法》第 285/286 条、美国 CFAA、英国 CMA 以及 其他司法管辖区的同等立法。 - 作者和贡献者对滥用行为不承担任何责任。 预期的使用场景包括:逆向你拥有的软件、单机 离线游戏、CTF 练习、考试目标、调试你自己的 Wine 应用等 类似情况。 ## License MIT — 见 [`LICENSE`](LICENSE)。 ## 第三方组件 - [Dear ImGui](https://github.com/ocornut/imgui) (MIT),固定在 v1.91.5 版本。 - [GLFW](https://www.glfw.org/) (zlib/libpng),通过 Homebrew。
标签:CVE监控, Mach API, 云资产清单, 内存扫描, 客户端加密, 游戏修改, 逆向工程