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

图灵逆向——题十一-wasm小试牛刀

典型的wasm加密逻辑,适合新手入门的JS逆向案例~

过程分析

打开控制台,直接看请求,发现头里面没有,载荷里面有一个m,那这个m参数就是我们要逆向的值了,下面的_ts是个十位!!的时间戳。。(不是13位的,看仔细~)
在这里插入图片描述

还是跟踪启动器,找到最后的位置,打上断点跟栈分析~
在这里插入图片描述
跟到loadPage这里的时候发现m参数就是在这里生成的了。。。
在这里插入图片描述
所以在生成的地方打上断点,开始分析逻辑~
上面内个e 就是生成了一个十位的时间戳,主要还是下面的这个f参数。
在这里插入图片描述
继续往下跟就会发现加密的具体位置了

在这里插入图片描述
所以这个window['exports']['encrypt']就是核心加密方法了,进去看一下,你会发现它是依托。。。
在这里插入图片描述
这里可以看到,这是一个用 WebAssembly Text Format (WAT) 编写的模块,WAT 是 WebAssembly(Wasm)的一种人类可读的表示形式。这一段代码大致可以分为几个部分,主要实现了栈的管理以及一个名为 encrypt的函数。
所以核心的加密逻辑就是这个encrypt函数咯。。。

(func $encrypt (export "encrypt") 
  (param $var0 i32)   ;; 第一个参数:整数类型,记作 var0
  (param $var1 i32)   ;; 第二个参数:整数类型,记作 var1
  (result i32)        ;; 函数返回一个整数

  local.get $var0     ;; 将参数 var0 压入栈顶
  local.get $var1     ;; 将参数 var1 压入栈顶
  i32.const 3         ;; 压入常数 3
  i32.div_s           ;; var1 / 3(带符号整数除法)
  i32.add             ;; 结果 + var0
  i32.const 16358     ;; 压入常数 16358
  i32.add             ;; 再加上 16358
)

这样是不是就能看懂了[doge],所以这其实不是一种加密,就是进行了一个数学运算而已,直接用python模拟即可。。。

OK逆向结束~

代码实现

贴出代码如下:

"""
-*- coding: utf-8 -*-
@File   : .py
@author : @鲨鱼爱兜兜
@Time   : 2025/04/06 19:37
"""

import time
import requests

cookies = {
    'sessionid': '你的值',
    'Hm_lvt_b5d072258d61ab3cd6a9d485aac7f183': '1743870511,1743871379,1743932867,1743933915',
    'HMACCOUNT': '你的值',
    'Hm_lpvt_b5d072258d61ab3cd6a9d485aac7f183': '1743938833',
}
headers = {
    'accept': '*/*',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'cache-control': 'no-cache',
    'pragma': 'no-cache',
    'priority': 'u=1, i',
    'referer': 'https://stu.tulingpyton.cn/problem-detail/11/',
    'sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-origin',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
}
s = 0
for page in range(1, 21):
    _ts = int(time.time())
    params = {
        'page': f'{page}',
        'm': f'{int(page + (_ts / 3) + 16358)}',
        '_ts': f'{_ts}'
    }
    response = requests.get('https://stu.tulingpyton.cn/api/problem-detail/11/data/', params=params, cookies=cookies,
                            headers=headers)
    response.raise_for_status()
    response.encoding = 'utf-8'
    print(response.json())
    s += sum(response.json()['current_array'])
print(s)

第十一题,秒了~[doge]

在这里插入图片描述
@鲨鱼爱兜兜

相关文章:

  • 实习期间如何提升留用概率?
  • 再谈 FireBird 自增字段在ClientDataSet里如何处理
  • yolov8在windows系统的C++版本的onnxruntime部署方法
  • C++笔记之父类引用是否可以访问到子类特有的属性?
  • APP动态交互原型实例|墨刀变量控制+条件判断教程
  • 基于ImGui+FFmpeg实现播放器
  • freertos内存管理简要概述
  • RV1126 人脸识别门禁系统解决方案
  • 安全岗の夺命连环问:(第贰篇)XSS三重奏与RASP防御革命
  • js创建对象
  • 人形机器人发展趋势粗谈
  • 模型上下文协议MCP的缺点与潜在问题。
  • 【antd + vue】Tree 树形控件:默认展开所有树节点 、点击文字可以“选中/取消选中”节点
  • 代码随想录第15天:(二叉树)
  • 企业指标设计方法指南
  • Matlab 汽车ABS的bangbang控制和模糊PID控制
  • Linux 安装 vscode
  • erlang的安装-linux
  • 工业相机使用笔记
  • “实时滚动”插件:一个简单的基于vue.js的无缝滚动
  • 怎么做网站热线电话/苏州百度推广公司
  • 企业网站什么意思/同城广告发布平台
  • 怎么做各类网站/站长工具箱
  • 高端定制网站是什么/广州百度推广代理公司
  • 看到一个电商网站帮做淘宝/营销推广方式都有哪些
  • 做网站用asp div代码/百度一下了你就知道官网