吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11702|回复: 139
收起左侧

[Web逆向] 某团新版Web mtgsig1.2 算法解析

    [复制链接]
hybpjx 发表于 2024-9-14 15:03
# 前言
# 声明
# 流程
# a3
# a5
# a6

前言

最近工作有点小忙。没空更新,现在简单更新一下美团的吧
算法和环境更新了一下。某些接口请求几次就强校验了。今天简单来看看。

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

流程

首先AST解混淆,把代码中b函数给解出来就行了。非常简单。

后面解完之后发现 环境代码非常之多。

这里算了。我补了一天最后还差了200多位。这里正常应该是476位。

这里就不多B了。之间开撸。

这里其实就是一个VMP。

层层入栈 直接插桩

ki+1,kg["getUint8"](ki+1),kb

1.png

保存打印的日志。
​        

a3

2.png

3.png

之间搜索dfpID的位置。

4.png

扣完 a3 即生成。

a5

然后找到位置再插一波

如下图

 kR["apply"](kS, kP)

5.png

这里 可以看见 数组转换成字符串。那我们两个断点一起打着看看。

6.png

这里重新插一下一开始的位置

7.png

单步进栈。发现又是一个 switch 流程

那继续插

8.png

OK。那就继续插

9.png

定位到下图位置 单步调试跟栈

10.png

如下图 扣下来即可。后面就是考虑动态数组的问题了。

11.png

即lI,lJ,lK 三个值。那又要插装。

这里重新插装要打印全部值。

这里找到 0,1,2,3,4 ...256的地方。

重新插

12.png

这里动态数组。我们JSON.stringify 来分析下。

这里分析如下

origin_arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255]

// 需要与之运算的16位数组
encrypt_arr = [152, 232, 186, 109, 125, 188, 249, 229, 95, 58, 250, 230, 169, 75, 115, 56]

// 第一个
// 152+0 = 152   152 = 152+0  232 第一个数组
152 + 31

1
// 结果
183

// 第二个
// 184+232 = 416   184 = 183+1  232 第二个数组
416 + 31
447 - 256 || 447 % 256
// 结果
191

// 第三个
// 193+186   191+2  186 第三个数组
379 + 31
410 - 256 || 410 % 256
// 结果
154

// 第四个
// 157 + 109  154+3    109 第四个数组
266 + 31
297 - 256 || 297 * 256
// 结果
41

// ==== ..... 一组轮询完毕

// 第16个
// 231 + 56   216 + 15  56 第15个数组
287 + 31
318 - 256 || 318 % 256
// 结果
62

// 第17个
// 78+152     62+16   152 第1个数组
230 + 31

261 - 256 || 318 % 256

这里直接保姆级教学了。

然后就可以整合算法了。

这里有个小坑~~~ 留着先自己弄弄

这里还有个地方 就是与之运算的16位数组了。

这个地方继续如下图插装

13.png

然后插装 13 39

14.png

然后发现 这一层是上一层kr = kR[\"apply"](kS, kP) 生成的。

所以继续插装 这个位置的length

最后走到这个位置。

这里发现。有传参的两个值。第一个 是一串类似于hash加密的。

第二端是把这个值转换成数组。这个直接抠出来就可以。

15.png

这里继续回去看最外层的日志。

这里直接贴3张图。一眼就能看懂

16.png

17.png

18.png

至此的话。a5就算是搞定了。

a6

直接老样子 根据日志 去插装

19.png

最后瞎JB一顿乱找 和 乱猜

定位点如下图所示

20.png

OK 这个函数直接缺啥扣啥。确实感觉没什么写的。

至此 a3 a5 a6 全部搞定。

21.png

后面拼出来就行了。

然后找几个关键校验的接口 这里我用的是某Boking 去测试的。至于 还有a8 和 d1 。。 只能说待续

22.png

免费评分

参与人数 37吾爱币 +36 热心值 +33 收起 理由
心比天傲 + 1 + 1 我很赞同!
笙若 + 1 + 1 谢谢@Thanks!
wangxiaoqiqiqi + 1 + 1 用心讨论,共获提升!
ZZ730605 + 1 用心讨论,共获提升!
lucasau + 1 + 1 我很赞同!
hgh110110 + 1 用心讨论,共获提升!
趁火打劫 + 1 我很赞同!
allspark + 1 + 1 用心讨论,共获提升!
小飞虫 + 2 + 1 已经处理,感谢您对吾爱破解论坛的支持!
GISerliang + 1 + 1 谢谢@Thanks!
h3nimm + 1 + 1 热心回复!
Rockhat + 1 谢谢@Thanks!
yixi + 1 + 1 谢谢@Thanks!
xiaofendui001 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
王者霸主 + 1 我很赞同!
qiancz + 1 我很赞同!
shiqiangge + 1 + 1 完全不知道干啥用的歪
玩机小白丶王 + 1 复现成功
jk998 + 1 + 1 我很赞同!
melooon + 1 + 1 我很赞同!
tangyuan1778 + 1 + 1 用心讨论,共获提升!
Voccoo + 1 + 1 谢谢@Thanks!
Carinx + 1 + 1 谢谢@Thanks!
m2kar + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
CrazyNut + 3 + 1 不明觉厉
gouzi123 + 2 + 1 我很赞同!
Mackenzie + 1 + 1 我很赞同!
rosng + 1 + 1 谢谢@Thanks!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
T4DNA + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ioyr5995 + 1 + 1 我很赞同!
wxxbc + 1 + 1 我很赞同!
timeni + 1 + 1 谢谢@Thanks!
niejiong88 + 1 热心回复!
myohye + 1 我很赞同!
tomanpj + 1 谢谢@Thanks!
北冥鱼 + 2 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

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

福仔 发表于 2024-10-13 17:11
最近也在搞这个, 完完全全的一个js新手来搞这玩意, 还好可以动态调试, 能知道正确的执行结果是怎样, 好难, 搞了10来天了, 现在好像是a4, a5 没搞定
a3是服务器返回的一个值, a2也需要服务器返回的一个时间戳
a4是基于a5的基础上进行加密
a6就是环境的加密, a7是小程序id, 可以在源码里写死, x0源码里写死, d1是前面a1-a7运算后进行一个MD5操作
如果a4-a6没错的话, d1一般就没错
有难度的就 a4, a5, a6, a2和a3需要加密一段数据post到服务器, 服务器那边返回a3和服务器时间戳, 这个加密比a6要简单
现在就差a4和a5, 不知道有没有交流交流的
植物大战僵尸 发表于 2024-9-15 09:24
tomanpj 发表于 2024-9-15 00:16
Xiaosesi 发表于 2024-9-14 16:27
涨知识了,大厂的算法都很难匿
多重色彩 发表于 2024-9-14 17:10

涨知识了,大厂的算法真牛逼
liujiadao233 发表于 2024-9-14 18:14
技术帖,学习学习
beyondzb 发表于 2024-9-14 21:22
牛  感谢分享
justwz 发表于 2024-9-14 21:48
跟着大佬学逆向
dfg63678 发表于 2024-9-14 21:52
这确实复杂啊
liyunchao 发表于 2024-9-14 23:28
牛 这是真牛
randeqiang 发表于 2024-9-14 23:56
确实复杂啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-1-15 12:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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