33 * * cilame/v_jstools
44 * * Cqxstevexw/decodeObfuscator
55 */
6- const { parse } = require ( '@babel/parser' )
7- const generator = require ( '@babel/generator' ) . default
8- const traverse = require ( '@babel/traverse' ) . default
9- const t = require ( '@babel/types' )
10- const ivm = require ( 'isolated-vm' )
11- const PluginEval = require ( './eval.js' )
12- const calculateConstantExp = require ( '../visitor/calculate-constant-exp' )
6+ import { parse } from '@babel/parser'
7+ import _generate from '@babel/generator'
8+ const generator = _generate . default
9+ import _traverse from '@babel/traverse'
10+ const traverse = _traverse . default
11+ import * as t from '@babel/types'
12+ import ivm from 'isolated-vm'
13+ import PluginEval from './eval.js'
14+ import calculateConstantExp from '../visitor/calculate-constant-exp.js'
15+ import deleteIllegalReturn from '../visitor/delete-illegal-return.js'
16+ import deleteUnusedVar from '../visitor/delete-unused-var.js'
17+ import lintIfStatement from '../visitor/lint-if-statement.js'
18+ import mergeObject from '../visitor/merge-object.js'
19+ import parseControlFlowStorage from '../visitor/parse-control-flow-storage.js'
20+ import pruneIfBranch from '../visitor/prune-if-branch.js'
21+ import splitSequence from '../visitor/split-sequence.js'
22+ import splitVarDeclaration from '../visitor/split-variable-declaration.js'
1323
1424const isolate = new ivm . Isolate ( )
1525const globalContext = isolate . createContextSync ( )
@@ -609,10 +619,8 @@ function decodeCodeBlock(ast) {
609619 // 合并字面量
610620 traverse ( ast , calculateConstantExp )
611621 // 先合并分离的Object定义
612- const mergeObject = require ( '../visitor/merge-object' )
613622 traverse ( ast , mergeObject )
614623 // 在变量定义完成后判断是否为代码块加密内容
615- const parseControlFlowStorage = require ( '../visitor/parse-control-flow-storage' )
616624 traverse ( ast , parseControlFlowStorage )
617625 // 合并字面量(在解除区域混淆后会出现新的可合并分割)
618626 traverse ( ast , calculateConstantExp )
@@ -719,7 +727,6 @@ function cleanSwitchCode(path) {
719727
720728function cleanDeadCode ( ast ) {
721729 traverse ( ast , calculateConstantExp )
722- const pruneIfBranch = require ( '../visitor/prune-if-branch' )
723730 traverse ( ast , pruneIfBranch )
724731 traverse ( ast , { WhileStatement : { exit : cleanSwitchCode } } )
725732 return ast
@@ -797,7 +804,6 @@ function purifyCode(ast) {
797804 } )
798805 // 删除未使用的变量
799806 traverse ( ast , splitVariableDeclarator )
800- const deleteUnusedVar = require ( '../visitor/delete-unused-var' )
801807 traverse ( ast , deleteUnusedVar )
802808 // 替换索引器
803809 function FormatMember ( path ) {
@@ -844,7 +850,6 @@ function purifyCode(ast) {
844850 } )
845851
846852 // 拆分语句
847- const splitSequence = require ( '../visitor/split-sequence' )
848853 traverse ( ast , splitSequence )
849854 return ast
850855}
@@ -1041,7 +1046,7 @@ function unlockEnv(ast) {
10411046 return ast
10421047}
10431048
1044- module . exports = function ( code ) {
1049+ export default function ( code ) {
10451050 let ret = PluginEval . unpack ( code )
10461051 let global_eval = false
10471052 if ( ret ) {
@@ -1056,13 +1061,10 @@ module.exports = function (code) {
10561061 return null
10571062 }
10581063 // IllegalReturn
1059- const deleteIllegalReturn = require ( '../visitor/delete-illegal-return' )
10601064 traverse ( ast , deleteIllegalReturn )
10611065 // Lint before split statements
1062- const lintIfStatement = require ( '../visitor/lint-if-statement' )
10631066 traverse ( ast , lintIfStatement )
10641067 // Split declarations to avoid bugs
1065- const splitVarDeclaration = require ( '../visitor/split-variable-declaration' )
10661068 traverse ( ast , splitVarDeclaration )
10671069 // 清理二进制显示内容
10681070 traverse ( ast , {
0 commit comments