Skip to content

0xsdeo/AntiDebug_Breaker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

113 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Antidebug_Breaker

Intro

本插件是基于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/,点击左上角的加载未打包的扩展程序,然后选中源码文件夹即可: 1753669187234

脚本使用场景

AntiDebug

Hook

Vue

反调试

该脚本用于绕过无限Debugger,目前引起无限Debugger的三种核心方式为:

eval

Function

Function.prototype.constructor

本脚本通过 Hook 以上核心函数有效绕过大部分前端无限 debugger。但因 eval 作用域问题,某些网站可能会报错。此时可切换至火狐浏览器无视debugger进行调试。

注:极少数网站可能采用特殊反制措施(如故意引发eval作用域问题或其他问题),导致前端报错或依然能引起debugger,这种情况需针对性解决。总体而言,本脚本能覆盖绝大多数场景

脚本原理:JS逆向系列14-Bypass Debugger

本脚本为Yosan师傅所作,用于防止js重写console.log等方法。

绕过js检测运行时间差来实现反调试。

本脚本将针对以下这三种特征的反调试网站(注:包括但不仅限于这以下三种特征,需根据实际情况去判断是否需要使用本脚本):

频繁调用console.clear清除控制台数据

控制台频繁输出大量内容

进行完以上两种操作后直接使用location.href进行跳转,一般跳转到主域名为github.io的网站。

如存在以上特征的网站,均可尝试使用本脚本去进行绕过。

脚本原理:JS逆向系列19-无感绕过一类运行时间差反调试

禁止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加密而无法打印可联系我。

Hook

开启本脚本后默认将在控制台打印设置的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

获取已加载的路由并显示在下方的表格中,注意未加载的路由不会被获取到,如果长时间未获取到可能是由于目标站点未使用vue router,也可能是因为目标站点未加载完毕。

本脚本将清除vue router的跳转方法,如果清除后依然会跳转,一方面可能是由于注入的脚本还未清除跳转方法,网站就调用了方法进行跳转,此时可以考虑手动替换js清除跳转方法。另一方面可能是由于在代码中调用的不是vue router的跳转方法,此时可以考虑开启反调试板块中的hook close或hook history脚本,再或者打开页面跳转JS代码定位通杀方案脚本,定位到跳转的函数并替换清除。

仅清除全局前置守卫(beforeEach)和全局解析守卫(beforeResolve),如果清除后网站控制台显示报错,可能是由于在路由守卫中做了动态加载等其他操作,此时可以考虑关闭本脚本并亲自替换js逻辑实现绕过。

脚本原理:最大化收集Vue框架(SPA类型)下的js

本脚本引用自vue-force-dev

当开启本脚本后将激活Vue Devtools。Vue2需开启Vue.js devtools(v5),Vue3需开启Vue.js devtools,可自行去谷歌插件商店安装上述两个插件。注:1.上述两个插件不能同时开。2.当下方没有检测到Vue Router时并不能代表网站不是Vue框架,只能说明网站并没有使用Vue Router。

插件使用注意事项

  1. 本插件目前不支持火狐。
  2. 进入网页后,无论是开启脚本还是关闭脚本,需刷新页面后才会生效。
  3. 本插件无法做到自动化添加Vue未加载的路由。
  4. 更新插件时请将旧版本插件从浏览器中移除再导入新版插件。

致谢

致谢个人:CC11001100Dexterd1sbbYosan

本项目参考过、引用过或正在引用的优质项目:VueCrackFakeCryptoJSvue-force-dev

Contact

如有bug或其他问题可提交issues,或者关注公众号Spade sec联系我。

如需添加交流群可加我微信:I-0xsdeo。

使用许可

本工具禁止未授权商业用途,禁止二次开发后进行未授权商业用途。

Star History

Stargazers over time