chromatic 安装与使用完整指南:三步跑通 Chromium/V8 通用修改器
【免费下载链接】chromaticUniversal modifier for Chromium/V8 | 广谱注入 Chromium/V8 的通用修改器项目地址: https://gitcode.com/gh_mirrors/be/chromatic
chromatic 是一个面向 Chromium/V8 引擎的通用注入修改器,能把 JavaScript 脚本注入到 QQ 音乐、微信、各类 Electron 应用等桌面软件中,实现内存读写、函数拦截、断点调试等能力。如果你是想要定制软件行为的开发者,或是刚入门逆向分析的爱好者,这篇指南能帮你在几分钟内完成安装并跑通验证。
为什么值得试试 🎯
它的前身是知名插件框架 BetterNCM,但旧版年代久远且疏于维护。chromatic 是将相关代码整体重写后的产物,最大的变化有两点:
- 不挑软件:旧版只服务网易云音乐,新版可以注入任何基于 Chromium/V8 的应用,适用范围大幅扩展。
- 能力更底层:脚本 API 覆盖了内存操作、指针与原生函数调用、软件/硬件断点、内存访问监控、异常处理、FFI 等(详见 docs/zh-CN/API.md),接近一个轻量级的 Frida,但脚本可以直接用 TypeScript 编写。
三步跑通环境
整个过程基于 xmake 构建系统,依赖会自动下载,不需要手动装一堆库。
- 拉取代码:
git clone https://gitcode.com/gh_mirrors/be/BetterNCM - 安装 xmake 并构建:安装好 xmake 后进入项目目录,执行
xmake build,它会自动拉取 capstone、libffi、asmjit、fmt 等依赖并完成编译。 - 跑测试验证:执行
xmake run chromatic-test,看到 gtest 用例通过,说明引擎的内存、拦截、断点等功能都工作正常。
构建产物分三块:chromatic-core(静态核心库)、chromatic-injectee(待注入的共享库)、chromatic-test(测试程序),分别对应不同用途。
目录里有什么
chromatic/ ├── src/ │ ├── core/ # 核心引擎:内存、拦截器、断点、FFI 等 C++ 实现 │ │ └── typescript/ # TypeScript API 封装,编译后内嵌进二进制 │ ├── injectee/ # 注入用共享库(dll/so),读取内嵌脚本并执行 │ └── test/ # gtest 测试套件,覆盖各模块功能 ├── deps/ # 第三方依赖声明(breeze-js、libtcc、yalantinglibs) ├── docs/ # API 文档,分 zh-CN / en-US 两版 ├── scripts/ # bindgen 绑定生成、压力测试脚本 └── xmake.lua # 构建脚本,定义三个构建目标与平台宏- src/core/:所有底层能力的实现所在,包括函数拦截、反汇编、硬件断点等模块,文件名即功能名。
- src/core/typescript/:用 TypeScript 编写的脚本 API 层,通过 esbuild 打包后编译进二进制,你在脚本里能用的
Process、Module、Memory等对象都来自这里。 - src/injectee/:真正被注入目标进程的部分,逻辑很直接——读取内嵌的脚本配置,启动 JS 运行时并执行脚本。
- docs/:中文 API 文档写得比较完整,写脚本前建议先翻一遍。
脚本放在哪里?怎么配置 ⚙️
chromatic 没有传统的配置文件,核心机制是把脚本直接嵌进 injectee 共享库里。它兼容 fripack 工具链:编译完成后,由 fripack 把 JSON 配置(含你的 JS 源码)修补进共享库的g_embedded_config符号中,注入时自动读取执行。配置支持两种模式:
- EmbedJs:JS 源码直接嵌在二进制里,适合发布成品。
- WatchPath:指向一个外部 JS 文件路径,运行时监视该文件,保存后自动热重载——开发调试时非常方便。
如果你只是先跑测试,测试程序还支持--no-signal-tests参数(或设置环境变量CHROMATIC_NO_SIGNAL_TESTS=1)跳过信号相关的用例,方便在不支持信号调试的环境里验证。
新手常见坑
Q:文档里怎么提到 BetterNCM?和旧版兼容吗?BetterNCM 已停止维护,chromatic 是其代码的整体重写并更名,旧代码只保留在存档分支中。所以别按旧版 BetterNCM 的教程操作,行为会有差异。
Q:直接编译出来的 injectee 库,注入进去就能跑吗?不行。库本身只是"空壳",必须先经 fripack 修补、嵌入你的脚本后才能生效,否则加载时不会执行任何逻辑。
Q:遇到问题去哪看?项目仍在活跃开发中,README 的"文档/使用方法"章节尚未完善。API 细节以 docs/zh-CN/API.md 为准,遇到 Bug 或疑问建议直接提 Issue,中英文都可以。
到这里,chromatic 的环境搭建和核心玩法就介绍完了。想写自己的注入脚本或深入了解拦截器、断点等高级 API,建议前往官方仓库查看最新文档和示例,跟进它的迭代更新。
【免费下载链接】chromaticUniversal modifier for Chromium/V8 | 广谱注入 Chromium/V8 的通用修改器项目地址: https://gitcode.com/gh_mirrors/be/chromatic
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考