news 2026/2/28 19:50:49

挖矿小游戏-jshook对抗 | AST插件还原多层For-Swtich控制流实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
挖矿小游戏-jshook对抗 | AST插件还原多层For-Swtich控制流实战

【作者主页】:小鱼神1024

【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等

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

前言

最近写了一套懒人AST解混淆框架,无需用户手动编写ast代码,只需要引入封装好通用ast插件,真正做到:不懂ast,也能轻松解混淆!

之前也封装过两个还原控制流的通用插件,分别是:ControlFlowWhileSwtichRestoreControlFlowForSwtichRestore,它们能解决以下还原,如图:

这两个插件只能处理简单控制流,不能处理多层嵌套的swtich,以及if判断等逻辑。

所以,为了解决这些问题,我封装了一个新的插件:ControlFlowMultiSwtichRestore,它支持多层嵌套的swtich,以及if判断等逻辑,如图:

借助零点大佬的挖矿小游戏-jshook对抗案例,来演示一下这个插件的使用。

网址:https://www.ldvmp.com/game/level2.html

这个游戏本身通关不难,固定Math.random随机数即可,用我写的Reverse DevTools | 逆向调试工具浏览器插件,可以轻松解决。

有兴趣的可以去试试看:https://blog.csdn.net/studypy1024/article/details/146070557

前置分析

首先,我们分析一下这个游戏的逻辑,如图:

发现逻辑判断,都在这段控制流代码里。那话不多说,开始还原吧!

AST解混淆实操演示

先将这部分代码复制到懒人AST解混淆框架source.js文件里,如图所示:

字面量还原

分析代码发现,里面有很多Unicode 编码字符,如图所示:

这个还原比较简单,直接使用LiteralRestore通过插件即可,如图所示:

traverse(ast,LiteralRestore);

还原后,如图所示:

同时,控制台也有日志打印:

[LiteralRestore插件]"\u68C0\u6D4B\u5230\u4F5C\u5F0A\uFF0C\u8BF7\u7EE7\u7EED\u52A0\u6CB9\uFF01"-->检测到作弊,请继续加油![LiteralRestore插件]"\u91D1\u5E01\u4E0D\u591F\uFF0C\u8BF7\u7EE7\u7EED\u6316\u77FF\uFF01"-->金币不够,请继续挖矿![LiteralRestore插件]"\u606D\u559C\u60A8\uFF0C\u901A\u5173\u4E86\uFF01\u8BF7\u8BD5\u8BD5HOOK\u65B9\u5F0F\u8FC7\u5173\uFF01\u6316\u77FF\u603B\u6B21\u6570\uFF1A"-->恭喜您,通关了!请试试HOOK方式过关!挖矿总次数:[LiteralRestore插件]"\u606D\u559C\u60A8\uFF0C\u901A\u5173\u4E86\uFF01"-->恭喜您,通关了![LiteralRestore插件]"hook\u88AB\u68C0\u6D4B\u5230\u4E86\u5662\uFF0C\u8BF7\u7EE7\u7EED\u52A0\u6CB9\uFF01"-->hook被检测到了噢,请继续加油![LiteralRestore插件]"\u606D\u559C\u60A8\uFF0C\u901A\u5173\u4E86\uFF0C\u8BF7\u8BD5\u8BD5HOOK\u65B9\u5F0F\u8FC7\u5173\uFF01"-->恭喜您,通关了,请试试HOOK方式过关![LiteralRestore插件]"\u91D1\u5E01\u4E0D\u591F\uFF0C\u8BF7\u8BD5\u8BD5HOOK\u65B9\u5F0F\u8FC7\u5173\uFF01"-->金币不够,请试试HOOK方式过关![LiteralRestore插件]"\u606D\u559C\u60A8\uFF0C\u901A\u8FC7HOOK\u65B9\u5F0F\u901A\u5173\u4E86\uFF01"-->恭喜您,通过HOOK方式通关了!./demos/demo15/output.js50ms 文件写入成功
块语句还原

继续观察代码,发现for等没有大括号包裹,如图所示:

这个可以用forIfBlockRestore通用插件还原一下,如图所示:

traverse(ast,LiteralRestore);traverse(ast,forIfBlockRestore);

还原后,如图所示:

三元表达式转if

继续观察代码,发现有很多三元表达式,如图所示:

这个可以用TernaryToIfRestore通用插件还原一下,如图所示:

traverse(ast,LiteralRestore);traverse(ast,forIfBlockRestore);traverse(ast,TernaryExpressionToIfRestore);

还原后,如图所示:

三元表达式转if

一些准备工作完成后,就可以使用ControlFlowForSwtichAdvancedRestore通用插件还原控制流了。

traverse(ast,LiteralRestore);traverse(ast,forIfBlockRestore);traverse(ast,TernaryExpressionToIfRestore);traverse(ast,ControlFlowForSwtichAdvancedRestore);

还原后,如图所示:

几分钟的事情,控制流轻松还原。

引入插件代码,如图所示:

验证

将还原后代码,在浏览器中替换,如图所示:

发现页面按钮可以正常点击,说明控制流代码还原没问题。

写到最后

逆向难或不难,关键是看你是否有耐心,是否有归纳总结能力,是否有趁手的工具。

  • 耐心,能让你有问题不后退!
  • 归纳总结,能让你知识成体系!
  • 工具,能让你事半功倍!

星球有大量逆向工具,比如:webpack自动扣代码框架插桩日志框架懒人AST解混淆框架逆向调试工具浏览器插件等等;干货有点多,绝对值得你拥有!

一个人或许很难坚持,但一群人,绝对能走的更远!欢迎加入我们,一起学习,一起进步!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/27 15:42:43

Wan2.2-T2V-A14B能否生成带有品牌LOGO的定制视频

Wan2.2-T2V-A14B能否生成带有品牌LOGO的定制视频 在数字营销的战场上,每一秒都价值千金。你有没有遇到过这样的场景:市场部急着要一条新品发布的宣传视频,设计师还在熬夜改第八版分镜,而发布会倒计时已经进入48小时?&a…

作者头像 李华
网站建设 2026/2/13 11:11:18

Wan2.2-T2V-A14B如何确保画面美学与艺术风格一致性?

Wan2.2-T2V-A14B如何确保画面美学与艺术风格一致性? 你有没有遇到过这样的情况:输入一段诗意的描述,比如“穿汉服的少女在落樱中起舞,光影柔和,色调统一为粉白与朱红”,结果生成的视频前两秒是水墨风&#…

作者头像 李华
网站建设 2026/2/16 9:13:56

构建高效计算机专业课记忆系统:模块化方法论指南

构建高效计算机专业课记忆系统:模块化方法论指南 【免费下载链接】CS-Xmind-Note 计算机专业课(408)思维导图和笔记:计算机组成原理(第五版 王爱英),数据结构(王道)&…

作者头像 李华
网站建设 2026/2/27 7:47:19

探索 A*与 DWA 融合:小白也能懂的路径规划算法之旅

AStar搜索算法,A*和DWA算法融合,适合小白学习哦 程序效果如图所示最近在研究路径规划算法,发现 A*和 DWA 算法都各有千秋,要是把它们融合起来,那效果简直绝了。今天就来跟各位小白分享下这俩算法以及它们融合后的神奇之…

作者头像 李华
网站建设 2026/2/23 9:14:15

计算机毕设java校园志愿服务管理系统 基于Java的校园志愿活动信息化管理系统设计与实现 Java技术驱动的校园志愿服务管理平台开发

计算机毕设java校园志愿服务管理系统a9y349(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网技术的飞速发展,校园志愿服务管理的方式也在不断革新。传统的纸…

作者头像 李华
网站建设 2026/2/22 3:33:19

企业级可观测平台哪家好:全球6家智能可观测厂商实力排名

Gartner预测,到2027年,超过50%的企业将使用可观测性技术来优化业务决策,这一比例远高于2022年的不足20%。现代分布式架构、微服务、容器化和多云环境使得传统的监控手段已无法满足企业对系统状态全面洞察的需求。 面对市场上众多的可观测解决…

作者头像 李华