词元视界 · 逆向系列 · 第 10 期
2026-06-17

你做到了反混淆(第 08 期)、学会了算法识别(第 09 期)。现在你盯着一堆还原后的加密代码,知道它是 AES,参数也标出来了——
但你仍然不知道:用户在输入框里打了什么?加密前的明文是什么?密钥怎么拼的?
答案:Hook。而这个 Hook 脚本,Claude Code 可以帮你写完。
一、Hook 是什么?为什么逆向必学?
Hook(钩子),本质上就是在一个函数被调用之前或之后,插入你自己的代码。
Hook 的核心原理只有一句话:保存原始函数,然后用自己的版本替换它。
二、搭建测试环境:一个真实的后台登录页
为了演示,我们先创建一个模拟的"企业后台登录页"。它包含完整的客户端加密流程——密码在提交前被 SHA256+XOR+Base64 处理:

核心加密函数如下——这就是你今天要 Hook 的目标:
// 核心加密函数 —— Hook 目标 function encryptData(plaintext, secretKey) { var timestamp = Date.now().toString(); var combined = plaintext + '|' + timestamp; var hashed = sha256(combined); var encrypted = xorEncode(hashed, secretKey); return { timestamp: timestamp, signature: encrypted, algorithm: 'HMAC-SHA256-XOR' }; } |
它的调用链是:用户在表单输入 → encryptData() → SHA256 → XOR → Base64 → 发往服务器。
你的任务:在 encryptData() 被调用时,拦截它的输入(明文和密钥)和输出(签名结果),实时打印出来。
三、手动写 Hook?太累了,让 AI 来
传统流程:
1. 在 Sources 面板找到 encryptData()2. 手动重写 window.encryptData = function() {...}3. 保存原始引用 _origin = window.encryptData4. 写 console.log 打印参数5. 处理返回值6. 处理异常7. 美化输出格式如果你有 10 个加密函数要 Hook?写 10 次。换个网站?重写。 |
现在用 Claude Code。在终端里打开项目目录,跟它说:
分析 index.html 里的 encryptData 函数, 写一个 Hook 脚本 hook.js,要求: 1. 在函数调用时拦截输入参数和返回值 2. 用 console.group 分组美化输出 3. 同时在页面上显示拦截结果 4. 保留原始函数引用,不破坏功能 |
Claude Code 用 大约 5 秒 就生成了一份完整的 Hook 脚本。


它的思路:
1. 先用 var _origin = window.encryptData 保存原始函数2. 用 window.encryptData = function(...) 替换为新版本3. 在新函数里先console.log原始参数4. 再调用原始版本拿到结果 console.log结果5. 同时在页面上插入一个 div 显示记录6. 最后 return 原始结果保证业务不中断 |
💡 核心要点:Hook 后不能截断原始函数的返回值——你的业务要照常运行,Hook 只是"旁路监听"。 |
四、生成的 Hook 脚本长什么样?
以下是 Claude Code 生成的 Hook 脚本核心逻辑——这就是你粘贴到 Console 里直接用的东西:
(function() { // 1. 保存原始引用 var _origin = window.encryptData; // 2. 替换为 Hook 版本 window.encryptData = function(plaintext, key) { console.group('Hook 拦截'); console.log('明文:', plaintext); console.log('密钥:', key); // 3. 调用原始函数 var result = _origin.apply(this, arguments); console.log('签名:', result.signature); console.groupEnd(); // 4. 返回原始结果(不中断业务) return result; }; })(); |
一行一行拆解:
💡 Hook 的三个铁律:① 永远保存原始引用(_origin)② 用 apply() 而不是直接调,保留 this 和 arguments③ return 原始结果,不要截断——你的目的是"监听",不是"拦截" |
五、实战效果
把 AI 生成的 hook.js 粘贴到浏览器 Console 里,然后正常登录。你看:

✅ Console 输出:[明文] EMP-2024-001:mypassword123[密钥] k3y_!@#2024_sec[签名] f8a3b2...(加密结果)[算法] HMAC-SHA256-XOR |
加密前后的所有信息——明文、密钥、算法、签名——全部实时暴露。你在 Console 里就能看到完整的加密数据流。
六、Hook 的应用三阶跳
七、避坑指南
🕳️ 坑 1:undefined 错误 有些加密函数在 IIFE 闭包里,window 上没有引用,直接 Hook 会 undefined。✅ 让 AI 分析变量的作用域,改用闭包内注入或重写外层的返回值。 |
🕳️ 坑 2:Hook 的太早或太晚 页面还没加载完就去 Hook → 函数还不存在。✅ 让 AI 生成等待脚本(setInterval 检查函数是否加载完再 Hook)。 |
🕳️ 坑 3:this 上下文出错 直接在 Hook 里写 _origin(plaintext, key) 而不是 _origin.apply(this, arguments),导致 this 指向 window 而非原始调用者。✅ 严格要求 AI 在生成的脚本中使用 .apply(this, arguments)。 |
八、Hook 和前面几期怎么配合?
三期合在一起就是完整的逆向流水线:反混淆 → 识算法 → 下Hook → 拿数据。
下期预告:网络请求 Hook —— 拦截 fetch/XHR
今天我们 Hook 了单个函数。下期更进一步:Hook 整个网络层。无论网站用 fetch 还是 XMLHttpRequest,所有请求和响应全部拦截。
🔔 下期:网络层 Hook —— 拦截所有请求,实时抓取通信数据 |
📦 配套代码获取 本文中的 index.html(测试页面)和 hook.js(AI 生成的完整 Hook 脚本),关注「词元视界AI」后回复「Hook」即可下载。 |
「加密只是障眼法,Hook 之后全是明文」 —— 词元视界AI 出品 |
📢 转发给做逆向的朋友 点个「在看」让更多做逆向的朋友看到转发到朋友圈或逆向技术群关注「词元视界AI」,每周一篇 AI 实战 |
关注 词元视界AI 复杂 AI,讲给你听 |
夜雨聆风