我在 v8/src/parsing/parsing.cc 中添加了一条 print 语句,用于在编译之前输出 JS 源代码以反混淆代码。我还想打印与 JS 关联的 URL(如果存在)。
parser.cc 和scanner.cc 中有一些对象,例如source_url,如果它们确实包含该信息,我们将不胜感激从它们中提取URL 的建议。
如果它们不包含 JS 源 URL,我应该在 Chromium 源代码中的其他位置查找吗?
扫描器传递给解析器的
source_url
仅反映源中显式的“sourceURL”注释;任何需要反混淆的代码可能都没有这些。
要获取脚本 URL,您需要查看
v8::internal::Script::name()
。如果嵌入器(即 Chromium)没有为给定脚本提供名称,它可以是 v8::internal::String
,或者 undefined
——当脚本没有 have 名称/URL 时,尤其会发生这种情况,例如当它来自 DevTools 控制台或动态生成的源字符串时。