吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5244|回复: 39
上一主题 下一主题
收起左侧

[Web逆向] [原创] 崔大Scrape十四题, 入门级wasm加密分析

  [复制链接]
跳转到指定楼层
楼主
ZenoMiao 发表于 2025-7-10 23:36 回帖奖励
本帖最后由 ZenoMiao 于 2025-7-10 23:39 编辑

本次分析的地址为: aHR0cHM6Ly9zcGExNC5zY3JhcGUuY2VudGVyLw==

本题如图所示: 为wasm加密, ajax接口且有时间限制(应该涉及到时间戳)


开搞!

F12抓包发现sign值应该就是目标值


通过XHR断点后跟栈轻松可以找到sign加密的位置, 已知是wasm加密所以就不管他了, 先把wasm文件拿下来


下载下来之后再通过@逍遥一仙 发的一个软件一键转.o文件用ida进行分析
软件连接: https://www.52pojie.cn/forum.php?mod=viewthread&tid=1438499

打开ida, 点击Go(work on your own) -> File -> Open ->选择刚转下来的wasm.o文件 -> OK


通过ida左边的Functions window和js的调用找到加密函数(双击)


然后按F5还原伪C代码, 第一个参数为全局结构体, 注意第二第三个形参和return
第二个形参则是js传进去的n值, 第三个形参则是十三位时间戳除1000后向上取整的值


return上面并没有用到变量a3和a2所以函数体内的代码直接忽略了, 直接看return
[C] 纯文本查看 复制代码
return a3 / 3 + a2 + 16358;


翻译成中文return的值就是: 十三位时间戳除1000后向上取整 / 3 + n + 16358

ida分析完毕后我们再分析一下在浏览器中wasm源代码
通过之前打的加密e值的断点单步进去可以看到wasm代码


可以看到他这里有两个参数, 均是int32的类型 变量名为$var0和$var1

[C] 纯文本查看 复制代码
(func $encrypt (;4;) (export "encrypt") (param $var0 i32) (param $var1 i32) (result i32)
    local.get $var0
    local.get $var1
    i32.const 3
    i32.div_s
    i32.add
    i32.const 16358
    i32.add
  )



通过local.get $var0 把第一个形参的值压入堆栈0
通过local.get $var1 把第一个形参的值压入堆栈1
通过i32.const 3 新建一个类型为int32常量为3的值压入堆栈2
i32.div_s为把堆栈按顺序拿出来"计算有符号除法", 先把堆栈2的值"3"拿出来作为除数, 再把$var1的值拿出来作为被除数进行计算.
注意: 堆栈因为前面计算拿出来了两个值, 所以目前堆栈只有一个变量为$var0, 然后前面因为计算后的值需要保存, 所以也被压入栈内, 所以目前栈内有2个值 $var0和除法计算后的值

然后i32.add 是把栈内2个栈拿出来进行相加, 也就是把$var0 和除法计算后的值进行相加, 也就是(时间戳 / 3) + n, 把结果再压入栈内.(目前栈内只有这个相加后的值)
再通过i32.const新建一个类型为int32的局部变量为16358的常量, 再压入栈内 (目前栈内有2个)
再通过i32.add把栈顶的两个值拿出来进行相加. 执行完最后一段代码后result 一个int32类型的值

如下图所示


搞完撸py代码
[Python] 纯文本查看 复制代码

import math
import time
# i是页码
n = (i - 1) * 10
sign = math.ceil(time.time() / 3) + n + 16358




以上是所谓的"核心代码"(其实就只有2行有用), 其他的代码自己撸吧, 提高动手能力



打完收工

免费评分

参与人数 17威望 +2 吾爱币 +116 热心值 +13 收起 理由
lengyan5i + 1 + 1 谢谢@Thanks!
小明无敌 + 3 + 1 热心回复!
kindseasky + 1 + 1 用心讨论,共获提升!
BinYoooo + 1 + 1 谢谢@Thanks!
xlt12580 + 1 + 1 热心回复!
LightIO + 1 Shiro,逻辑清晰,展示直观。
fiscivaj + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
mangosteen1022 + 1 我很赞同!
fengbolee + 2 + 1 用心讨论,共获提升!
涛之雨 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gpchhao + 1 + 1 用心讨论,共获提升!
yunji + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lalicorne + 1 我很赞同!
9324 + 1 我很赞同!
klop + 1 先打卡,后消化
piginwind + 1 + 1 我很赞同!
风子09 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
datoneids 发表于 2025-11-14 10:47
"通过XHR断点后跟栈轻松可以找到sign加密的位置, 已知是wasm加密所以就不管他了, 先把wasm文件拿下来"
到这一步就理解不了了,可能截图需要全屏一点才好利于小白学习。
沙发
风子09 发表于 2025-7-11 06:57
3#
 楼主| ZenoMiao 发表于 2025-7-11 08:14 |楼主
风子09 发表于 2025-7-11 06:57
已经收藏,不知道需多少天才能消化

主要是他操作堆栈的理解, 代码内容并不难
4#
datoneids 发表于 2025-7-11 11:08
完全看不懂,不懂就请教:这是在干嘛?
5#
NoSugarLatte 发表于 2025-7-11 14:03

收藏在说
6#
zhangmingyu 发表于 2025-7-11 14:13
感谢分享
7#
goodrain 发表于 2025-7-11 15:01
感谢分享
8#
Shenwei520 发表于 2025-7-11 15:36
大佬对堆栈的理解出神入化了
9#
Hernnin 发表于 2025-7-11 15:58
感谢感谢。学习到了!
10#
lvdousha123123 发表于 2025-7-11 17:25
感谢分享  学习了666
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-17 15:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表