一次讲清 chromatic 通用修改器:从注入到跑通第一个脚本的最短路径
一次讲清 chromatic 通用修改器从注入到跑通第一个脚本的最短路径【免费下载链接】chromaticUniversal modifier for Chromium/V8 | 广谱注入 Chromium/V8 的通用修改器项目地址: https://gitcode.com/gh_mirrors/be/chromatic你想给 QQ 音乐或某个 Chromium 系客户端加个小功能设置里却没有入口接口也摸不着chromatic 是一款广谱注入 Chromium/V8 的通用修改器它把你的 JavaScript 带进目标程序进程并开放一套内存与函数级的 API。这篇文章带你走一遍从克隆仓库到跑通第一个脚本的最短路径目标是零基础也能动手。chromatic 是什么广谱注入 Chromium/V8 的通用修改器说白了chromatic 是一个用 C 写的动态库Windows 上的 DLLLinux 上的 .so在目标程序启动时加载进进程初始化一个内置 JS 引擎一个嵌入式 JavaScript 运行环境然后执行你准备好的脚本。它是 BetterNCM 的继任者。BetterNCM 是当年给网易云音乐装插件的管理器作者把代码整体重写后改名 chromatic不再绑定单一客户端而是支持所有 Chromium/V8 软件。核心差异一句话BetterNCM 是给某个客户端管插件的chromatic 是把工具交给你的脚本你自己写。注入入口代码在 src/injectee/想翻机制可以直接看。项目仍在活跃开发中遇到问题直接提交 Issue中英文都收。从克隆到第一次注入的最短三步第一步克隆仓库并构建。执行git clone https://gitcode.com/gh_mirrors/be/chromatic在根目录运行xmake构建工具xmake.lua 里已声明全部依赖。成功标志根目录生成 build/ 目录里面能找到注入库 chromatic-injectee。第二步写第一个脚本并打包进去。脚本最少干一件事比如用Process.arch打印当前架构。再用作者的 fripack 工具把脚本内容写进库文件内预置配置位的打包程序把脚本打进注入库。成功标志库内配置符号g_embedded_config打包后非空。第三步把库放进目标程序目录启动目标。在 Windows 上把 DLL 改名成目标必定加载的系统组件名放进安装目录然后启动客户端。成功标志日志打出[chromatic-injectee] Library loaded且后面没有 Script error。这里有个坑文件名必须和目标期望的一字不差多个空格、大小写不对目标会静默忽略它你一行日志都看不到。两种脚本加载方式发布内嵌开发盯目录注入库有两种模式由内嵌配置fripack 写入的一段 JSON决定EmbedJs 模式JS 源码压缩后直接嵌在库文件里适合发布一个文件走天下。WatchPath 模式库里只记文件路径加载时从磁盘读 JS并起一个后台线程轮询文件变化每 500 毫秒一次发现变化就自动重置引擎重跑脚本相当于热重载改完保存不用重新注入。开发期用 WatchPath 模式保存文件后确认日志出现File change detected, reloading...紧接着出现Script reloaded successfully就算稳了做完再切回 EmbedJs 发布。注入之后你实际能摸到什么脚本的 API 是 Frida 风格一个命名空间管一类能力Process/Module枚举已加载模块和导出函数按函数名找地址Memory分配、读写、改保护属性、按字节模式扫描Interceptor挂住任意函数调用前拿参数、调用后改返回值SoftwareBreakpoint/MemoryAccessMonitor下执行断点和内存访问断点盯着谁读写了某块内存靠内存页保护实现NativeFunction/ExceptionHandler从 JS 调原生函数全局接住访问违例目标不直接崩API 文档 里每个 API 都有可运行的例子想摸清功能边界这是最快的入口。chromatic 注入失败三个高频现象与处理办法现象日志打了 Library loaded但脚本就是不跑。原因内嵌配置是空的或模式字段没写对fripack 没包好。处理重跑 fripack 确认g_embedded_config已写入开发期可先切 WatchPath 模式绕开打包。现象目标启动即崩或功能没生效。原因JS 抛了异常或你用的 API 在当前平台没实现。处理看 stderr 的Script error:行会带具体错误认为属于 bug 就提个中文 Issue。现象改了脚本保存后什么都没变。原因你在 EmbedJs 模式或监听路径是相对路径目标进程的工作目录和你以为的不一样。处理watch_path写绝对路径。跑通之后下一步往哪走跑通之后你在目标进程里就拿到了一套 Frida 风格的运行时工具读内存、钩函数、盯访问调试器能做的事你都能用脚本做。下一步建议从 src/test/ 的测试用例入手每个 API 都有真实用法示例挑一个改成你自己的脚本遇到坑就提 Issue中英文作者都看。【免费下载链接】chromaticUniversal modifier for Chromium/V8 | 广谱注入 Chromium/V8 的通用修改器项目地址: https://gitcode.com/gh_mirrors/be/chromatic创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻