js逆向流程与技巧 - ☕ 经验茶谈极核论坛 - 知识星球 - 极核GetShell

js逆向流程与技巧

0x1 简介

JS逆向的目标是定位并还原前端加密逻辑,以便在爬虫或安全测试中模拟生成关键参数(如 tokensignnonce 等)。整体流程可分为 入口定位 → 调试分析 → 模拟执行 三步。

0x2 入口定位

  • 抓包分析:在浏览器 F12 → Network 中找到目标接口,请求参数中通常会有加密字段。

  • 全局搜索:在 Sources 面板 Ctrl+Shift+F 搜索参数名(如 “sign”“token”),也可尝试关键词 encryptmd5AESsetPublicKey 等。

  • 调用链追踪:在 Network 中查看 Initiator 调用栈,逐层跳转到生成逻辑。

  • 断点拦截:利用 XHR/fetch Breakpoints、DOM 断点、事件断点,在请求发起前截获加密数据。

  • Hook 注入:通过 Object.defineProperty 或 TamperMonkey 脚本拦截关键属性(如 document.cookie、加密函数),打印调用栈快速定位。

0x3 调试分析

  • 代码格式化:Sources 面板 {} 按钮美化压缩代码,提升可读性。

  • 断点调试:在加密函数入口打断点,利用 Scope 查看变量值,Call Stack 追踪调用路径。

  • 关键变量监控:在 Watch 面板添加待观察的变量(如 dataJson.password)。

  • 反混淆处理: AST 技术:用 @babel/parser 解析代码,traverse 遍历修改节点,generate 还原可读代码。 常见还原:表达式计算(!![] → true)、字符串解码(\x68\x65\x6c\x6c\x6f → hello)、剔除无用代码、反控制流平坦化。

  • 特殊场景: AES/RSA/Sign:搜索 AES、CryptoJS、setPublicKey、HmacSHA256 等关键词,结合断点获取密钥或公钥。 WASM 加密:下载 .wasm 文件,用 pywasm 或 wasmer 调用其导出方法(如 encrypt)。

0x4 模拟执行

  • Python 复写:用 pycryptodome 实现 AES/RSA/HMAC 等算法,按调试逻辑还原加密过程。

  • Node.js 调用:直接运行扣取的 JS 代码,或用 express 封装为本地 API。

  • 浏览器驱动:用 Selenium / Puppeteer 加载本地 HTML + JS,利用真实浏览器环境生成参数。

  • RPC 远程调用:通过 WebSocket 建立本地与浏览器通信,浏览器执行加密函数并返回结果。

例子:AES 固定 Key 解密

// 浏览器调试中扣取的加密逻辑
const CryptoJS = require("crypto-js");
function aesEncrypt(data) {
const key = CryptoJS.enc.Utf8.parse("1234567890abcdef");
const iv = CryptoJS.enc.Utf8.parse("abcdef1234567890");
return CryptoJS.AES.encrypt(data, key, { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString();
}
console.log(aesEncrypt("admin123"));

0x5 文章推荐

新手推荐:https://forum.butian.net/share/3647

手把手js逆向断点调试:https://xz.aliyun.com/news/18630

攻防中前端加密的分析与突破:https://mp.weixin.qq.com/s/UfGnWAmeYZH53fTDPH23dw

请登录后发表评论

    没有回复内容