JavaScript反混淆插件六:删除空行和空语句

在 反混淆插件五 这篇文章中,介绍了 options 的一些功能,忘记介绍如何删除空行了。也很简单,注意 retainLines 这个即可,代码如下:

const output = generator(ast,opts = {"retainLines":true},code);

  

也可以利用 UltreEdit 这个工具的 正则替换来删除空行。即将 ^p^p 替换为 ^p 即可。

当然,代码太过于紧凑也十分的不好看,这个看大家的喜好了。

下面介绍如何删除 空语句。有时候将源代码利用AST调整后,会有很多类似这样的代码:


   
  1. var a = 123;
  2. ;
  3. var b = 456;

其中,中间的 ; 这一行是没必要存在了,那如何编写插件删除没啥用的这行呢?

将代码在在线解析网站上看看:

解析如上图,将鼠标移动到中间的那行 ; ,解析网站自动帮我们定位到这一行代码的AST结构。

可以看到它是一个 EmptyStatement,想要删除这个节点,方法很简单,直接遍历这个节点,再调用 remove 方法即可,代码如下:


   
  1. const visitor = {
  2. EmptyStatement(path)
  3. {
  4. path.remove();
  5. },
  6. }

就是这么的简单。

好了,就介绍到这里了,大家有什么不懂的地方,可以在群里问,也可以在星球里提问。

文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq523176585/article/details/110790242

(完)