JS逆向 - 某住会同盾blackbox纯算分析

文章目录

概要

提示:仅供学习,不得用做商业交易,如有侵权请及时联系

逆向 :JS逆向 - 某住会同盾blackbox纯算分析
URL:aHR0cHM6Ly9zaWduaW4uaHdvcmxkLmNvbS9sb2dpbj9yZWRpcmVjdFVybD1odHRwcyUzQSUyRiUyRnd3dy5od29ybGQuY29tJTJG

整体架构流程

提示:分析参数及加密位置

1、全局搜索black_box

最后生成的位置,直接在此处下断点,然后往上跟一个站、

Q0OoO()这个函数就是生成blackbox的位置,我们进去看一下return的情况


所以我们需要找到t(全局搜索)是怎么来的,而v这里你多刷几次会知道是一个固定的值(版本)


2、 这里有一堆参数,都是需要逆向分析的,直接通过断脚本,找到加载的位置


3、初始化加载之后,继续往下跟栈

这里我们看到QQoO0是有一个全局对象,ubid是一个时间戳+随机字符串,继续往下看

4、跟到这里面,就是生成profile.json发包的那些参数了(可以AST代码还原代码,然后替换代码)

  • 首先找到fm.js

  • 可以看到fp文件也是动态的所以,我们也需要替换

5、替换之后我们找到上面分析的那个位置进行断点

6、这里我就不一步步跟着去分析了,直接上插装

javascript 复制代码
fm.js?ver=0.2&t=491895:3835 zhiw数组: 738
fm.js?ver=0.2&t=491895:3835 zhiw数组: 1536
fm.js?ver=0.2&t=491895:3835 zhiw数组: 11110
fm.js?ver=0.2&t=491895:3835 zhiw数组: 864
fm.js?ver=0.2&t=491895:3835 zhiw数组: 295
fm.js?ver=0.2&t=491895:3835 zhiw数组: 824
fm.js?ver=0.2&t=491895:3835 zhiw数组: d3a9f77bed605f4a9e2a782955b65f1a
fm.js?ver=0.2&t=491895:3835 zhiw数组: zh-CN,zh
fm.js?ver=0.2&t=491895:3835 zhiw数组: 1
fm.js?ver=0.2&t=491895:3835 zhiw数组: Google Inc. (Intel)-&-ANGLE (Intel, Intel(R) UHD Graphics (脱敏数据) Direct3D11 脱敏数据, D3D11)
fm.js?ver=0.2&t=491895:3835 zhiw数组: functiongetoffsetHeight(){[nativecode]}
fm.js?ver=0.2&t=491895:3835 zhiw数组: 6ef4a53a32a3086171ad14d663a1e981
fm.js?ver=0.2&t=491895:3835 zhiw数组: -
fm.js?ver=0.2&t=491895:3835 zhiw数组: 2d935b92b11329aa1d14e4a780e02361
fm.js?ver=0.2&t=491895:3835 zhiw数组: 738
2fm.js?ver=0.2&t=491895:3835 zhiw数组: -
fm.js?ver=0.2&t=491895:3835 zhiw数组: 280
fm.js?ver=0.2&t=491895:3835 zhiw数组: 48000_2_1_0_2_explicit_speakers
fm.js?ver=0.2&t=491895:3835 zhiw数组: -
fm.js?ver=0.2&t=491895:3835 zhiw数组: 脱敏数据|b0f2202fc3f0f72f424ca4fc6db815df
fm.js?ver=0.2&t=491895:3835 zhiw数组: [object Window]
fm.js?ver=0.2&t=491895:3835 zhiw数组: functioncreateAnalyser(){[nativecode]}
2fm.js?ver=0.2&t=491895:3835 zhiw数组: -
fm.js?ver=0.2&t=491895:3835 zhiw数组: 139720
fm.js?ver=0.2&t=491895:3835 zhiw数组: -
fm.js?ver=0.2&t=491895:3835 zhiw数组: 824
fm.js?ver=0.2&t=491895:3835 zhiw数组: 8
fm.js?ver=0.2&t=491895:3835 zhiw数组: 1770822894492
fm.js?ver=0.2&t=491895:3835 zhiw数组: 1536
fm.js?ver=0.2&t=491895:3835 zhiw数组: 0
fm.js?ver=0.2&t=491895:3835 zhiw数组: Webkit-Chrome
fm.js?ver=0.2&t=491895:3835 zhiw数组: functiongetParameter(){[nativecode]}
fm.js?ver=0.2&t=491895:3835 zhiw数组: Win32
fm.js?ver=0.2&t=491895:3835 zhiw数组: zh-CN
fm.js?ver=0.2&t=491895:3835 zhiw数组: -
fm.js?ver=0.2&t=491895:3835 zhiw数组: 1536
fm.js?ver=0.2&t=491895:3835 zhiw数组: -
fm.js?ver=0.2&t=491895:3835 zhiw数组: 脱敏数据|01100100011111111011111011011111011111011011110001111111111011111
fm.js?ver=0.2&t=491895:3835 zhiw数组: Netscape
2fm.js?ver=0.2&t=491895:3835 zhiw数组: -
fm.js?ver=0.2&t=491895:3835 zhiw数组: 480
fm.js?ver=0.2&t=491895:3835 zhiw数组: https 脱敏数据
fm.js?ver=0.2&t=491895:3835 zhiw数组: Mozilla/5.0 脱敏数据
fm.js?ver=0.2&t=491895:3835 zhiw数组: 1
fm.js?ver=0.2&t=491895:3835 zhiw数组: Mozilla
fm.js?ver=0.2&t=491895:3835 zhiw数组: u9VVQzDE0zrnrPfu0Drv6ZFNy\0EqfWtLowPO1iAjSMOMtmwAYxguM64fqGMuBhvQFfavEPvDYDxWpbxaNRUupnmMw8wGXUwMi6JX687cNzcx6ivpTJ5HbJwd38cCaZU
fm.js?ver=0.2&t=491895:3835 zhiw数组: 33
fm.js?ver=0.2&t=491895:3835 zhiw数组: functiontoString(){[nativecode]}
fm.js?ver=0.2&t=491895:3835 zhiw数组: 8
fm.js?ver=0.2&t=491895:3835 zhiw数组: functionenumerateDevices(){[nativecode]}
fm.js?ver=0.2&t=491895:3835 zhiw数组: 1
fm.js?ver=0.2&t=491895:3835 zhiw数组: 8
fm.js?ver=0.2&t=491895:3835 zhiw数组: [objectPluginArray]
fm.js?ver=0.2&t=491895:3835 zhiw数组: N1nyPKdX-1770822894576-9619e57598bdf692669836
fm.js?ver=0.2&t=491895:3835 zhiw数组: -
fm.js?ver=0.2&t=491895:3835 zhiw数组: 8
fm.js?ver=0.2&t=491895:3835 zhiw数组: functiontoDataURL(){[nativecode]}
fm.js?ver=0.2&t=491895:3835 zhiw数组: 8
fm.js?ver=0.2&t=491895:3835 zhiw数组: functionRTCPeerConnection(){[nativecode]}

需要注意的是 var OQOQO = new window["Date"]()["getTime"]()["toString"](32);每次拼接指纹都是会变的

技术名词解释

提示:加密a、b、c、d、e、f、g.......

  1. 使用的是魔改的SM4加密,CBC模式
  2. 默认发IV值是:1234567812345678
  3. key是指纹里面的idf.substring(0, 16)
  4. 指纹数组里面的32位字符串,其实是浏览器指纹进行Fingerprint2.x64hash128加密

技术细节

提示:纯算实现结果

小结

提示:学习交流主页,星球持续更新中:(+星球主页+v)

相关推荐
HHHHH1010HHHHH几秒前
Golang怎么用Go实现待办事项API_Golang如何用RESTful风格实现Todo应用后端接口【教程】
jvm·数据库·python
weixin_381288182 分钟前
CSS代码如何快速重构_使用Sass的@import逻辑重组结构
jvm·数据库·python
m0_716430074 分钟前
Go语言怎么做自动补全_Go语言CLI自动补全教程【经典】
jvm·数据库·python
金融大 k4 分钟前
Python + Redis 实时行情共享:WebSocket 数据流的订阅管理与断线恢复实践
redis·python·websocket
初心未改HD4 分钟前
Python零基础到精通教程,数据分析(数据处理,挖掘价值)
开发语言·python
m0_674294646 分钟前
MongoDB评论回复系统怎么建表_多级嵌套与展平设计思路
jvm·数据库·python
源码之家7 分钟前
计算机毕业设计:Python农业数据分析与粮食产量预测系统 Django框架 数据分析 可视化 机器学习 深度学习 大数据 大模型(建议收藏)✅
python·机器学习·信息可视化·数据分析·django·flask·课程设计
m0_493934537 分钟前
React 中父组件向子组件传递函数的正确方式
jvm·数据库·python
石榴树下的七彩鱼7 分钟前
电商订单 OCR 识别实战:如何自动提取订单信息并实现发货自动化(附 Python / Java 示例)
人工智能·python·自动化·ocr·电商·电商自动化·api 接入
qq_334563557 分钟前
HTML怎么创建项目时间线视图_HTML甘特图静态占位结构【指南】
jvm·数据库·python