AST实战|AST入门与实战星球高频问题汇总(二)
关注它,不迷路。
本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!
一.下面的代码看不懂是啥意思,可以帮忙看看吗?
if (!callExpress.isCallExpression(callee:referPath.node))
{
//some code;
}
答:它是一个简写,相当于如下代码:
if (!callExpress.isCallExpression() || callExpress.node.callee != referPath.node))
{
//some code;
}
if语句里面的判断是这样的:
先判断callExpress是否为 CallExpression类型; 如果是的话,再判断 callExpress 的 callee 节点是否就是 referPath.node 节点。
二.一般情况下 要把 a.length 转换成 a["length"]吗?
答:是的,结构统一,才能更方便的编写核心插件,减少需要考虑的情况。花更少的时间编写更多的代码。而这些通用的结构化混淆代码的插件在星球里都有,直接拿来用即可。插件的运行有先后顺序,才能得到满意的效果。
当然,也看个人喜好,我更倾向于用 a["length"] 形式。目的只是为了结构统一,减少考虑的情况。
三.这个js文件只能在node里面运行 那岂不是我要解混淆要先补环境?答: 解混淆大部分情况下并不需要直接运行混淆的js文件,而是编写插件对这个js文件解混淆。混淆的js内容是通过库解析成了语法树,再对这棵树进行剪枝等操作。
AST是一门基础性学科,作为爬虫爱好者或者js逆向爱好者,应该先学AST再学补环境,因为它可以帮你减少补环境所花的时间,再就是方便你改写成其他语言调用。
目前我所遇到需要补环境再运行插件的只有函数调用需要,基本是非常少见。比如ob混淆,某验,某数,其函数调用都不需要补环境,node下直接运行字符串解密函数就能拿到结果。这也给做反爬的兄弟一个反爬点:尝试在解密函数里加入大量的环境检测。
四.蔡老板好, 晚上打扰下, 问个问题, 就是我看你的代码中直接用的path.isUnaryExpression, 但是这样的话ide没法自动补全, 用types.isUnaryExpression就有自动补全, 可以将isUnaryExpression自动补全, 是有什么特别的技巧可以让path有提示吗, 还是说就是手打的?答:我一直用UE (UltraEdit) 来编写AST插件,用cmder来运行js文件。因为插件的编写代码量一般很少上千行,真用不到IDE.
我基本都是对着在线解析网站进行插件的编写,它真的很棒,就像一张map一样,其所有的节点名称均可复制。而构造节点是types.xxx,判断节点是types.isxxx或者path.isxxx,对着在线解析网站复制就好。当然有些节点可能复制不了,这个时候,需要油猴插件帮助我们:
// ==UserScript==
// @name copyAstNode
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author xfan
// @match AST explorer
// @grant none
// ==/UserScript==
(function() {document.body.contentEditable="true";
})();
今天的内容就介绍到这里,等下次攒够一波问题,再写文章,感谢阅读。
AST实战|AST入门与实战星球高频问题汇总(二)相关推荐
- 8s pod 查看 的yaml_Kubernetes入门到实战(五)深入浅出详解Pod
作者:Happy老师 链接:https://blog.51cto.com/happylab/2500457 写在前面 前面的系列文章已介绍kubernetes架构,安装,升级和快速入门,读者通过文章的 ...
- 数据有序_Redis实战(3)-数据结构List实战一之商品信息的有序存储
摘要 电商平台的管理后端一般有两大角色的用户可以使用,一个是系统管理员,一个是平台的卖家/商家,对于商家而言,管理自个儿的商品是日常工作中再为普通不过的事情了,本文我们将以"有序存储并展示电 ...
- ast自动扣webpack脚本实战
ast自动扣webpack脚本实战 webpack是什么 前置阅读 webpack自动扣代码脚本 实战内容 webpack是什么 webpack是一个现代 JavaScript 应用程序的静态模块打包 ...
- 【视频课】永久免费!5小时快速掌握Pytorch框架入门及实战
前言 PyTorch是深度学习的主流框架之一,新手入门相对容易.为了帮助初学者解决PyTorch入门及实践的问题,有三AI推出<深度学习之PyTorch-入门及实战>课程,课程将算法.模型 ...
- 所有方向你要的资料干货这都有,从入门到实战!【CSDN宝藏资料图鉴第一期】
前言 CSDN 是全球知名的开发者社区,创建于1999年,经过20来年的知识文档积累已然成为中文开发者的知识宝库:从基础的法入门到蜕变实战案例.从神秘前沿技术到清晰的实践步骤,可以说CSDN是你找寻资 ...
- 人工智能入门与实战-前言
人工智能入门与实战:前言 你好,我是猪弟爸爸,互联网行业的一名程序员老鸟,从事互联网行业已十余年之久,今年我家猪宝宝的出生也让我成为了一名兼职奶爸,由于我家宝宝在家族排名老小且猪年出生,所以宝宝小名就 ...
- 《Go语言从入门到实战》学习笔记(1)——Go语言学习路线图、简介
非常有幸在<极客时间>上看到<Go语言从入门到实战>这门课程,本课程的作者给出了较为详细的学习路线图,具体如下: 学习路线图 学习目的 个人学习的目的主要是了解Go语言的基本 ...
- PyTorch深度学习入门与实战(案例视频精讲)
作者:孙玉林,余本国 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-07-01 PyTorch深度学习入门与实战(案例视频精讲)
- 7-Python3从入门到实战—基础之数据类型(字典-Dictionary)
Python从入门到实战系列--目录 字典的定义 字典是另一种可变容器模型,且可存储任意类型对象:使用键-值(key-value)存储,具有极快的查找速度: 字典的每个键值(key=>value ...
最新文章
- swoole必须和PHP使用吗,php有必要使用swoole吗
- java中后端拼接字符串返回前台页面换行显示
- Spring中获取Session的方法汇总
- MyBatis 实际使用案例-environments、environment
- <深入剖析Tomcat>摘抄
- laravel 5.1 php版本号,发行版本说明 | 序言 | Laravel 5.1 中文文档
- Python库:time库
- 如何保存ISE综合后的RTL schematic为pdf
- python创建一个csv文件_Python程序中用csv模块来操作csv文件的基本使用教程
- 视频抠图在线工具有哪些?推荐这3款AI智能抠图工具
- C#---委托与事件
- wind river -diab
- 在浏览器中播放m3u8
- 机器学习导论——关于数据集的概念
- unity 3d音效如何设置?,近大远小
- 【网单服务端】卡丁车深海之城单机游戏服务端+使用说明
- 水星路由器设置成交换机
- SQLiteSpy下载安装
- 为什么谷歌浏览器修改主题背景,只有标签栏变了,但新标签页背景不变?怎么办?
- catia三边倒角_CATIA怎么倒角
热门文章
- 同花顺_知识_看盘技法
- WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现
- 语音转换主要涉及技术记录
- 投入linux怀抱,拜拜win
- 2016年8月28日 星期日 --出埃及记 Exodus 16:29
- (二)Redis——持久化详细解析
- 883. 三维形体投影面积C++
- CVE2017-8464:震网三代漏洞分析
- 图论板子dijkstra,Floyd,prime,bfs,dfs, krustral
- Python可视化:中国环保股上市公司市值Top20强