gpt4 book ai didi

javascript - 如何仅禁用 chrome 中的 "debugger"关键字,该关键字由循环内的 eval 执行?

转载 作者:行者123 更新时间:2023-12-05 07:17:32 25 4
gpt4 key购买 nike

我只想在整个调试过程中禁用“调试器”关键字。我正在调试一个被混淆的脚本,它使用 eval 生成一个 [VM],然后,这个 [VM] 与另一个 eval 有一个设置的间隔,另一个 eval 也有 debugger 关键字,它被执行了很多次(我的猜测至少会是数百次)。


复制方式:克隆https://github.com/krpar/pooky-browser , 并从 README 使用第 10 周的 pooky。之后,运行“node index.js”,打开 devtools 并启用断点


我的想法是:获取 chromium 源代码,编辑“调试器”关键字,使其没有实际用途。为什么效率不高:在我的机器上编译需要 13 个小时;我不完全知道我将如何做到这一点;我会把它作为最后的手段;


我看过Chrome how to disable debugger keyword or disable pause我已经看到 Wener 的回答,我不确定我是否可以成功复制它,因为我克隆的存储库已经将 pooky.js 脚本“注入(inject)”到 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 不会停在“调试器”关键字处

最佳答案

这是一个非常 hacky 的想法,但一种可能性是 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);
};
`});

关于javascript - 如何仅禁用 chrome 中的 "debugger"关键字,该关键字由循环内的 eval 执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58777826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com