关注它,不迷路。

  • 本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!

一.下面的代码看不懂是啥意思,可以帮忙看看吗?

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入门与实战星球高频问题汇总(二)相关推荐

  1. 8s pod 查看 的yaml_Kubernetes入门到实战(五)深入浅出详解Pod

    作者:Happy老师 链接:https://blog.51cto.com/happylab/2500457 写在前面 前面的系列文章已介绍kubernetes架构,安装,升级和快速入门,读者通过文章的 ...

  2. 数据有序_Redis实战(3)-数据结构List实战一之商品信息的有序存储

    摘要 电商平台的管理后端一般有两大角色的用户可以使用,一个是系统管理员,一个是平台的卖家/商家,对于商家而言,管理自个儿的商品是日常工作中再为普通不过的事情了,本文我们将以"有序存储并展示电 ...

  3. ast自动扣webpack脚本实战

    ast自动扣webpack脚本实战 webpack是什么 前置阅读 webpack自动扣代码脚本 实战内容 webpack是什么 webpack是一个现代 JavaScript 应用程序的静态模块打包 ...

  4. 【视频课】永久免费!5小时快速掌握Pytorch框架入门及实战

    前言 PyTorch是深度学习的主流框架之一,新手入门相对容易.为了帮助初学者解决PyTorch入门及实践的问题,有三AI推出<深度学习之PyTorch-入门及实战>课程,课程将算法.模型 ...

  5. 所有方向你要的资料干货这都有,从入门到实战!【CSDN宝藏资料图鉴第一期】

    前言 CSDN 是全球知名的开发者社区,创建于1999年,经过20来年的知识文档积累已然成为中文开发者的知识宝库:从基础的法入门到蜕变实战案例.从神秘前沿技术到清晰的实践步骤,可以说CSDN是你找寻资 ...

  6. 人工智能入门与实战-前言

    人工智能入门与实战:前言 你好,我是猪弟爸爸,互联网行业的一名程序员老鸟,从事互联网行业已十余年之久,今年我家猪宝宝的出生也让我成为了一名兼职奶爸,由于我家宝宝在家族排名老小且猪年出生,所以宝宝小名就 ...

  7. 《Go语言从入门到实战》学习笔记(1)——Go语言学习路线图、简介

    非常有幸在<极客时间>上看到<Go语言从入门到实战>这门课程,本课程的作者给出了较为详细的学习路线图,具体如下: 学习路线图  学习目的 个人学习的目的主要是了解Go语言的基本 ...

  8. PyTorch深度学习入门与实战(案例视频精讲)

    作者:孙玉林,余本国 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-07-01 PyTorch深度学习入门与实战(案例视频精讲)

  9. 7-Python3从入门到实战—基础之数据类型(字典-Dictionary)

    Python从入门到实战系列--目录 字典的定义 字典是另一种可变容器模型,且可存储任意类型对象:使用键-值(key-value)存储,具有极快的查找速度: 字典的每个键值(key=>value ...

最新文章

  1. swoole必须和PHP使用吗,php有必要使用swoole吗
  2. java中后端拼接字符串返回前台页面换行显示
  3. Spring中获取Session的方法汇总
  4. MyBatis 实际使用案例-environments、environment
  5. <深入剖析Tomcat>摘抄
  6. laravel 5.1 php版本号,发行版本说明 | 序言 | Laravel 5.1 中文文档
  7. Python库:time库
  8. 如何保存ISE综合后的RTL schematic为pdf
  9. python创建一个csv文件_Python程序中用csv模块来操作csv文件的基本使用教程
  10. 视频抠图在线工具有哪些?推荐这3款AI智能抠图工具
  11. C#---委托与事件
  12. wind river -diab
  13. 在浏览器中播放m3u8
  14. 机器学习导论——关于数据集的概念
  15. unity 3d音效如何设置?,近大远小
  16. 【网单服务端】卡丁车深海之城单机游戏服务端+使用说明
  17. 水星路由器设置成交换机
  18. SQLiteSpy下载安装
  19. 为什么谷歌浏览器修改主题背景,只有标签栏变了,但新标签页背景不变?怎么办?
  20. catia三边倒角_CATIA怎么倒角

热门文章

  1. 同花顺_知识_看盘技法
  2. WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现
  3. 语音转换主要涉及技术记录
  4. 投入linux怀抱,拜拜win
  5. 2016年8月28日 星期日 --出埃及记 Exodus 16:29
  6. (二)Redis——持久化详细解析
  7. 883. 三维形体投影面积C++
  8. CVE2017-8464:震网三代漏洞分析
  9. 图论板子dijkstra,Floyd,prime,bfs,dfs, krustral
  10. Python可视化:中国环保股上市公司市值Top20强