Javascript挂钩

问题描述 投票:-3回答:1

如果我想在Javascript中挂起对eval和settimeout等函数的调用来获取代码eval将要执行的事情,并且通过函数settimeout将要调用,我将从哪里开始?

场景是,我转到chrome的网页,我希望在这些点上设置断点。然而,它们可能会被混淆(可能是恶意的),所以我不能只搜索这些类型的呼叫来源。

难道我不能直接使用chrome来执行此操作,或者我是否真的需要在v8中创建一个钩子以捕获对特定js函数的这些调用?

javascript v8 malware exploit
1个回答
0
投票

无法拦截所有代码执行事件。您必须修改源。

也就是说,evalsetTimeout都只是函数,作为全局对象的可配置属性安装。你可以用包装器覆盖它们:

var original_eval = eval;
eval = function(str) {
  console.log("eval was called with: " + str);
  return original_eval(str);
}

请注意,evalsetTimeout之间存在很大的概念差异:前者采用新的源代码,后者只能调度对现有函数的调用(可能是使用eval创建的)。

还有Function构造函数,类似于eval

© www.soinside.com 2019 - 2024. All rights reserved.