con un clic
con un clic
在 Node.js 中运行浏览器加密 JS(补环境)。env_core.js 提供函数伪装/原型链/Proxy 引擎,Claude 按诊断报告在 run.js 中按需编写存根。 TRIGGER when: 用户说"补环境"、"提取模块"、"Node里跑"、"webpack模块提取"、"环境模拟"、"把JS搞到Node跑",或找到加密入口后需要脱离浏览器独立运行。 DO NOT TRIGGER when: 只是在浏览器调试、做 AST 解混淆、或写普通 Node.js 代码。
用 Babel AST 还原混淆的 JS 代码(字符串解密、控制流还原、死代码删除)。
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
| name | find-crypto-entry |
| description | 定位 JS 加密参数的生成入口(函数位置+调用链)。 |
定位加密参数 $ARGUMENTS 的生成入口。
目标:找到生成该参数的函数位置(脚本 URL + 行列号 + 函数名 + 调用路径)。
根据信号选择策略,不要按固定顺序执行:
优先静态搜索:用 search_in_sources 搜参数名(带 excludeMinified=false)。大多数情况下直接找到赋值位置,然后读上下文追溯来源。
静态搜不到时用 XHR 断点:break_on_xhr 设在请求 URL 特征上,刷新页面触发。断点命中后从调用栈中找业务代码帧,用 evaluate_on_callframe 检查变量。
两种策略可以组合:先静态搜索定位赋值位置,再在赋值处设断点动态验证。
agent 在逆向分析中容易踩的坑,这些是无法通过推理得出的经验:
headers["x-sign"] = encrypt(data)。静态搜索直接找到。window.h5sign),业务代码调用其方法。静态搜索能找到调用处,但 SDK 内部代码全被混淆。当加密逻辑在 OB 混淆的文件中(特征:_0x 前缀、大型字符串数组、RC4 解密函数),所有字符串都被加密,静态搜索在该文件内无法匹配任何明文。但调用该文件的业务代码通常未混淆,从业务代码侧搜索更高效。
XHR 断点命中在 send() 调用处,调用栈底部通常是框架代码(axios/fetch wrapper)。加密逻辑在栈的中上层。直接跳过底部框架帧,关注业务代码帧。
evaluate_on_callframe 直接检查变量比单步跟踪高效得多。evaluate_on_callframe 指定帧 — evaluate_script 在暂停时会自动 fallback 到顶层帧,但如果需要检查特定调用帧的变量,必须用 evaluate_on_callframe 指定 frameIndex。找到以下信息即为完成:
入口位置:
- 参数:$ARGUMENTS
- 脚本:https://example.com/static/js/main.abc123.js
- 位置:第 X 行,第 Y 列
- 函数:functionName (或 anonymous)
- 调用路径:request → addSign → encrypt
- 加密类型:[标准算法名 | 外部SDK | 未知/需解混淆]
只找入口,不做算法还原。