Fiddler+编程猫插件实战:5分钟搞定JS Hook,轻松定位网站加密参数生成位置

📅 2026/7/3 10:47:14 👁️ 阅读次数 📝 编程学习
Fiddler+编程猫插件实战:5分钟搞定JS Hook,轻松定位网站加密参数生成位置

Fiddler与编程猫插件:5分钟极速定位网站加密参数的JS Hook实战指南

当你在逆向分析一个网站时,是否经常遇到这样的困境:明明看到了加密参数在请求中传递,却怎么也找不到它们是在哪里生成的?传统的调试方法往往需要逐行阅读压缩后的JavaScript代码,效率低下且容易迷失方向。本文将介绍一种结合Fiddler和编程猫插件的快速定位技术,让你在5分钟内精准锁定关键参数的生成位置。

1. 逆向分析的核心痛点与解决方案

逆向分析网站时,加密参数(如buvid3、token等)的生成逻辑往往是最大的障碍。这些参数通常由复杂的JavaScript代码生成,经过混淆和压缩后几乎无法直接阅读。传统调试方法需要:

  • 手动设置断点,但难以确定何时何地设置
  • 逐行跟踪执行流程,效率极低
  • 面对压缩代码时几乎无从下手

JS Hook技术改变了这一局面。它的核心思想是:在关键位置插入我们的调试代码,当目标参数出现时自动触发断点。这种方法有三大优势:

  1. 精准定位:只在目标参数出现时中断执行
  2. 无需源码:直接在运行时拦截
  3. 效率极高:省去大量手动调试时间

提示:JS Hook不是修改网站功能,而是在运行时插入调试代码,不会影响网站正常运行

2. 环境准备与工具配置

2.1 所需工具清单

工具名称版本要求作用说明
Fiddler≥4.6.3网络抓包与脚本注入
编程猫插件最新版提供JS Hook执行环境
Chrome浏览器无要求目标网站调试

2.2 安装与配置步骤

  1. 安装Fiddler

    • 从官网下载最新版Fiddler
    • 安装时选择完整组件
  2. 配置编程猫插件

    # 将插件文件复制到Fiddler脚本目录 cp -r programmingcat_plugin/* "C:\Program Files (x86)\Fiddler2\Scripts\"
  3. 首次运行注意事项

    • 必须以管理员身份启动Fiddler
    • 首次使用时需要信任Fiddler根证书
    • 确保浏览器代理设置为Fiddler监听端口(默认8888)

3. JS Hook实战:定位buvid3生成位置

让我们以一个实际案例演示如何快速定位buvid3参数的生成位置。

3.1 编写Hook脚本

(function() { 'use strict'; var cookieTemp = ''; Object.defineProperty(document, 'cookie', { set: function(val) { if (val.indexOf('buvid3') != -1) { debugger; // 关键断点 } console.log('Hook捕获到cookie设置->', val); cookieTemp = val; return val; }, get: function() { return cookieTemp; } }); })();

这段代码的核心逻辑是:

  • 监控document.cookie的设置操作
  • 当设置值包含"buvid3"时触发debugger
  • 保留原始cookie功能不受影响

3.2 执行流程

  1. 将上述代码粘贴到编程猫插件窗口
  2. 勾选"启用脚本"选项
  3. 清除浏览器cookie缓存
  4. 刷新目标网站页面

当页面执行到设置buvid3 cookie的位置时,会自动触发断点。此时在Chrome开发者工具的Call Stack面板中,你可以看到完整的调用链。

3.3 调用栈分析技巧

在断点触发后,调用栈通常会显示类似这样的结构:

(anonymous) @ VM123:4 set @ hook.js:6 someEncryptFunction @ main.min.js:12 initUser @ user.js:45 ...

分析技巧:

  • 忽略最顶部的VM和hook相关调用
  • 寻找第一个明显与业务相关的函数名
  • 逐步向上跟踪,直到找到参数生成源头

4. 进阶Hook技巧与应用场景

4.1 多种Hook方式对比

Hook方式适用场景示例
属性覆盖简单函数替换window.oldFunc = window.newFunc
defineProperty精细控制属性上述cookie示例
Proxy复杂对象监控监控整个XMLHttpRequest

4.2 Header参数Hook示例

对于Header中的token参数,可以使用以下Hook代码:

(function() { var originalSetHeader = window.XMLHttpRequest.prototype.setRequestHeader; window.XMLHttpRequest.prototype.setRequestHeader = function(key, value) { if (key.toLowerCase() === 'token') { debugger; } return originalSetHeader.apply(this, arguments); }; })();

4.3 常见问题排查

  1. 断点未触发

    • 检查Hook代码是否正确加载
    • 确认目标参数名称拼写正确
    • 尝试在更早的时机注入脚本
  2. 调用栈信息不全

    • 关闭代码压缩优化
    • 尝试在网站初始化阶段Hook
  3. 性能影响

    • 避免在频繁调用的函数上Hook
    • 添加精确的条件判断减少干扰

5. 安全与效率的最佳实践

在实际逆向工程中,保持高效且不违反法律边界至关重要。以下是一些实用建议:

  • 精确Hook:尽量缩小Hook范围,只监控关键参数
  • 临时使用:完成调试后及时关闭Hook脚本
  • 代码注释:为Hook脚本添加详细注释,方便后续维护
  • 合法合规:仅用于授权测试,不用于非法用途

在一次电商网站分析中,我使用Hook技术成功定位到了sign参数的生成位置。最初手动调试花费了3小时毫无进展,而采用Hook方法后,从开始到定位只用了4分钟。关键在于准确识别参数特征并设置合适的触发条件。