52panggirl 发表于 2023-11-20 12:26

使用浏览器插件屏蔽小游戏网站的反调试

有些网页游戏网站为了防止玩家破解,加入了一些反调试。


如图所示,一旦进入开发者模式,就会不断的触发断点,无法正常调试。
查看网站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



这样当插件加载后,在进入这个游戏网站,网站的反调试脚本就会被插件替换为空文件,不会再影响调试。

52panggirl 发表于 2023-11-21 13:45

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.');

就是规则命中后会有个日志记录,应该不是必须有的。

空竹 发表于 2023-11-20 16:33

最近正好在学习Chrome插件制作,感谢lz的分享

FruitBaby 发表于 2023-11-20 16:56

谢谢大佬,装上试试

tangguolin555 发表于 2023-11-20 17:13

还可以这样,学到了

tezb666 发表于 2023-11-20 17:16

插件应用非常便捷,感谢分享

Carney1027 发表于 2023-11-20 22:45

感谢分享,这个真的有用

YZJCX330 发表于 2023-11-20 23:18

感谢分享

pikachu888 发表于 2023-11-20 23:32

service_worker.js是什么内容?

hyjlxm 发表于 2023-11-21 00:17

感谢分享

baoqingzxc 发表于 2023-11-21 07:43

谢谢大佬分享,学习了!{:1_893:}
页: [1] 2 3 4
查看完整版本: 使用浏览器插件屏蔽小游戏网站的反调试