chromatic 使用指南:三步把自定义 JS 注入任意 Chromium/V8 客户端

📅 2026/8/21 18:04:18
chromatic 使用指南:三步把自定义 JS 注入任意 Chromium/V8 客户端
chromatic 使用指南三步把自定义 JS 注入任意 Chromium/V8 客户端【免费下载链接】chromaticUniversal modifier for Chromium/V8 | 广谱注入 Chromium/V8 的通用修改器项目地址: https://gitcode.com/gh_mirrors/be/chromatic如果你一直想给音乐 App 或桌面客户端加点自己的功能——比如拦截一个内部函数改它的返回值或者盯住某个内存地址看谁在读写——却发现官方没有扩展入口每次版本更新还得重新分析二进制那可以看看 chromatic。它是一款用 C 写的 Chromium/V8 通用修改器注入目标进程后一个 JS 脚本就能直接操作正在运行的进程。这是作者继 BetterNCM网易云音乐插件管理器停止维护后的整体重写除了音乐客户端还能用在不少其它软件上。为什么改客户端要绕那么大一圈传统做法是 patch 二进制或者自己写原生代码挂钩。前者版本一更新就得重做后者要求你对目标平台的汇编和调用约定相当熟。chromatic 的思路是把 JS 引擎基于 QuickJS直接嵌进注入的进程你只写 JS/TS 脚本内存读写、函数拦截、断点这些底层能力全部封装好了。TypeScript API 带完整类型定义仓库的 docs 目录里还有中英文两版 API 文档可查。 三步跑起来克隆仓库仓库沿用了 BetterNCM 的名字内容已是 chromatic装好 xmake 后直接构建git clone https://gitcode.com/gh_mirrors/be/BetterNCM xmake build构建会产出核心静态库、gtest 测试程序和 injectee 动态库三样东西日常主要用 injectee。第三步用 fripack CLI 工具把动态库 patch 进目标进程——进程一启动你内嵌的 JS 就自动执行了。✍️ 写第一个脚本改完保存就热加载injectee 有两种工作模式把 JS 内容直接嵌进动态库或配置一个监视路径指向本地脚本文件。开发时推荐后者库内部有个线程每 500ms 检查一次文件改动你保存修改它就自动重载不用重启目标进程。跑起来之后脚本里挂钩任意函数就这么简单Interceptor.attach(target, { onEnter: (args) console.log(called with, args[0]), onLeave: () (this.returnValue ptr(1)), });改一行返回值函数行为就变了。除了挂钩脚本还能干什么API 远不止函数拦截挑几个常用的说内存读写与扫描Memory按 8/16/32/64 位宽度直接读写地址scanSync能在一段范围内按十六进制模式搜索支持??通配符调用原生函数NativeFunction声明好 C 函数签名调用起来和调 JS 函数一样一行malloc(1024)断点软件断点INT3/BRK之外还有最多 4 个硬件断点可以监视某个地址的读、写或执行反汇编与交叉引用Instruction能解析单条指令、批量反汇编、找出指向目标地址的所有引用内存访问监控基于页面保护实现精确报告是哪次读、写、执行碰了目标地址异常处理全局 handler 接住进程异常防止脚本出 bug 把目标程序带崩。以上每项在 API 文档里都有可直接抄的示例。 支持哪些系统构建配置覆盖 Windows、Linux、macOS 和 Androidx64 与 ARM64 架构都能编译平台差异由 xmake 配置自动处理。项目目前还在活跃开发中遇到问题可以直接提 Issue中英文都收。【免费下载链接】chromaticUniversal modifier for Chromium/V8 | 广谱注入 Chromium/V8 的通用修改器项目地址: https://gitcode.com/gh_mirrors/be/chromatic创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考