js逆向

js逆向

补环境

将从网站中提取的 JS 加密代码放到 Node.js 中独立运行时,由于缺少浏览器原生对象,通常会报错。补环境就是在 Node.js 中模拟出浏览器的运行环境,让代码能够正常执行。 使用 Proxy 拦截对任意属性的访问,自动打印缺失的环境属性,用于快速定位需要补的内容。 运行后控制台会输出所有访问了但不存在的属性,按需补充即可。 部分网站使用 Canvas 绘图结果作为设备指纹。 对于依赖完整 DOM 环境的代码,使用 jsdom 库更省力。适合页面脚本需要 document、navigator、Cookie 等完整 BOM/DOM 环境的场景。 先用

By yellowdog

js逆向

签名算法还原

最后更新:2026-03-29 Web/App 接口通常对请求参数做签名(sign),防止参数篡改和重放攻击。常见形式: 逆向目标:找到 sign 的计算逻辑,使用 Python 自行构造相同的 sign。 在 Chrome DevTools 的 Sources 面板,Ctrl+Shift+F 全局搜索: 在 Sources → XHR/fetch Breakpoints 添加请求 URL 关键词,发起请求时自动断到 XHR 发送处,从调用栈往上追溯到 sign 赋值。 对于 App 的 Native 签名,用 Frida 直接 Hook 签名方法: 最

By yellowdog

js逆向

混淆还原

目前最常见的商业混淆方案。 特征识别: 1. 文件顶部有一个超大数组(几十至几百个 Base64 字符串) 2. 紧随其后有一个数组位移函数(自执行,通过对数组进行旋转还原顺序) 3. 所有字符串通过 _0xXXXX(index) 形式的函数取值 还原方法: 还原方法:将 eval 替换为 console.log,直接打印出解密后的代码。 JJEncode 将代码转换为全由 $ 和 + 等符号组成的字符串;AAEncode 转换为表情符号。 还原:直接在 Console 中粘贴执行,或使用在线工具解码。 仅使用 , !, (, ), + 6 个字符编写任

By yellowdog

js逆向

反反爬技术汇总

最后更新:2026-03-31 标准 requests/httpx 的 TLS Client Hello 与浏览器不同,部分服务(如 Cloudflare)会识别。 先识别反爬类型再选方案:IP 频率限制 → 代理池;设备指纹检测 → 浏览器模拟;签名验证 → JS 逆向;验证码 → 打码平台或 AI 识别;行为分析 → 无头浏览器 + 鼠标轨迹模拟。混合使用多种策略事半功倍。 代理 IP 质量决定成功率:数据中心 IP 被大量标记,住宅代理(Residential Proxy)最接近真实用户;移动代理(Mobile Proxy)绕过能力最强但最贵。按目

By yellowdog

js逆向

加密算法识别

快速判断目标加密算法,是逆向流程的第一步。 搜索以下关键字: MD5 的 JavaScript 特征:在函数内部有大量位运算(>>>, <<, |, ^),以及十六进制常量(如 0x67452301、0xefcdab89)。 判断模式: RSA 加密同一份数据每次结果不同(PKCS1 v1.5 填充随机),可以此区分 AES。 没有明显库特征,通常表现为: 部分网站使用自定义 Base64 字母表(字母表顺序被打乱),密文看起来是 Base64 但标准解码失败。 识别方法:在代码中搜索长度为 64 的字符串常量,即为自定义字母表。 先看输出长度和字符集,

By yellowdog

js逆向

JS 逆向中的 WebAssembly(WASM)特征识别与逆向

逆向遇到 WebAssembly(WASM)时,第一选择是把 .wasm 当成一个编译好的 .so/.dll,在 Node 里加载并黑盒调用它的导出函数,而不是逐行把字节码翻译回 JS。WASM 是一种独立的二进制字节码格式(Binary Bytecode Format),由 C/C++/Rust 等语言编译而来,浏览器原生执行,加载快、体积小,也因此成了把签名、加密、风控逻辑藏起来的常见手段——抖音 a_bogus/bdms 这类把算法塞进 WASM 甚至字节码虚拟机(Bytecode VM)的方案,目的就是对抗"扣代码"。 什么时候该黑盒调用而非硬扣

By yellowdog

js逆向

unidbg 基础

最后更新:2026-03-31 相关文档:Frida基础(/frida-ji-chu-zhi-nan/) 签名算法还原(/qian-ming-suan-fa-huan-yuan/) 反反爬技术汇总(/fan-fan-pa-ji-zhu-hui-zong/) unidbg 是一个基于 Unicorn 引擎的 Android Native 模拟执行框架,可以在 JVM 上模拟运行 ARM/ARM64 的 .so 动态库,无需真机或模拟器,直接调用 native 函数。 so 中调用 Java 层方法(JNI 回调)时,需要手动实现。 APK 的 lib/ 目

By yellowdog

js逆向

mitmproxy 完全指南

最后更新:2026-03-31 相关文档:js逆向调试技巧(/js-ni-xiang-diao-shi-ji-qiao/) Frida基础(/frida-ji-chu-zhi-nan/) 反反爬技术汇总(/fan-fan-pa-ji-zhu-hui-zong/) mitmproxy 是一个开源的中间人代理工具,支持拦截、修改、重放 HTTP/HTTPS 流量。 mitmproxy 通过 Python 插件实现自动化处理。 只处理目标域名,减少无关噪声: 未安装证书时,HTTPS 请求会显示为 << Killed 或 SSL Error,需在目标设备安装并

By yellowdog

js逆向

JS 逆向调试技巧

浏览器页面的执行流程决定了逆向的切入点: 核心目标是在「加密函数调用」这一环节断下,分析参数的生成逻辑。 在 Sources 面板中直接点击行号,最基础的断点方式。适合已知目标代码位置时使用。 右键行号 → Add conditional breakpoint,输入 JS 表达式,仅在条件为真时暂停。 在 Sources → XHR/fetch Breakpoints 中添加 URL 关键字(如 api、login),发起请求时自动在 send() 处断下。断下后查看 Call Stack 向上追溯加密逻辑。 操作步骤: 1. 打开 DevTools →

By yellowdog

js逆向

Webpack 逆向还原

Webpack 打包产物的核心结构是一个立即执行函数(IIFE),将所有模块以对象或数组的形式传入: 快速识别关键词: Webpack 5 典型特征: 入口模块是 Webpack 启动时最先执行的模块,通常通过以下方式找到: 定位步骤: 1. 全局搜索 __webpack_require__.s 找到入口 ID 赋值处 2. 在 bundle 末尾找到 IIFE 的最后一行调用 3. 若有多个 chunk,在 runtime chunk 中查找 在浏览器控制台或断点处,将所有模块导出到全局变量: 全量 dump 脚本(在合适断点处注入): 1. 在 De

By yellowdog

js逆向

RPC 远程调用

RPC(Remote Procedure Call)方案不需要将加密代码扣出来补环境,而是让加密代码继续跑在浏览器原始环境中,通过 WebSocket 通道暴露给外部调用。 适合:加密逻辑极其复杂、补环境成本过高、或对运行速度要求不高的场景。 Sekiro(https://github.com/virjar/sekiro) 是专为 RPC 场景设计的框架,支持 Java/Node.js 服务端,提供完整的路由和多客户端管理。 浏览器端注入(使用 Sekiro JS SDK): Python 调用: Python 服务端用 asyncio + websoc

By yellowdog