JS逆向-断点调试与反绕过技巧

发布时间:2026/10/9 14:40:01

JS逆向-断点调试与反绕过技巧 渗透测试角度优化笔记JS逆向基础、反调试与实战应用1. JS逆向与Web安全的关联JS逆向是前端分析的核心技术它并非孤立的代码审计而是与Web安全测试紧密相连。其主要应用场景包括突破前端防护分析登录加密、Sign签名、参数混淆等机制为后续的暴力破解、数据篡改、接口越权等攻击铺路。发现隐藏攻击面从JS文件中提取API接口、敏感参数、甚至硬编码的密钥或调试信息。逻辑漏洞挖掘分析前端折扣计算、验证码生成、支付逻辑等寻找可被利用的业务缺陷。2. 开发者工具F12核心面板使用指南面板名称核心功能在逆向与安全测试中的应用️元素 (Elements)查看和实时编辑页面的HTML结构与CSS样式。用于定位与数据提交相关的DOM元素如表单字段、隐藏值或观察页面元素的变化如验证码图片刷新。️控制台 (Console)执行任意JavaScript代码查看日志和错误信息。1. 测试变量/函数在断点处可直接在控制台输入变量名查看其值或调用已加载的函数。2. 定位加密入口搜索可能的关键词如encrypt、sign、md5。网络 (Network)监控所有网络请求的详情Header、参数、响应。核心入口1.抓包分析找到目标请求如登录、提交订单分析其请求参数尤其是加密参数如sign、token。2.启动器 (Initiator)查看请求由哪个JS文件的哪一行发起的快速定位加密代码的位置。源代码/来源 (Sources)核心调试面板。可查看所有加载的资源JS、CSS、设置断点、单步执行、查看调用栈和作用域。逆向主战场1.文件查找通过搜索CtrlShiftF全局搜索关键词定位加密函数所在文件。2.断点调试详见下文。3.调用栈分析理清代码执行顺序找到加密函数的调用源头。应用程序 (Application)查看和管理本地存储Cookie、LocalStorage、SessionStorage、缓存等。用于检查前端存储的敏感信息如令牌、用户信息或分析存储对应用状态的影响。3. 核心逆向技术断点调试六种姿势断点是暂停代码执行、观察运行时状态的最有效手段。以下是六种常用断点及其在逆向中的应用场景断点类型如何设置主要应用场景正常断点在Sources面板的代码行号上单击。基础调试。分析核心加密函数、参数生成逻辑的每一步执行过程。条件断点右键行号 → “添加条件断点”输入条件表达式。精准定位。只在满足特定条件如data.id 10086、i 5时暂停适用于循环或处理大量数据时。日志断点右键行号 → “添加日志断点”输入要输出的表达式。插桩分析。无需暂停代码仅在命中断点时输出日志。非常适合分析复杂的虚拟机和混淆代码可以打印出关键寄存器和变量的值。XHR断点Sources → XHR/提取断点 → “”添加URL包含的关键字。定位请求。当希望拦截所有包含特定关键字如/api/login的Ajax请求时代码会自动断在send()方法处轻松找到请求的发送源头。️事件断点Sources → 事件监听器断点 → 展开并勾选目标事件如click。分析交互。用于调试由用户操作触发的功能特别是滑块验证码、图片点击等场景可以捕捉到事件处理函数。DOM断点元素面板 → 右键目标元素 → 中断 → 子树修改/属性修改/节点移除。追踪DOM变化。当页面元素被动态修改、添加或删除时如翻页加载、弹窗出现可以断下并追溯修改DOM的JS代码。4. 调用堆栈分析理清代码执行逻辑当断点触发时调用堆栈 (Call Stack)面板会显示当前函数的调用链。在逆向中它的作用是追溯源头从当前断点位置如加密函数内部向上查看找到是谁调用了这个函数最终找到参数传入的起点。理解流程分析整个加密逻辑的执行顺序避免在嵌套的异步回调或复杂的函数调用中迷失方向。5. 反调试技术概览反调试的目的是阻止或干扰开发者工具的调试功能使逆向分析者难以动态跟踪代码执行。根据其实现方式主要分为以下几类类别代表技术检测原理绕过思路无限循环/断点无限Debugger利用debugger;语句或setInterval触发断点使调试器不断暂停。禁用所有断点、替换文件、条件断点。键盘事件监听监听F12、CtrlShiftI等监听keydown事件阻止开发者工具打开。修改事件监听、Burp替换响应、油猴脚本。环境特征检测检测窗口大小差异、console对象、devtools变量等通过比较窗口内外尺寸、console.log调用次数、Function.prototype.toString检测等判断调试器是否打开。Hook相关函数、修改返回结果、使用无头浏览器。时间差异检测测量代码执行时间调试状态下代码执行速度变慢通过时间差判断。设置条件断点跳过检测、修改时间计算逻辑。非浏览器检测检测User-Agent、navigator属性等识别自动化工具或非标准浏览器环境。伪造User-Agent、模拟浏览器环境。6. 常见反调试技术详解与绕过实战6.1 无限Debugger原理在关键代码前插入debugger;语句或通过setInterval不断触发导致调试器无限暂停。javascript(function() {function evil() {debugger;setTimeout(evil, 100);}evil();})();绕过方法*禁用所有断点在Sources面板点击“Deactivate breakpoints”按钮或按CtrlF8临时忽略所有debugger断点。*设置条件断点在debugger行上右键选择“条件断点”输入false使其永远不触发。*替换文件使用Burp Suite或油猴插件将响应中的debugger替换为空白。6.2 键盘事件监听阻止打开调试工具原理监听keydown事件当按F12或CtrlShiftI等组合键时阻止默认行为或弹窗警告。javascriptdocument.addEventListener(keydown, function(e) {if (e.key F12 || (e.ctrlKey e.shiftKey e.key I)) {e.preventDefault();return false;}});绕过方法*使用菜单打开在浏览器菜单中手动选择“开发者工具”。*Burp替换拦截响应移除事件监听代码。*油猴脚本注入脚本解除事件监听如window.removeEventListener(keydown, listener, true)。6.3 检测开发者工具状态原理利用console.log调用次数、console.profile、Function.prototype.toString等方法判断调试器是否打开。javascriptvar c 0;setInterval(function() {console.log(c);if (c 100) alert(调试中);}, 100);绕过方法*Hookconsole.log在控制台执行console.log function(){}使其失效。*修改检测逻辑通过Burp或油猴替换相关代码或使用Object.defineProperty重写属性。6.4 时间差检测原理在调试模式下代码执行速度会显著变慢。通过测量两段代码之间的时间差判断是否处于调试状态。javascriptvar start Date.now();for (var i 0; i 10000000; i) { /* 空循环 */ }var end Date.now();if (end - start 100) alert(调试中);绕过方法*跳过检测在Date.now()处设置条件断点修改返回值。*使用脚本自动化用无头浏览器如Puppeteer运行避免手动调试。6.5 非浏览器环境检测原理检测navigator.webdriver、navigator.plugins、window.chrome等属性识别自动化工具。绕过方法*使用puppeteer-extra并安装stealth插件模拟真实浏览器。*手动修改属性在控制台执行Object.defineProperty(navigator, webdriver, {get: () undefined})。7. 实战应用思路从逆向到漏洞利用将以上技巧串联起来形成从发现到利用的闭环捕获目标在网络面板找到包含可疑参数如sign、token的请求。定位代码右键请求 → “启动器” 查看调用栈或在Sources面板中全局搜索加密参数名。设置断点* 如果找到了疑似加密函数在函数入口处设置正常断点。* 如果想拦截所有API请求设置XHR断点。* 如果是验证码点击设置事件断点。触发与调试重新触发操作如点击登录代码在断点处暂停。此时* 查看作用域观察变量值找到生成sign的原始数据和算法。* 利用调用堆栈向上追溯理解数据流。* 在控制台中测试函数或修改变量值观察影响。模拟与验证* 分析清楚后可以使用Python、Node.js等语言模拟出加密算法。* 在Burp Suite中构造请求使用模拟的算法生成合法参数尝试绕过前端限制进行漏洞测试如越权、爆破、篡改价格。关键技巧先禁用所有断点快速跳过无限debugger。使用XHR断点定位请求如果加密由请求触发直接对请求URL设XHR断点定位发送位置绕过前端检测。利用条件断点精准暂停在可疑函数入口设条件断点避免频繁暂停。结合Burp替换响应将服务器返回的JS文件中的反调试代码删除然后重放请求。8. 常用工具与插件油猴插件Tampermonkey编写脚本动态修改页面代码移除反调试。Burp Suite拦截响应使用“Match and Replace”功能删除反调试代码。Chrome DevTools 内置功能*禁用断点CtrlF8*黑盒脚本在Sources面板右键JS文件选择“Blackbox Script”忽略该文件的断点。*条件断点在行号上右键设置。Puppeteer/Playwright自动化浏览器配合--auto-open-devtools-for-tabs参数调试。9. 总结JS逆向是连接前端分析与后端漏洞挖掘的桥梁。掌握开发者工具的使用特别是六种断点的灵活运用和调用堆栈的分析是解开前端黑盒的关键。从网络请求入手顺藤摸瓜找到加密逻辑再通过断点调试还原算法最终将成果应用到渗透测试中。同时反调试技术是JS逆向中的一道门槛但并非不可逾越。掌握常见的反调试原理及其绕过方法可以帮助你在渗透测试中顺利突破前端限制深入分析加密逻辑。核心目标获取签名算法、提取加密参数从而更有效地进行漏洞挖掘如越权、注入、爆破等。希望本笔记能成为你工具箱中实用的一页。
延伸阅读

更多相关文章

2026/10/9 15:48:16

RAG架构进阶:从基础检索到GraphRAG

RAG架构进阶:从基础检索到GraphRAG检索增强生成(RAG)已成为大语言模型解决知识时效性和领域适配问题的标准方案。但基础RAG(向量检索提示拼接)在面对复杂查询时暴露出明显短板:无法捕捉实体关系、缺乏全局推…

2026/10/9 9:47:09

芯片dft覆盖率

ATPGDC-SCAN覆盖率分类体系DC-Scan 的覆盖率指标ATPG 的覆盖率指标核心关系:DC-Scan 是 ATPG 的前提完整覆盖率计算流程Step 1: DC-Scan 阶段(结构验证):Step 2:ATPG 阶段(TetraMAX)Step 3: 综合覆盖率报告…

2026/10/8 17:14:02

蓝奏云直链解析终极指南:3分钟获取稳定下载地址

蓝奏云直链解析终极指南:3分钟获取稳定下载地址 【免费下载链接】LanzouAPI 蓝奏云直链,蓝奏api,蓝奏解析,蓝奏云解析API,蓝奏云带密码解析 项目地址: https://gitcode.com/gh_mirrors/la/LanzouAPI 还在为蓝奏…

2026/10/9 21:24:11

血管机器人采购与人员技能协同优化模型

简介:本资源为2022年五一数学建模竞赛A题《血管机器人的订购与学习优化》的完整参赛论文及配套代码实现,面向数学建模初学者、竞赛备赛学生与运筹优化方向学习者。资源聚焦医院在血管机器人(含容器艇与操作手)采购、损耗更新、人员…

2026/10/9 21:24:11

基于SVM的Python入侵检测系统实战:从特征工程到增量学习

简介:这份资源是一套基于支持向量机(SVM)的Python网络入侵检测系统源码,面向计算机科学与技术等相关专业的高年级学生,适用于综合课程设计、毕业设计或项目实训等教学场景,帮助学习者在网络安全领域落地机器…

2026/10/9 21:24:11

江苏shp数据实战:图层拆解、坐标系统一与叠加分析

简介:这份资源面向GIS初学者、地理信息研究者及规划从业者,提供江苏省河流、湖泊、县域、高速公路等核心地理要素的Shapefile矢量数据,可直接导入ArcGIS、QGIS等软件进行地图制作与空间分析。压缩包共83个文件,约974KB&#xff0c…

2026/10/9 21:24:11

int极大值不是无穷大:理解整型边界与数值安全

1. 项目概述:当“int的极大值”撞上“无穷大”,程序员的第一反应不是数学,而是内存“int的极大值,无穷大”——这组词最近在技术社区高频出现,表面看像一句矛盾修辞:int是C/C/Java等语言中定义的有符号整数…

2026/10/9 21:24:11

数据库ER图习题:把业务描述翻译成表结构的核心训练

简介:面向数据库初学者的ER图专项练习PDF,以十余道典型习题串联数据库概念模型设计训练,适合期末备考、考研复习或入职前夯实基础的人群。资源为单个PDF文档,大小仅83KB,页面紧凑、便于打印或手机随时翻阅。习题覆盖商…

2026/10/9 21:19:11

Spring AOP动态代理原理与失效场景全解析

1. 为什么每个Java开发者都绕不开AOP这道坎刚入行那会儿,我最怕看项目里的Aspect注解。明明一个简单的下单接口,断点打进去,调用栈里莫名其妙多出七八层,什么CglibAopProxy、ReflectiveMethodInvocation,看得头皮发麻。…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑