V8 Killer 是我开发的,一个用于在运行时修改 V8 虚拟机中 js 代码的工具,实现在不修改任何文件的前提下,修改实际上的代码逻辑,并可以通过潜在的完整性检查。
它的原理是劫持 V8 中的 v8::ScriptCompiler::CompileFunctionInternal(...)
,修改传入这个函数的参数,将指向原有 v8::Local<v8::String>
的指针指向修改之后的 v8::Local<v8::String>
。
目前 V8 Killer 支持的目标有:
目前以下平台由于移除了 V8 的符号导出,目前尚未支持,未来将引入符号匹配支持这些平台:
项目目前支持 Windows 和 Linux 双平台,macOS 的支持仍在规划中。由于主要维护者(我)缺少 macOS 设备,macOS 支持可能仍需一段时间。欢迎各位果子程序员适配 PR 。
项目仍在活跃开发中,欢迎提交 Feature Request 和 Bug Report 到 GitHub Issues 中,也欢迎在评论区中直接提及。我会尽快处理他们 :)
题外话,这是我第一个使用 Rust 编写的正式项目,也是我 GitHub 目前为止唯一的正式项目,限于水平问题,代码难免简陋,也没有很好地组织项目结构,还望各位多多指教。
这里是 GitHub 链接:ShellWen/v8_killer。
1
Donahue 2023-09-30 10:44:19 +08:00
好牛 看了作者主页是高中生
|
2
Donahue 2023-09-30 10:45:05 +08:00
可以加个 v 吗
|
4
Jirajine 2023-09-30 11:01:53 +08:00 via Android
bun 不是基于 v8 ,而是苹果 WebKit 那一套的 js 引擎。
|
6
ysc3839 2023-09-30 11:37:00 +08:00 via Android 1
macOS 可以用虚拟机,不过 GUI 性能会很差,ssh 远程连接开发是没什么问题
|
7
tyzandhr 2023-09-30 13:35:20 +08:00 via Android
厉害!
|
8
kkk9 2023-09-30 15:48:57 +08:00
star! 😍
|
9
ChaosesIb 2023-09-30 18:48:32 +08:00
CDP 对大部分需求应该足够了,Node.js 可以直接用 `process._debugProcess(pid)` 来远程启动 CDP server ,源码在这: https://github.com/nodejs/node/blob/51f4ff245018153abbb918b0d4a3cce65510d762/src/node_process_methods.cc#L347-L444
|
11
YY 2023-10-02 12:21:49 +08:00
微信小程序 有方法注入吗
|