本帖最后由 vlricchen 于 2023-11-25 11:05 编辑
有些网页游戏网站为了防止玩家破解,加入了一些反调试。
如图所示,一旦进入开发者模式,就会不断的触发断点,无法正常调试。 查看网站js,发现其实就是执行了一些开发者模式的处理。 
这个js文件在请求时,参数带了随机数字,导致直接下断点不可用。我尝试了几种方法。 1,在setInterval函数内下断点,然后单步执行回来之后,用控制台将js定义的几个函数都定义为空。可以解决问题,但是每次打开都要执行一次,很麻烦。 2,使用浏览器开发者模式的override功能,同样由于参数带了随机数字的问题,override替换只能同名替换,导致脚本没有替换掉。 3,使用浏览器插件实现override功能。
插件我弄的谷歌浏览器的插件,其他浏览器插件估计也有类似功能。 谷歌浏览器插件有个declarativeNetRequest api,可以对请求进行一些修改性的操作,可以参考 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 
这样当插件加载后,在进入这个游戏网站,网站的反调试脚本就会被插件替换为空文件,不会再影响调试。
注:若转载请注明大神论坛来源(本贴地址)与作者信息。
|