用JShaman实现禁用命令行输出(禁止console)

JS混淆加密时,有一项常见的功能,叫作:禁用命令行输出,即:禁掉Console语句,含:console.log、console.info等。
这个功能的意义在于:
在JS代码中,console命令行输出语句常用于输出调试信息、关键信息。这些信息,会暴露某些重要的功能逻辑,或透露出私密信息。
原始代码中,这是没关系的,是有必要输出的。而如果要把JS代码混淆加密后再公开,说明是要对代码保护,那些这些console信息就需要被禁止输出。

例:


这段简单的代码,执行时会由两个console输出,和一个alert输出。


用JShaman对这段代码进行混淆,混淆时启用“禁用命令行输出”。


执行混淆过的代码:

可以看到没有输出任何内容。
这就是禁用命令行(console)输出。

PS:有人存在误解,认为禁用命令行输出后,浏览器上面的位置就应该什么信息都不会出现了,这是错误的。




如图中所示,如果页面有错误、警告还是会输出的,还会有请求信息等。这些是浏览器输出的,不是由JS代码所控制的。
禁用命令行输出,只是禁掉了JS代码中的console输出。