2026/4/16 23:48:42
网站建设
项目流程
网站的缺点有哪些,wordpress手机上用的,上海知名公司,天创网站【作者主页】#xff1a;小鱼神1024 【擅长领域】#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 本文章中所有内容仅供学习交流使用#xff0c;不用于其他任何目的#xff0c;不提供完整代码#…【作者主页】小鱼神1024【擅长领域】JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等本文章中所有内容仅供学习交流使用不用于其他任何目的不提供完整代码抓包内容、敏感网址、数据接口等均已做脱敏处理严禁用于商业用途和非法用途否则由此产生的一切后果均与作者无关若有侵权请联系作者立即删除前言最近写了一套懒人AST解混淆框架无需用户手动编写ast代码只需要引入封装好通用ast插件真正做到不懂ast也能轻松解混淆之前也封装过两个还原控制流的通用插件分别是ControlFlowWhileSwtichRestore和ControlFlowForSwtichRestore它们能解决以下还原如图这两个插件只能处理简单控制流不能处理多层嵌套的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解混淆框架、逆向调试工具浏览器插件等等干货有点多绝对值得你拥有一个人或许很难坚持但一群人绝对能走的更远欢迎加入我们一起学习一起进步