Javascript挂钩

时间:2018-02-28 11:41:53

标签: javascript v8 malware exploit

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

场景是,我转到chrome的网页,我想在每个点设置一个断点。然而,它们可能会被混淆(可能是恶意的),因此我不能仅仅搜索这些类型的呼叫来源。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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