V8 快照二进制文件/调试规范

Specifications of V8 snapshot binaries / debugging

我偶然发现了 NW,它能够加载 "compiled javascript binary files"。进一步阅读后(起初我认为这只是一些缩小的 javascript)我发现文档在谈论实际的二进制文件。事实证明,V8 可以构建加载的 JS 源代码的快照并将其转储到文件,然后可以将其加载回内存。

https://github.com/nwjs/nw.js/wiki/Protect-JavaScript-source-code-with-v8-snapshot

这些二进制文件的结构有什么规范吗? 有没有办法在反汇编程序(比如 IDA Pro)中加载这样的二进制文件?

(这里是 V8 开发人员。)不,V8 快照文件的格式是一个内部实现细节,既没有记录也没有假定跨版本稳定(相反;V8 假定任何未创建的快照完全相同的版本是不兼容的)。不支持将快照文件加载到反汇编程序中的方法;检查快照内容的方法是调试其创建 and/or 反序列化。

这种情况的背景是快照文件旨在成为一种磁盘缓存以加快启动速度。它们不是可分发的二进制文件。