使用AST方式实现JS代码净化工具:应对jsjiami.com.v7相关程序
在近期的项目开发过程中,我们遇到了不少使用了jsjiami.com.v7加密方式的程序。为了更好地处理这些加密后的代码,我们决定采用AST(抽象语法树)的方式来实现一个JS代码净化工具。这个工具将借助Babel插件来完成一系列复杂的代码处理任务。
一、工具功能概述
我们的JS代码净化工具具备多种功能,旨在对经过jsjiami.com.v7加密的代码进行有效的净化和优化。具体来说,它主要包括以下几种类型的处理:
-
字面量还原
- 全局字面量还原:在代码中,全局字面量的合理还原对于理解代码逻辑和提高代码可读性至关重要。例如,一些加密后的代码可能会对全局变量或常量进行混淆处理,我们的工具将通过AST分析,准确识别并还原这些全局字面量,使其恢复到更易理解的形式。
- 代码块字面量还原:除了全局字面量,代码块内的字面量也可能被加密或混淆。我们的工具会深入分析代码块的AST结构,找出其中被隐藏或混淆的字面量,并进行还原操作,确保代码逻辑的清晰性。
-
死代码清理
- 在加密过程中,可能会产生一些永远不会被执行的死代码。这些死代码不仅会增加代码的体积,还可能干扰对代码逻辑的理解。我们的工具会通过静态分析AST,识别出那些不可能被执行到的代码片段,并将其从代码中移除,从而提高代码的执行效率和可维护性。
-
扁平化还原
- 加密后的代码可能会采用复杂的嵌套结构来隐藏其真实逻辑。扁平化还原功能将把这些复杂的嵌套结构展开,使代码的结构更加清晰。通过AST的操作,我们可以将多层嵌套的语句和表达式进行扁平化处理,让代码的逻辑更加直观。
-
条件、循环语句规范化
- 加密后的条件语句和循环语句可能会被改写成难以理解的形式。我们的工具会对这些语句进行分析和规范化处理,使其符合常见的编程规范和逻辑结构。例如,将复杂的条件判断语句进行简化和优化,将不同形式的循环语句统一转换为更易读的形式。
-
特殊函数清理
- jsjiami.com.v7加密可能会引入一些特殊的函数来隐藏代码逻辑。我们的工具会识别并清理这些特殊函数,将其还原为正常的函数调用形式,以便更好地理解代码的功能。
-
处理全局加密内容时使用VM2提供的环境
- 当涉及到全局加密内容的处理时,为了确保代码的安全性和正确性,我们将使用VM2提供的环境。VM2是一个强大的JavaScript虚拟机库,它可以在隔离的环境中执行代码,防止恶意代码对系统造成损害。我们的工具将利用VM2的环境来处理全局加密内容,确保在净化代码的过程中不会引入安全风险。
需要node.js环境,并安装依赖:npm i。
调用代码:
# pre-defined command
npm run xxx
# or full command
npm run decode -- -t type [-i input.js] [-o output.js]
xxx为预定义的指令,见package.json中的scripts字段。
type列表:
common (高频局部混淆)
jjencode (sojson.com 版本)
sojson
sojsonv7
obfuscator
默认输入文件为input.js,文件中不能包含除混淆代码以外的内容(例如非混淆代码,注释除外),且只能包含一段混淆代码(一次处理只能识别一个主加密函数)。
默认输出文件为output.js。
程序入口文件为:src/main.js,插件目录为src/plugin。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容