JS逆向的小技巧以及XHR断点的案例分析

发布时间:2021-12-13 18:04:45 作者:柒染
来源:亿速云 阅读:328
# JS逆向的小技巧以及XHR断点的案例分析

## 前言

在Web安全研究和爬虫开发中,JavaScript逆向工程是突破前端加密的关键技术。本文将分享实用的JS逆向技巧,并通过XHR断点调试的实战案例,演示如何快速定位关键请求参数。

---

## 一、JS逆向核心思路

### 1. 代码定位四步法
- **搜索关键字**:在开发者工具中全局搜索`encrypt`、`sign`、`token`等关键词
- **调用栈分析**:通过异常断点回溯加密函数调用链
- **Hook拦截**:使用`Proxy`或`Object.defineProperty`劫持关键函数
- **AST还原**:对混淆代码进行语法树解析与重构

### 2. 常用调试技巧
```javascript
// 方法1:控制台重写函数
var _original = window.crypto.encrypt;
window.crypto.encrypt = function(params){
    console.log("Input:", params);
    let result = _original(params);
    console.log("Output:", result);
    return result;
}

// 方法2:XHR/Fetch拦截
(function() {
    var open = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function() {
        console.log('XHR:', arguments);
        return open.apply(this, arguments);
    };
})();

二、XHR断点实战案例

案例背景

分析某电商平台商品列表接口的加密参数_signature生成逻辑

调试过程

1. 网络请求观察

JS逆向的小技巧以及XHR断点的案例分析 - 发现关键POST请求携带_signature参数 - 常规搜索无果,参数为动态生成

2. 添加XHR断点

  1. Chrome开发者工具 → Sources → XHR Breakpoints
  2. 添加包含/api/goods/list的URL断点

3. 调用栈分析

触发断点后查看Call Stack:

► encryptParams (vendor.js:125)
► buildRequest (main.js:87)
► sendData (utils.js:203)
► XMLHttpRequest.send (native)

4. 关键代码定位

vendor.js中找到核心加密逻辑:

function generateSign(params) {
    let secret = "k5j8$B#d";
    let str = Object.keys(params)
                   .sort()
                   .map(k => `${k}=${params[k]}`)
                   .join("&");
    return md5(str + secret);
}

5. 参数验证

在Console快速验证:

generateSign({page:1, size:20}) 
// 输出:a3f5e8c91b2d47d6b0e1f4c2

三、进阶技巧

1. 反调试对抗

// 反调试代码示例
setInterval(() => {
    if(performance.now() > 100){
        window.location.reload();
    }
}, 500);

2. WebAssembly解析

遇到wasm加密时: 1. 使用wasm2js工具转换 2. 分析导出函数的调用关系 3. Hook内存读写操作


四、工具推荐

工具名称 用途 链接
Chrome DevTools 动态调试 内置
Fiddler 流量抓包 telerik.com
AST Explorer 代码反混淆 astexplorer.net
WasmAnalyzer WASM逆向 github.com

结语

JS逆向需要耐心与技巧的结合,XHR断点能快速定位网络请求的加密入口。建议在实际操作中: 1. 先整体观察再局部深入 2. 保持加密参数的上下文记录 3. 编写自动化验证脚本提高效率

声明:本文技术仅限合法授权场景使用,请遵守相关法律法规。 “`

注:实际使用时需要: 1. 替换示例图片链接 2. 根据具体案例修改代码片段 3. 补充参考文献和工具的最新链接 4. 调整字数(当前约850字,可扩展案例细节)

推荐阅读:
  1. Android逆向技巧
  2. js回调的案例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js xhr

上一篇:Kerberos环境下Java应用程序认证超时异常是怎么回事

下一篇:jsp+servleta怎样实现的医药药品管理系统2.0版

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》