使用浏览器插件屏蔽小游戏网站的反调试
有些网页游戏网站为了防止玩家破解,加入了一些反调试。如图所示,一旦进入开发者模式,就会不断的触发断点,无法正常调试。
查看网站js,发现其实就是执行了一些开发者模式的处理。
这个js文件在请求时,参数带了随机数字,导致直接下断点不可用。我尝试了几种方法。
1,在setInterval函数内下断点,然后单步执行回来之后,用控制台将js定义的几个函数都定义为空。可以解决问题,但是每次打开都要执行一次,很麻烦。
2,使用浏览器开发者模式的override功能,同样由于参数带了随机数字的问题,override替换只能同名替换,导致脚本没有替换掉。
3,使用浏览器插件实现override功能。
插件我弄的谷歌浏览器的插件,其他浏览器插件估计也有类似功能。
谷歌浏览器插件有个declarativeNetRequestapi,可以对请求进行一些修改性的操作,可以参考 https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest
我的插件也是按照里面的例子程序改的。
主要就这几个文件。
manifest.json 是插件描述文件。
rules_1.json 是declarativeNetRequest api的规则文件。
AntiindulgenceDisableToolsUTF8.js是我修改后的网站js脚本。就是把里面内容都删了。
service_worker.js 是插件的后台脚本。就是在规则命中时写了个控制台日志,这个应该不是必须的。
manifest.json
rules_1.json
这样当插件加载后,在进入这个游戏网站,网站的反调试脚本就会被插件替换为空文件,不会再影响调试。 pikachu888 发表于 2023-11-20 23:32
service_worker.js是什么内容?
'use strict';
chrome.declarativeNetRequest.onRuleMatchedDebug.addListener((e) => {
const msg = `Navigation to ${e.request.url} redirected on tab ${e.request.tabId}.`;
console.log(msg);
});
console.log('Service worker started.');
就是规则命中后会有个日志记录,应该不是必须有的。 最近正好在学习Chrome插件制作,感谢lz的分享 谢谢大佬,装上试试 还可以这样,学到了 插件应用非常便捷,感谢分享 感谢分享,这个真的有用 感谢分享 service_worker.js是什么内容? 感谢分享 谢谢大佬分享,学习了!{:1_893:}