当前位置: 首页 > news >正文

h5st逆向分析

h5st最新5.1版本逆向分析

    • 申明
    • 定位h5st生成的位置
    • 动态插桩,事半功倍
    • 日志分析,十分钟还原算法逻辑

申明

本文仅用来记录学习过程以免日后忘了,如有侵权请联系删除。

定位h5st生成的位置

通过关键字“sign”搜索,可以定位到window.PSign.sign(f)这个位置,f参数的值为{ "appid": "pc-item-soa", "functionId": "pc_detailpage_wareBusiness", "client": "pc", "clientVersion": "1.0.0", "t": 1749631063675, "body": "bbc844*****c5c9cae4356" },这里的body是把请求params里面的body经过标准的sha256加密得到的
在这里插入图片描述
打上断点动态调试一下,会定位到 c = new window.ParamsSignMain和 c.sign® ,
在这里插入图片描述
单步跟进c.sign®,会定位到 this._KaTeX parse error: Expected group after '_' at position 7: sdnmd(_̲CW),通过观看入参和返回值,可以确定这里就是真正调用h5st加密方法的位置。
在这里插入图片描述

动态插桩,事半功倍

this._KaTeX parse error: Expected group after '_' at position 7: sdnmd(_̲CW)方法这里打上日志断点,"h5st:",_$Cz['h5st']
在这里插入图片描述
接着搜索MD5,找到md5算法的_doFinalize方法并插入日志断点"md5加密结果:", _$CN.toString()
在这里插入图片描述
搜索Base64,找到base64的encode方法,这里是一个循环,直接找到循环return的位置打上日志断点"base64加密结果:",p[0]

在这里插入图片描述
如法炮制,找到sha256的_doFinalize方法,打上日志断点"sha256 加密结果:", this._hash.toString()
在这里插入图片描述
接下来搜索关键字“_createHelper”,这几个加密方法都会通过_createHelper方法进行调用,插入日志断点"加密参数:",_$CV
在这里插入图片描述
最后找到下图所示方法,这是h5st开头那个日期生成的地方,插入日志断点"传入时间戳:",_$CW,"返回时间:",_$Cv
在这里插入图片描述
打好以上日志断点后,就可以通过日志分析还原出h5st算法

日志分析,十分钟还原算法逻辑

执行一次代码,观察一下日志,日志信息非常简洁,逻辑也非常清晰,
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/bddfdc9c883542649c23c930d18f027d.png

body = params['body']
sha256_hash = hashlib.sha256()
# 更新数据(需要传入字节流)
sha256_hash.update(body.encode('utf-8')
http://www.xdnf.cn/news/984439.html

相关文章:

  • 十六、【ESP32开发全栈指南:I2C接口详解及BH1750传感器实战】
  • 11.TCP三次握手
  • 频域分析和注意力机制
  • STM32H723的SPI配置及简单使用!
  • 【轨物交流】云南科情院赴杭“取经”数字赋能 调研轨物科技探路创新驱动
  • Pip Manager本地Python包管理器
  • 蓝凌的低门槛、可扩展的可视化公式引擎
  • 路径=算法=操作:复杂系统行为的统一数学框架
  • vue防止按钮重复点击方案
  • 随记 minio的图片跨域问题
  • Spring | JDK 动态代理与 CGLIB 代理:原理、区别与实战对比
  • Docker部署minio
  • AIStor 的模型上下文协议 (MCP) 服务器:管理功能
  • 什么是 Solana 上的 MEV?一键狙击是如何保护你的代币启动的?
  • ANeko v1.0.3 | 在手机里养只宠物猫 实时互动 动画细腻
  • 递归,回溯,DFS,Floodfill,记忆化搜索
  • 三.Gitee远程操作标签操作
  • Java使用Selenium反爬虫优化方案
  • 力反馈手套:工业虚拟现实培训领域的革新者
  • [蓝桥杯 2024 国 Python B] 设计
  • Spring Security如何拿到登录用户的信息
  • 安卓9.0系统修改定制化____系列讲解导读篇
  • 【C/C++】怎样设计一个合理的函数
  • 咖啡豆缺陷检测:用YOLOv8+TensorFlow实现工业级质检系统
  • 临时抱佛脚v2
  • 费用流学习笔记
  • C++内存池:减少动态分配开销的高效解决方案
  • R语言缓释制剂QBD解决方案之二
  • 如何使用vue2设计提示框组件
  • 解决华为云服务器无法ping通github问题