您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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);
};
})();
分析某电商平台商品列表接口的加密参数_signature
生成逻辑
- 发现关键POST请求携带
_signature
参数
- 常规搜索无果,参数为动态生成
/api/goods/list
的URL断点触发断点后查看Call Stack:
► encryptParams (vendor.js:125)
► buildRequest (main.js:87)
► sendData (utils.js:203)
► XMLHttpRequest.send (native)
在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);
}
在Console快速验证:
generateSign({page:1, size:20})
// 输出:a3f5e8c91b2d47d6b0e1f4c2
console.debug
或Date.now()
差值检测// 反调试代码示例
setInterval(() => {
if(performance.now() > 100){
window.location.reload();
}
}, 500);
Fiddler
等工具代理请求,或通过override
脚本禁用检测遇到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字,可扩展案例细节)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。