当前位置:网站首页>JS解混淆-AST还原案例
JS解混淆-AST还原案例
2022-08-09 21:51:00 【m0_67393828】
目录
一、js混淆了解
1、为什么要混淆?
js混淆的作用:为了防止爬虫通过分析js内容,轻易的还原出网站的加密逻辑,而做出的安全防御手段之一,常常将一个逻辑简单的可能十几行算法代码思路,通过变量混淆替换、增加冗余无效代码、增加无限debugger反调试功能、增加多层的套娃式if~else代码、以及埋陷阱等混淆成几千行的js代码,给人第一印象难读,对入门分析者造成恐惧心理- 如图,我们常见的ob混淆就是这个原理,左侧也就5行的代码,经过ob混淆这么一个操作,就有了右侧
很多_0x开头的字符串/函数混淆的代码,逻辑调用分析难度增加,是反爬的常用手段

2、常见的混淆模样(ob/sojson/jsfuck/AAencode/jjEncode/eval)
拿输出
hello world为例子,常见的混淆有这6种:ob混淆、sojson混淆、eval混淆、jsfuck混淆、AAEncode混淆、jjEncode混淆,用的比较多的混淆是ob混淆、sojson混淆、eval混淆这三种function hi() { console.log("Hello World!"); } hi();ob混淆:ob混淆网址
sojson混淆:sojson混淆网址
eval混淆:eval混淆网址
jsfuck混淆: jsfuck官网混淆网址,jsfuck混淆网址,常用解决方法,鼠标将光标放到最后一个括号位置,找到对称的高亮的括号,将两个括号的内容复制出来,用eval执行试试,或者直接控制台打印输出看看

AAEncode混淆:AAEncode混淆网址,常用解决方法去除末尾(‘_’),加上toSting()
jjEncode混淆:jjEncode混淆网址,常用方法去除末尾(),加上toSting()
二、AST初步认识
ast 又称 抽象语法树, 比如将js代码已树节点的形式展现,有点类似html源码的各个标签父子关系,关于ast的介绍可以进一步看这篇文章
ast的作用:ast作用主要是将混淆的难读的js还原成可读性高的js,对整个js的逻辑不做任何改变,你可以理解为化繁为简,可见性的瘦身,也许网页上是1w多行的混淆代码,瘦身后只有不到1千行;脱混淆后要注意替换到网页试试看能否能用
初次入门尝试体验案例,一般是打开可视化显示AST结构工具分析节点;处理逻辑:就是一颗树,
不停的找分支,确定当前分支的各个属性特性,即定位要改的节点就是找type,然后对该type节点操作即可,你可以简单理解为html里面找到了父标签然后对子标签进行操作,理解为xpath或者css选择器的逻辑也不为过
三、解混淆常用的方法
1、直接用开源的插件试试先:
如林佬的v_jstools插件,解混淆插件v_jstools使用,如果解不了混淆,也可以使用变量压缩让代码看起来舒服些,又如Nanda佬的通过ast来解决jsfuck混淆的具体思路讲解
2、特殊案例特殊解决:如
哲哥的ast还原框架, ast框架一键还原ali 140 混淆, 来自哲哥开源代码:https://github.com/sml2h3/ast_tools , 环境准备:node安装 ,vscode安装,以及ast相关模块安装看如下命令npm install iconv-lite -g npm install @babel/parser -g npm install @babel/traverse -g npm install @babel/types -g npm install @babel/generator -g npm install md5-node -g
3、特殊案例特殊解决:如
渔滒的ast自动扣webpack脚本
4、特殊案例特殊解决:如
包子xia的某数旧版AST分析还原
5、特殊案例特殊解决:如
带泪的鱼的某验滑块ast混淆还原分析
6、特殊案例特殊解决:如
迷心兔的jsvmp if else 反混淆7、学习ast还原代码编写,自己写还原混淆逻辑:如
悦来客栈的老板(蔡老板)的公众号有还原常见混淆的思路讲解 ,decodeObfuscator开源解混淆ob8、百度搜索其它的一些解混淆思路,如:jjencode、AAencode混淆的解法
后续如有新的发现,会持续编写博客进行更新~
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- TF generates uniformly distributed tensor
- mysql多表左链接查询
- Tensorflow中使用convert_to_tensor去指定数据的类型
- 自监督学习 —— MoCo v2
- Wps下划线怎么弄?Wps添加下划线的最全方法
- 角度和弧度的相互换算
- Solution: Edu Codeforces 109 (div2)
- laravel table migration error [easy to understand]
- SecureCRT 设置超时自动断开连接时长
- Xiaohei's leetcode journey: 94. Inorder traversal of binary trees (supplementary Morris inorder traversal)
猜你喜欢

Multiple reasons for MySQL slow query

AI识万物:从0搭建和部署手语识别系统

Word怎么制作一张标准的答题卡?

Xiaohei's leetcode journey: 94. Inorder traversal of binary trees (supplementary Morris inorder traversal)

Xiaohei leetcode's refreshing rainy day trip, just finished eating Yufei Beef Noodles, Mala Tang and Beer: 112. Path Sum

APP automation test framework - UiAutomator2 introductory

Several ways to draw timeline diagrams

ACM MM 2022 | Cloud2Sketch: 长空云作画,AI笔生花

五星控股汪建国:以“植物精神”深耕赛道,用“动物精神”推动成长

Metasploit常用命令、技术功能模块
随机推荐
APP automation test framework - UiAutomator2 introductory
SecureCRT sets the timeout period for automatic disconnection
Ehrlich screening method: Counting the number of prime numbers
STC8H Development (15): GPIO Drives Ci24R1 Wireless Module
Synchronization lock synchronized traces the source
STC8H development (15): GPIO drive Ci24R1 wireless module
技术分享 | 接口自动化测试之JSON Schema模式该如何使用?
接口自动化测试实践指导(上):接口自动化需要做哪些准备工作
Interpretation of the paper (DropEdge) "DropEdge: Towards Deep Graph Convolutional Networks on Node Classification"
Install win virtual machine on VMware
如何让您的公司内容满足 GDPR 合规性
【EF】数据表全部字段更新与部分字段更新
1215 – Cannot add foreign key constraint
AI Knows Everything: Building and Deploying a Sign Language Recognition System from Zero
【测试】语句覆盖,判定覆盖,条件覆盖,路径覆盖
小黑leetcode清爽雨天之旅,刚吃完宇飞牛肉面、麻辣烫和啤酒:112. 路径总和
SecureCRT background color
In programming languages, the difference between remainder and modulo
Bean life cycle
The round functions in the np, ceil function and floor function