前言
本文旨在分享 JavaScript 逆向工程中的断点调试技巧、前端加密算法分析以及实际安全测试案例。内容涵盖基础概念、实战调试流程、常见加密算法(AES、RSA、Sign)的绕过方法,以及企业 SRC 中并发漏洞的挖掘思路。适合希望深入理解前端安全与逆向分析的开发者参考。
如何找到加密算法
通常通过浏览器开发者工具(F12)进行调试控制。重点需要熟悉以下三个功能:
- 作用域(Scope):变量、函数和对象在代码中可访问的范围。
- 调用堆栈(Call Stack):管理函数调用顺序的数据结构,遵循后进先出原则。
- XHR 断点:在发送 AJAX 请求时暂停代码执行,方便调试网络请求逻辑。
作用域详解
作用域决定了标识符的可见性,主要分为三种类型:
-
全局作用域:在所有函数和代码块之外声明的变量,整个程序均可访问。
const globalVar = "我是全局变量"; function test() { console.log(globalVar); } -
函数作用域:在函数内部声明的变量,仅在该函数内部可访问。
function test() { const funcVar = "我是函数内变量"; console.log(funcVar); } // console.log(funcVar); // 报错:未定义 -
块级作用域:由
{}包裹的代码块中用let/const声明的变量,仅在块内可访问。if (true) { const blockVar = "我是块内变量"; console.log(blockVar); } // console.log(blockVar); // 报错:未定义
调用堆栈原理
当函数被调用时,引擎会创建执行上下文并压入栈顶。函数执行完毕后,上下文弹出。栈顶始终是当前正在执行的函数。这有助于追踪函数执行顺序,定位代码路径。
XHR 断点使用场景
- 调试接口请求参数是否正确
- 查看请求发送时机和触发条件
- 分析请求被拦截或修改的逻辑
基础断点调试流程
输入账号密码后观察网络面板,常见的加密内容有 MD5、Base64,但部分系统使用自定义加密。为了截获传输前的加密字段进行分析,我们需要利用 JS 断点调试。


