从devtools控制台读取匿名Javascript函数中的变量

时间:2020-06-14 17:32:53

标签: javascript debugging google-chrome-devtools reverse-engineering firefox-developer-tools

我正试图从缩小的站点脚本中读取一个变量,该脚本由庞大的匿名函数组成,用于反向工程。据我了解,通常无法访问此闭包内部的变量。

(function() {
  var af = function (a) { ... }
  var ge = function() {
      var obj = {};
      obj.foo = 'bar';
      af(obj);
  }
})();

但是,我可以通过在该范围内的一行上放置一个断点来做到这一点。 有没有一种方法可以在开发人员控制台中从Javascript复制此代码,或者以其他方式无需修改脚本?

我尝试钩住Function.prototype.apply,但遇到无限递归路径。 该脚本重新定义了console之类的全局变量,这使它相当烦人。

1 个答案:

答案 0 :(得分:0)

wOxxOm提供了一种实现此目的的方法。

Object.defineProperty(Object.prototype, "foo", {
    set: function(val) {
        console.log("Intercepted:", val);
        this._foo = val;
    },
    get: function() {
        return this._foo;
    }
});