python爬虫项目
MTG卡片价格爬取
cninfo信息爬取
汽车之家数据爬取
5秒克隆你的声音-Real-Time-Voice-Cloning项目学习
js逆向案例-dy之X-Bogus/signature算法分析【转】
pyinstaller打包exe免杀和逆向浅析
【实用】从一个exe到pyc文件的实操-逆向
B站直播弹幕协议详解
快手API发布作品
Tiktok直播间弹幕获取
spider之字体css解密和RSA解密
requests报错问题
Requests被网站识别咋办?使用curl_cffi,支持原生模拟浏览器TLS/JA3指纹的 Python 库
【实用技巧】使用Byteasy进行手抓
本文档使用 MrDoc 发布
-
+
up
down
首页
js逆向案例-dy之X-Bogus/signature算法分析【转】
# 目录 ## 一、案例分析 ## 二、signature定位与分析 ## 三、X-Bogus定位与分析 ## 四、滑块captchaBody还未研究 ## 一、案例分析 - 案例网址如图,研究的是这个接口,获取用户视频的接口  - 研究的参数是请求参数当中的X-Bogus和_signature,并不是所有接口都需要这两个参数,有的并不校验,有的只有cookie即可了,有的有这两个参数即可了,具体接口具体分析,本文只是研究下这两个参数的生成逻辑思路  ## 二、signature定位与分析 - 采用xhr定位signature,首先清除缓存,然后刷新网页,会定位到如图位置  - 往前堆栈回溯定位,发现signature的生成逻辑是在这个webmssdk.js里面生成的  - webmssdk.js是混淆的,所以我们直接利用v_jstools插件进行一个变量压缩还原,v_jstools的使用,并将初步解混淆的js保存到本地文件并命名为webmssdk.js  - 然后我们用fiddler进行替换,将网页混淆的js替换成我们本地的解混淆的js  - 此时刷新网页,会报错如下Access-Control-Allow-Origin跨域错误  - 解决Access-Control-Allow-Origin跨域错误,可以用fiddler进行如下设置,在Filters下设置Response Headers的跨域问题  - 此时我们再次清楚缓存,刷新网页,会发现混淆的webmssdk.js变量已经清新了许多  - 开始分析signature算法逻辑,首先在js当中插桩打上如下日志断点,主要是看插桩日志分析逻辑,所以混淆与非混淆的影响不是很大,二选一,不过混淆的还是稍稍费点眼睛的,之前没有分析过,没有经验的话,还是选择还原后的js比较好,如图在184行和431行插桩打上日志 ```js # 混淆的js下打的日志: "索引A", _0x1ff777, "索引I", _0x188445, " 值:", JSON.stringify(_0x6f0288, function(key, value) {if (value == window) {return undefined} return value}) # 非混淆的js下打的日志: "索引A", A, "索引I", I, " 值:", JSON.stringify(S, function(key, value) {if (value == window) {return undefined} return value}) ```   - 最终打印出来的日志差不多1w行,然后通过搜索日志去分析组成逻辑  - signature:_02B4Z6wo00001ZvTpJQAAIDAEJg.d0yVePmb06AAAATP14由9部分组成  - 第一组是固定的,拿第二组、第三组举例,每一组都是由长数字35392257845541转换而成,每一个字母都是由String.fromCharCode转换而成的,而图中的长数字是怎么来的,char_to_signature函数又是怎么来的,这个在我的jsvmp纯扣算法里面有讲逻辑思路,所以这里不再重复详细介绍,思路流程算法代码几乎一致,只是传参有所变化,至此signature已分析完   ## 三、X-Bogus定位与分析 - X-Bogus与signature定位方法是一致的,在前面xhr定位包括插桩日志当中我们其实已经发现X-Bogus的生成结果了,这里的分析算法思路依然是用的jsvmp纯扣算法这篇文章的介绍  - X-Bogus的比signature稍难些,难在分析长数字的组成,signature由9部分组成,x-bogus由7部分组成,DFSzswVOx8zANGR8SRc5oPt/pLv8,这个算法主流程和这篇文章的流程是一致的,区别在于md5_str的生成不一样,x-bogus的会更复杂一些  - 如图第1组和第7组,我们又遇到的长数字196397和934988,如图第7组则是长数字经过转换而成,而每个字符串是由固定的字符串取索引而得,至于这里的长数字和num_to_X_Bogus函数是怎么生成的,我们看接下来的分析   - 然后我们拿第一组的长数字196397其实是由`(2<<16)|(255<<8)|45换算而得,而一些奇怪的数字其实是由乱序的字符\u0002ÿ-%.*ÔË^–\fñŽšš¿N\u000eDL转换而得,具体自行领会了`  - 至于生成长数字的乱序的字符串\u0002ÿ-%.*ÔË^–\fñŽšš¿N\u000eDL又是怎么生成的,这里比较难暂不公布了,但是只要掌握了前面的分析思路都是能扣出来的,其中往前分析会遇到md5,而md5算法没有做改动,用var md5 = require("md5")是一致的,但是用CryptoJS.MD5(a).toString()对于Uint8Arrary进行md5加密是不一样的,所以需要注意下,还会涉及一些Uint8Arrary转数组  - num_to_X_Bogus函数如何生成,这里其实也有开源的代码,看这个文章,我就点到为止了,自行根据插桩回溯条件断点等调试领会  ## 四、滑块captchaBody还未研究 - 通过堆栈回溯的方式找到VM的文件,然后插桩打日志分析逻辑,初步猜测和AES-GCM有关,其它后面有空再研究吧  
laihui126
2022年6月21日 09:34
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅道文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅道文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅道文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
下载Markdown文件
分享
链接
类型
密码
更新密码