本插件是基于Hook_JS库所写的Google插件,将致力于辅助前端JavaScript逆向以及渗透测试信息收集。
如何提交您自己的脚本:AntiDebug_Breaker wiki
反调试:https://www.bilibili.com/video/BV1gQ4mzMEA4
Vue:https://www.bilibili.com/video/BV12148z7EnP
Hook CryptoJS对称加密 快速出key、iv、mode、padding:https://www.bilibili.com/video/BV1MPW1zDEK8
JS逆向快速定位加密位置以及获取加密密文等加密参数:https://www.bilibili.com/video/BV1cRyXBaEJX
SpiderDemo 靶场练习网站:https://www.spiderdemo.cn
地址:https://chromewebstore.google.com/detail/antidebug-breaker/opkclndfcbafdaecbbaklefnaadopcln
将源码下载到本地后打开chrome,访问chrome://extensions/,点击左上角的加载未打包的扩展程序,然后选中源码文件夹即可:

AntiDebug
- Bypass Debugger
- hook log
- Hook table
- hook clear
- hook close
- hook history
- Fixed window size
- 页面跳转JS代码定位通杀方案
- Hook CryptoJS
- Hook JSEncrypt RSA
Hook
- document.cookie
- XMLHttpRequest.setRequestHeader
- XMLHttpRequest.open
- localStorage.setItem
- localStorage.getItem
- localStorage.removeItem
- localStorage.clear
- sessionStorage.setItem
- sessionStorage.getItem
- sessionStorage.removeItem
- sessionStorage.clear
- fetch
- JSON.parse
- JSON.stringify
- Promise
- Math.random
- Date.now
Vue
该脚本用于绕过无限Debugger,目前引起无限Debugger的三种核心方式为:
eval
Function
Function.prototype.constructor
本脚本通过 Hook 以上核心函数有效绕过大部分前端无限 debugger。但因 eval 作用域问题,某些网站可能会报错。此时可切换至火狐浏览器无视debugger进行调试。
注:极少数网站可能采用特殊反制措施(如故意引发eval作用域问题或其他问题),导致前端报错或依然能引起debugger,这种情况需针对性解决。总体而言,本脚本能覆盖绝大多数场景。
本脚本为Yosan师傅所作,用于防止js重写console.log等方法。
绕过js检测运行时间差来实现反调试。
本脚本将针对以下这三种特征的反调试网站(注:包括但不仅限于这以下三种特征,需根据实际情况去判断是否需要使用本脚本):
频繁调用console.clear清除控制台数据
控制台频繁输出大量内容
进行完以上两种操作后直接使用location.href进行跳转,一般跳转到主域名为github.io的网站。
如存在以上特征的网站,均可尝试使用本脚本去进行绕过。
禁止js清除控制台数据。
脚本原理:JS逆向系列10-反调试与反反调试
重写close,以此来避免网站反调试关闭当前页面。
脚本原理:JS逆向系列10-反调试与反反调试
避免网站反调试返回上一页或某个特定历史页面。
脚本原理:JS逆向系列10-反调试与反反调试
固定浏览器高度宽度值以绕过前端检测用户是否打开控制台。
固定的宽度高度值:
innerHeight:660
innerWidth:1366
outerHeight:760
outerWidth:1400
本脚本为CC11001100师傅所作,脚本原地址:https://github.com/JSREI/page-redirect-code-location-hook,用于阻断页面跳转,留在当前页面分析。
Hook CryptoJS当中的所有 对称&哈希&HMAC算法,例如AES、DES、MD5、SHA等。如果未打印请自查目标站点是否清除了console.log或是否使用的是CryptoJS的加密算法,如果确认使用的是CryptoJS库进行的加密而无法打印可联系我。
Hook JSEncrypt加密库中的RSA算法,加密时将在控制台打印公钥、原始数据、加密后的密文。解密时将在控制台打印私钥、原始数据、解密后的明文。如果未打印请自查目标站点是否清除了console.log或是否使用的是JSEncrypt的RSA算法,如果确认使用的是JSEncrypt库进行的RSA加密而无法打印可联系我。
开启本脚本后默认将在控制台打印设置的cookie,如果需要打印特定cookie请在下方输入框中输入cookie名称,脚本将会捕获这些特定cookie名。
开启本脚本后默认将在控制台打印设置的请求头,如果需要打印特定请求头请在下方输入框中输入请求头名称,脚本将会捕获这些特定请求头名。
开启本脚本后默认将在控制台打印初始化xhr请求配置(url,method),如果需要捕获特定url请在下方输入框中输入url名称,脚本将会捕获这些特定url名称。
开启本脚本后默认将在控制台打印设置的localStorage键值,如果需要捕获特定键请在下方输入框中输入键名,脚本将会捕获这些特定键名。
开启本脚本后默认将在控制台打印站点读取的localStorage键名,如果需要捕获特定键名请在下方输入框中输入键名,脚本将会捕获这些特定键名。
开启本脚本后默认将在控制台打印移除的localStorage键名,如果需要捕获特定键名请在下方输入框中输入键名,脚本将会捕获这些特定键名。
开启本脚本后如果站点进行了清空localStorage动作,默认会在控制台打印消息。
开启本脚本后默认将在控制台打印设置的sessionStorage键值,如果需要捕获特定键请在下方输入框中输入键名,脚本将会捕获这些特定键名。
开启本脚本后默认将在控制台打印站点读取的sessionStorage键名,如果需要捕获特定键名请在下方输入框中输入键名,脚本将会捕获这些特定键名。
开启本脚本后默认将在控制台打印移除的sessionStorage键名,如果需要捕获特定键名请在下方输入框中输入键名,脚本将会捕获这些特定键名。
开启本脚本后如果站点进行了清空sessionStorage动作,默认会在控制台打印消息。
开启本脚本后默认将在控制台打印fetch请求设置。
开启本脚本后默认将在控制台打印传入的JSON,如果需要捕获特定JSON请在下方输入框中输入JSON,脚本将会捕获这些特定JSON字符串。
开启本脚本后默认将在控制台打印传入JSON.stringify的值。
本脚本为Yosan师傅所作。
将在控制台打印Promise的resolve参数,可快速定位异步回调位置。
固定Math.random返回值
固定Date.now返回值
获取已加载的路由并显示在下方的表格中,注意未加载的路由不会被获取到,如果长时间未获取到可能是由于目标站点未使用vue router,也可能是因为目标站点未加载完毕。
本脚本将清除vue router的跳转方法,如果清除后依然会跳转,一方面可能是由于注入的脚本还未清除跳转方法,网站就调用了方法进行跳转,此时可以考虑手动替换js清除跳转方法。另一方面可能是由于在代码中调用的不是vue router的跳转方法,此时可以考虑开启反调试板块中的hook close或hook history脚本,再或者打开页面跳转JS代码定位通杀方案脚本,定位到跳转的函数并替换清除。
仅清除全局前置守卫(beforeEach)和全局解析守卫(beforeResolve),如果清除后网站控制台显示报错,可能是由于在路由守卫中做了动态加载等其他操作,此时可以考虑关闭本脚本并亲自替换js逻辑实现绕过。
本脚本引用自vue-force-dev。
当开启本脚本后将激活Vue Devtools。Vue2需开启Vue.js devtools(v5),Vue3需开启Vue.js devtools,可自行去谷歌插件商店安装上述两个插件。注:1.上述两个插件不能同时开。2.当下方没有检测到Vue Router时并不能代表网站不是Vue框架,只能说明网站并没有使用Vue Router。
- 本插件目前不支持火狐。
- 进入网页后,无论是开启脚本还是关闭脚本,需刷新页面后才会生效。
- 本插件无法做到自动化添加Vue未加载的路由。
- 更新插件时请将旧版本插件从浏览器中移除再导入新版插件。
致谢个人:CC11001100、Dexter、d1sbb、Yosan
本项目参考过、引用过或正在引用的优质项目:VueCrack、FakeCryptoJS、vue-force-dev
如有bug或其他问题可提交issues,或者关注公众号Spade sec联系我。
如需添加交流群可加我微信:I-0xsdeo。
本工具禁止未授权商业用途,禁止二次开发后进行未授权商业用途。
