吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9455|回复: 134
上一主题 下一主题
收起左侧

[Web逆向] 【JS逆向系列】某乎__zse_ck参数js与wasm多重套娃地狱级(左篇)

    [复制链接]
跳转到指定楼层
楼主
漁滒 发表于 2024-9-30 00:22 回帖奖励

@TOC

前言

本片文章在一部分内容中会关联其他文章,建议优先阅读

【JS逆向系列】某乎x96参数与jsvmp初体验

【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶

最外层js逆向分析

先下一个脚本断点,然后当使用浏览器无痕模式访问某乎提问题的主页时,并不会直接返回网页源代码,而是返回一个验证的中间页面

这个中间页面非常简单,仅仅只加载了一个js文件

这个js主要分成四部分,首先是来了一个常见的ob混淆

这里只看重要的jsvmp和wasm两个部分,jsvmp部分的代码与上一篇的__zse_ck完全一样,但是字节码部分却很奇怪,解码之前字符串有一万多的长度

由之前可知执行每一步都会通过【>> 19】来计算进入哪一组函数,所以在这里下断点,断下是已经解析好字节码

因为代码有ob混淆,所以搜索【>> 0x13】下断点,此时就可以查看this的数据

可以看到大数组只有80的长度,字符串数组只有16的长度。不对劲,这么长的解析出来怎么可能只有80步这么短

而经过分析才发现,字符串数组下标13的字符串长度居然高达7094

也就是说这段jsvmp的流程可能是非常短,只是有一个非常大的字符串

还是用之前的方法对这段jsvmp进行反汇编

function sub_0() {
  __g["ck"] = "003_bdxEeEnJYUXwWmFo0zxaCPNgpkh1+HL9yQr4ya6AXXDDOOQXoausGBAnGBSUqjXGqpIyQJjZ7C2Su/UzpZZCx6xsxiIj/kqzZN/YjmBxgx+=";
  stack_0 = 63;
  let var_0 = __g["z"]["toString"]();
  stack_1 = var_0;
  register_0 = stack_1;
  let var_1 = register_0["indexOf"]("nsol");
  if (var_1 > -1) {
    register_0 = stack_0;
    stack_2 = register_0 + 40;
  }
  if (!(var_1 > -1)) {
    stack_2 = 64;
  }
  let var_2 = document["querySelector"]("script[data-assets-tracker-config]");
  stack_3 = var_2;
  register_0 = stack_3;
  stack_4 = register_0 + "";
  register_0 = stack_4;
  let var_3 = register_0["indexOf"]("HTMLScriptElement");
  if (var_3 == -1) {
    register_0 = stack_2;
    stack_2 = register_0 + 41;
  }
  register_0 = stack_2;
  if (register_0 < 100) {
    __g["ck"] = "003_bse0VGIjj3tceHDd8dBC73LrG7T3+wPFX/XU+QZ69kG8R9/JoHdLt9xKdmxP6LEBeW4N9MZWmS36rLXN81hQSdiWDIqzuoVj9RJHBJU8Qdoi";
  }
  let var_4 = window["eval"]("(function(){const encoder=new window.TextEncoder(\"utf-8\");const decoder=new w /* 代码太长忽略*/");
}

流程确实很短,前面是一些环境检测,检测不通过的话就会设置一个默认的ck值,但是这个值拿去请求的话,是会返回乱码的内容。

最重要的就是最后一句,eval了一段非常长的js,所以上面忽略的部分代码,下面将这部分js复制出来格式化

可以看到这是一个很标准的胶水代码,那么就是为了后续加载wasm做准备。到这里对真实的ck还没开始,那么继续往下看

最外层js加载wasm

二进制wasm文件直接用base64编码写在了源代码中

当加载完wasm后直接调用了run的标准初始化函数,这个run函数就是在前面eval的胶水代码里面。

这里面也是标准函数,然后突然就生成好了ck。咦!!!是不是少了什么步骤?

之前加载完wasm后,明确了是调用【_encrypt】函数后才获取到ck,但是现在没有了。 接下来就只能是下载wasm文件,然后转o文件用ida分析

但是此时无论是搜索【encrypt】或者是【sm4】都没有结果

突然间逆向好像陷入了僵局,不知道后面应该怎么进行下去!

免费评分

参与人数 34吾爱币 +40 热心值 +27 收起 理由
haozaiya + 1 + 1 我很赞同!
xyer8 + 1 + 1 热心回复!
xiaofengi + 1 + 1 谢谢@Thanks!
Qinmuyi + 1 用心讨论,共获提升!
黑灯瞎火 + 1 + 1 支持大佬,等成功后可不可以私我一个成品用。谢谢!
Aircraftcomman5 + 1 + 1 我很赞同!
lcf123 + 1 热心回复!
xlsnxin + 1 我很赞同!
abaabahao + 1 + 1 我很赞同!
zhaofengshuang + 1 我很赞同!
gwgdaemon + 1 用心讨论,共获提升!
54aike + 1 + 1 我很赞同!
Cluelessthx + 1 谢谢@Thanks!
jazk2004 + 1 + 1 我很赞同!
jk998 + 1 + 1 热心回复!
heartfilia + 1 + 1 我很赞同!
yunyer + 1 热心回复!
procurve + 1 + 1 谢谢@Thanks!
SkyLeech + 1 热心回复!
ioyr5995 + 1 + 1 我很赞同!
xxxcool + 1 + 1 谢谢@Thanks!
eijop252023 + 1 我很赞同!
WindsLand + 1 + 1 谢谢@Thanks!
melooon + 1 + 1 我很赞同!
gouzi123 + 1 + 1 热心回复!
0jiao0 + 1 用心讨论,共获提升!
抱歉、 + 1 用心讨论,共获提升!
Leaf08 + 1 + 1 热心回复!
liuxuming3303 + 1 + 1 谢谢@Thanks!
laozhang4201 + 1 + 1 热心回复!
正己 + 10 + 1 import 漁滒
woyucheng + 1 + 1 用心讨论,共获提升!
surepj + 1 + 1 用心讨论,共获提升!
OVVO + 2 + 1 漁滒我爱你

查看全部评分

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

推荐
sdieedu 发表于 2024-9-30 05:55
这个太难了,还是更新一下GitHub的视频下载器,嘿嘿
推荐
sdieedu 发表于 2024-9-30 05:54
4#
corleone9 发表于 2024-9-30 05:51
5#
YIUA 发表于 2024-9-30 07:28
大佬太强了,学习到了
6#
surepj 发表于 2024-9-30 07:42
向大佬学习了,非常强
7#
KeviseBY 发表于 2024-9-30 07:57

大佬太强了,感谢分享
8#
HA19683 发表于 2024-9-30 08:44
感谢分享
9#
放手一搏09 发表于 2024-9-30 09:15
太强了!!
10#
夜泉 发表于 2024-9-30 09:39
竟然有能让大佬望而止步的代码。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-14 14:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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