关注

TK X-Gnarly:基于 AI 辅助的 JSVMP 纯算还原方案

TK X-Gnarly:基于 AI 辅助的 JSVMP 纯算还原方案

声明
此帖仅为记录我的逆向学习,过程文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于非法用途,否则由此产生的一切后果均与作者无关!

前言:攻防背景与环境

  • 目标参数X-Gnarly (设备指纹/环境检测)。
  • 分析版本
    • Webmssdk 版本:2.0.0.447
    • 内部版本:5.1.3
    • 文件地址:webmssdk.js
  • 难点痛点
    • JSVMP 虚拟机保护(几百个解释器函数,堆栈晦涩)。
    • 高频的混淆与复杂的控制流扁平化。
    • AST没有实战水平,日志量大很难理清思路。

第一部分:逆向工程方法论

  • 核心思路:不硬啃 VMP 指令,采用**日志挂钩(Logging)+ 结果倒推(Backtracking)**策略。
  • 新颖手段:利用**大模型(Cursor/ChatGPT)**进行算法特征识别。

第二部分:X-Gnarly 逆向实战

2.1 定位与插桩
  • 寻找入口:通过搜索字符串 X-Gnarly 快速定位 n.u.o[971]
    在这里插入图片描述

  • 跟栈进行插桩

    • 标准的 JSVMP 格式,单步调试,找applycall和运算进行插桩
      在这里插入图片描述

    • 面对 JSVMP 的复杂混淆,硬啃 AST 效率极低。本文提出一种新思路:利用日志插桩提取原始表达式,借助 AI 的推理引擎进行逻辑重组。
      在这里插入图片描述

    • Prompt 调优与人工兜底
      面对几十个插桩点,AI生成插桩日志,导致 VMP 执行流崩溃。这可能是 Prompt 约束不够严格所致。最终的解决方案是人工手写效率太低,全 AI 生成风险太高。

2.2 日志分析-倒推分析法(由果索因)
  1. 324位字符串生成逻辑

    • 乱码通过 Base64 自定义码表 (u09tbS3UvgDEe6r-ZVMXzLpsAohTn7mdINQlW412GqBjfYiyk8JORCF5/xKHwacP=)生成324位字符串。
      将日志全盘喂给AI可以直接生成js代码。
      在这里插入图片描述

    • 乱码观察拼接结构:K + 193位乱码-上 + 48乱码 + 193乱码-下

      在这里插入图片描述

  2. 第二层 193位乱码分析

    • 193位乱码由 16位数组 + 轮询次数+ 193位数组 通过计算生成

    • 将日志投喂给 AI,识别出 ChaCha 算法特征,魔改的chacha算法。
      在这里插入图片描述

      在这里插入图片描述

    • 通过日志观察 48位乱码 、12位数组 和 轮询次数是日志输出很接近。将日志喂给AI,直接生成代码。

在这里插入图片描述

  1. 第一层 193位乱码分析

    • 观察日志是由193位乱码是由一个16位的对象生成
      在这里插入图片描述

    • 把日志喂给AI,输出JS代码
      在这里插入图片描述

    • 16位对象根据key的打乱的顺序推断,这里纯在打乱算法,把日志喂给AI,同上

  2. 16位的对象生成

    • 同上,日志喂给AI

结语

  • 总结:JSVMP 逆向从“人肉硬跟”转变为“日志分析+AI识别”的趋势。
  • 免责声明:技术研究用途,请勿用于非法业务。

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/m0_46265880/article/details/157696744

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--