当前位置: 首页 > java >正文

js逆向反调试的基本 bypass

反调试的基本检测方法

1、无限debugger 技术 (防止你断点 反编译)

2、键盘监听(右键 、 f12的禁止)

3、检测是否是浏览器

4、检测是否启用了管理员模式的(检测是不是 true)

绕过技巧:

对于没有联系的简单发现的单断点无限debug :

1、无断点模式设置

2、禁止局域断点

3、设置条件断点

高级 :

4、文件替换

5、burp规则过滤

6、hook脚本绕过

单断点: Title

单击f12 直接进入到 debugger模式  之后就是无限的停止在这个页面

使用方法1 :

使用这个

debug 绕过了 但是缺点就是我们也不能使用断点了

第二种 2、

优点是 还可以再别的函数上进行断点   缺点就是对于有联系的断点来说很麻烦

第三方法 : 和第二种差不多 :

这个的意思其实就是 用不在此处进行断点

高级 : Scrape | Movie

文件替换 :

我们打开的时候会出现 自动断点的情况  其实就是debug 函数导致的   那这个是不是可以使用本地的文件进行替换 ???因为js是前端的东西 是可以进行修改的

操作 :1、

我的是edge 浏览器 所以可能会有些不同  记录下debug的位置 

debugger ;console.log("debugger")

说明现在这个js就是我们本地的了 我们可以进行修改

修改 运行

发现不止一个 waf   上面的操作

然后重新开始就绕过了

burp规则过滤

配置上规则就行了

hook脚本:

burp一般不常用 因为来回换代理太麻烦了 

 

下载这个篡改猴   除了 edge 其他的浏览器需要魔法才能访问这个

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      2025-01-12
// @description  监控Function构造函数调用,并拦截包含'debugger'语句的函数定义,替换为日志记录
// @author       xiaodisec
// @match        https://jishulink.com/video/c246316
// @icon         https://www.google.com/s2/favicons?sz=64&domain=jishulink.com
// @grant        none
// ==/UserScript==// 立即执行函数表达式,返回一个清理函数,用于在必要时恢复Function.prototype.constructor
const cleanup = (function () {'use strict';// 保存原始的Function构造函数const originalConstructor = Function.prototype.constructor;// 检查Function.prototype.constructor是否可写if (typeof Object.getOwnPropertyDescriptor(Function.prototype, 'constructor').writable === 'boolean' &&!Object.getOwnPropertyDescriptor(Function.prototype, 'constructor').writable) {console.error('Function.prototype.constructor is not writable. Cannot hook the constructor.');return function () {};}// 重写Function构造函数Function.prototype.constructor = function (...args) {console.log(`Function constructor called on page ${location.href} with arguments:`, args);if (args.length && args[0].includes("debugger")) {console.warn(`Attempt to use 'debugger' in Function constructor intercepted on page ${location.href}!`);args[0] = args[0].replace(/debugger/g, "console.log('debugger intercepted');");// 这里需要返回一个函数实例,而不是直接返回,否则会导致函数定义失败return originalConstructor.apply(this, args);}return originalConstructor.apply(this, args);};console.log("Function.prototype.constructor is now hooked!");// 返回清理函数,用于恢复原始的Function构造函数return function () {Function.prototype.constructor = originalConstructor;console.log("Function.prototype.constructor has been restored.");};
})();// 在脚本卸载或页面卸载时调用清理函数
window.addEventListener('unload', function () {cleanup();
});

分享一个 解无限debug的脚本

启用起来

https://jishulink.com/video/c246316

目标web  当然如果你想测试其他的web  可以改指向的web

当我们不启用脚本时

播放视频时点击 f12会触发无限debug

直接bypass了

http://www.xdnf.cn/news/7421.html

相关文章:

  • 【C语言】大程序结构
  • Linux详解基本指令(一)
  • 对盒模型的理解
  • 澳大利亚TikTok网络专线+本地化策略:澳洲电商品牌的破局之道
  • 最大子树和--树形dp
  • day30python打卡
  • Rust 学习笔记:关于错误处理的练习题
  • 1-3V升3.2V升压驱动WT7013
  • 反射操作注解的详细说明
  • HTTPS核心机制拆解
  • Windows 如何安装CUDA
  • 【免杀】C2免杀技术(六)进程镂空(傀儡进程)
  • 往现有虚拟环境中增加python3.9.6
  • 万用表如何区分零线、火线、地线
  • 2022年下半年信息系统项目管理师——综合知识真题及答案(3)
  • Pytorch---view()函数
  • 机器人编程基础---C语言中的文件操作
  • SHELL练习题(1-11题)记录(牛客)
  • 力扣HOT100之二叉树:199. 二叉树的右视图
  • LintCode第42题-最大子数组 II-使用前缀和优化 + 动态规划法
  • 【深度学习新浪潮】如何入门人工智能?
  • Python 与 面向对象编程(OOP)
  • CVE-2022-22963源码分析与漏洞复现
  • Java EE初阶——单列模式和阻塞队列
  • 深入解析RAG技术:提升题目解答准确率的利器
  • turf的pointsWithinPolygon排查
  • window xampp apache使用腾讯云ssl证书配置https
  • 算法(最小基因变化+迷宫中离入口最近的出口)
  • C# 枚举 详解
  • linux kernel 编译