AST技巧:快速复制AST节点名称

大家好,之前在群里看有小伙伴问如何快速的复制 AST 节点名称,查了一下,有一个很方便的方法可以复制,分享给大家。

AST 解析网站

搞逆向的小伙伴对于https://astexplorer.net/可能不陌生了,利用它可以很方便的解析 JS 代码,得到 AST 语法树。

image-20250901211300556

上图中的节点名称正常来说是不可以复制的,但是有的时候写 AST 反混淆代码,不想手打节点名称,想要复制一下,应该怎么办呢?

Chrome 的上帝模式

这个方法已经存在很多年了,我记得在我上学那会就玩过,特别有意思。而且这个模式很古老,据说 IE 都支持,利用这个方法可以随意修改整个网页的内容,可以修改成绩(不是),修改别人的网页变成自己的专属网页,修改网页中部分内容用来装逼(不是),并且不会破坏网页的样式,只会改变文字。

那如何开启 Chrome 的上帝模式呢?很简单,在控制台输入下面的代码即可。

1
document.designMode = "on";

designModedocument 的一个全局开关,用来开启 Chrome 页面的编辑模式。它默认是 off 关闭的状态,如果修改为 on 的话就是开启可编辑模式,这时整个页面就是可编辑的状态。

开启上帝模式

image-20250901212200007

开启上帝模式以后,来看一下网页的状态:

image-20250901212550592

image-20250901212600067

大家仔细看第一张图,现在已经有光标了,说明这段文字是可以编辑的,并且双击后就是第二张图,双击后可以选中文字,直接就可以复制了。

image-20250901213004844

image-20250901213028852

并且文字是可以随意修改的,删除或者新增都可以。

另一种方法

其实还有另一个方法可以开启可编辑模式,它的效果和上述代码一样的,除了写法不一样。。

1
document.body.contentEditable="true";

油猴插件

学会了上面的原理以后,我们可以写一个油猴插件来自动执行脚本,在打开网站的时候自动开启编辑模式,这样就可以很方便的复制节点名称了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ==UserScript==
// @name copyAst
// @namespace 首页 | Tampermonkey
// @version 0.1
// @description 复制 AST 节点名称
// @author xx
// @match https://astexplorer.net/
// @grant none
// ==/UserScript==

(function() {
document.designMode = "on";
//和下面的代码二选一
//document.body.contentEditable="true";
})();

将上面的代码复制一下,新建一个油猴插件粘贴即可,具体效果大家可以自行尝试。

本文章首发于个人博客 LLLibra146’s blog

本文作者:LLLibra146

更多文章请关注公众号 (LLLibra146):LLLibra146

版权声明:本博客所有文章除特别声明外,均采用 © BY-NC-ND 许可协议。非商用转载请注明出处!严禁商业转载!

本文链接
https://blog.d77.xyz/archives/bf87637b.html