Как я могу отключить только ключевое слово "debugger" в chrome, которое выполняется eval внутри цикла? - PullRequest
0 голосов
/ 09 ноября 2019

Я хочу отключить только ключевое слово «отладчик» на протяжении всего процесса отладки. Я отлаживаю сценарий, который запутан и использует eval для порождения [VM], который затем, этот [VM] имеет установленный интервал с другим eval, который также имеет ключевое слово debugger, которое выполняется довольно много раз (мое предположениебудет хотя бы сотни раз).


Способы репликации: клон https://github.com/krpar/pooky-browser, и из README используйте пуки с 10-й недели. После этого запустите "node index.js",Откройте devtools и включите точки останова


Что я имею в виду: получите исходный код хрома, отредактируйте ключевое слово «отладчик», чтобы оно не имело никакой реальной цели. Почему это неэффективно: компиляция занимает 13 часов на моей машине;Я точно не знаю, как я это сделаю;Я буду использовать это как последнее средство;


Я просмотрел Chrome, как отключить ключевое слово отладчика или отключить паузу , и я видел ответ Венера, я не уверенесли я смогу успешно воспроизвести это, потому что репозиторий, который я клонировал, уже «внедряет» скрипт pooky.js в веб-сайт supremenewyork.com

Я также попытался найти больше ответов, но они просто удаляют всеточки останова или попытка заблокировать скрипт;Недостатки: я пытался использовать «никогда не останавливаться на достигнутом», но, поскольку он выполняется eval, он бесполезен


Этот код с первого [VM], который был создан

(function() {
    (function a() {
        var c = new Date().valueOf();
        eval(" try { setTimeout(a, 2000); (function b () { debugger; if((R0ggg() - this) > 30) { b.call(R0ggg()); } }).call(R0ggg()); } catch (e) { } ");
        if ((new Date().valueOf() < c) || (new Date().valueOf() - c) > 1062) {
            var k0gggg = 2;
            for (; k0gggg !== 1; ) {
                switch (k0gggg) {
                case 2:
                    (function() {
                        var D3wg = 2;
                        for (; D3wg !== 7; ) {
                            switch (D3wg) {
                            case 3:
                                return;
                                break;
                            case 4:
                                D3wg = p3wg[t3wg] ? 3 : 9;
                                break;
                            case 2:
                                var X3wg = "u";
                                X3wg += "n";
                                X3wg += "d";
                                X3wg += "e";
                                X3wg += "f";
                                X3wg += "i";
                                X3wg += "n";
                                X3wg += "e";
                                X3wg += "d";
                                var t3wg = "_";
                                t3wg += "p";
                                t3wg += "Z";
                                t3wg += "6";
                                t3wg += "R";
                                t3wg += "H";
                                t3wg += "z";
                                t3wg += "K";
                                t3wg += "3";
                                t3wg += "L";
                                t3wg += "T";
                                t3wg += "1";
                                t3wg += "I";
                                var p3wg = typeof window !== X3wg ? window : typeof global !== X3wg ? global : this;
                                D3wg = 4;
                                break;
                            case 9:
                                try {
                                    var J3wg = 2;
                                    for (; J3wg !== 1; ) {
                                        switch (J3wg) {
                                        case 2:
                                            AtCB();
                                            J3wg = 1;
                                            break;
                                        }
                                    }
                                } catch (S3wg) {}
                                p3wg[t3wg] = function() {}
                                ;
                                D3wg = 7;
                                break;
                            }
                        }
                    }());
                    k0gggg = 1;
                    break;
                }
            }
        }
    }
    )()
}
)();

Я ожидаю, что мои Google Chrome Devtools не остановятся на ключевом слове "отладчик"

1 Ответ

0 голосов
/ 09 ноября 2019

Это довольно хакерская идея, но одной из возможностей может быть monkeypatch window.eval, который заменяет все экземпляры debugger ничем до запуска скрипта. В index.js, прямо над первым addScriptTag вызовом, введите:

await page.addScriptTag({content: `
  const origEval = window.eval;
  window.eval = (str) => {
    const replaced = str.replace(/debugger/g, 'undefined');
    return origEval(replaced);
  };
`});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...