【问题标题】:Read variable from anonymous Javascript function from devtools console从 devtools 控制台的匿名 Javascript 函数中读取变量
【发布时间】:2020-10-04 03:30:17
【问题描述】:

我正在尝试从一个缩小的站点脚本中读取一个变量,该脚本由一个巨大的匿名函数组成,用于逆向工程。据我了解,通常不可能访问被困在这个闭包中的变量。

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

但是,我可以通过在该范围内的一行上放置一个断点来实现。 有没有办法在开发者控制台中通过 Javascript 或其他方式在不修改脚本的情况下重现这一点?

我尝试挂钩Function.prototype.apply,但遇到了无限递归路径。 该脚本重新定义了像 console 这样的全局变量,这让这很烦人。

【问题讨论】:

  • 你可以在 Object.prototype 上为foo 定义一个setter。
  • @wOxxOm 谢谢。像魅力一样工作。

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


【解决方案1】:

找到了一种方法来实现这一点,感谢wOxxOm

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2010-12-19
    • 2017-02-17
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多