mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Ignore transformation of process.env.* (#1367)
This commit is contained in:
@@ -15,6 +15,7 @@ import { EvalCallExpressionTransformer } from '../../../node-transformers/prepar
|
||||
import { ForceTransformStringObfuscatingGuard } from '../../../node-transformers/preparing-transformers/obfuscating-guards/ForceTransformStringObfuscatingGuard';
|
||||
import { IgnoredImportObfuscatingGuard } from '../../../node-transformers/preparing-transformers/obfuscating-guards/IgnoredImportObfuscatingGuard';
|
||||
import { ImportMetaObfuscationGuard } from '../../../node-transformers/preparing-transformers/obfuscating-guards/ImportMetaObfuscationGuard';
|
||||
import { ProcessEnvObfuscationGuard } from '../../../node-transformers/preparing-transformers/obfuscating-guards/ProcessEnvObfuscationGuard';
|
||||
import { MetadataTransformer } from '../../../node-transformers/preparing-transformers/MetadataTransformer';
|
||||
import { ObfuscatingGuardsTransformer } from '../../../node-transformers/preparing-transformers/ObfuscatingGuardsTransformer';
|
||||
import { ParentificationTransformer } from '../../../node-transformers/preparing-transformers/ParentificationTransformer';
|
||||
@@ -73,6 +74,11 @@ export const preparingTransformersModule: interfaces.ContainerModule = new Conta
|
||||
.inSingletonScope()
|
||||
.whenTargetNamed(ObfuscatingGuard.ImportMetaObfuscationGuard);
|
||||
|
||||
bind<IObfuscatingGuard>(ServiceIdentifiers.INodeGuard)
|
||||
.to(ProcessEnvObfuscationGuard)
|
||||
.inSingletonScope()
|
||||
.whenTargetNamed(ObfuscatingGuard.ProcessEnvObfuscationGuard);
|
||||
|
||||
bind<IObfuscatingGuard>(ServiceIdentifiers.INodeGuard)
|
||||
.to(ReservedStringObfuscatingGuard)
|
||||
.inSingletonScope()
|
||||
|
||||
+1
@@ -4,5 +4,6 @@ export enum ObfuscatingGuard {
|
||||
ForceTransformStringObfuscatingGuard = 'ForceTransformStringObfuscatingGuard',
|
||||
IgnoredImportObfuscatingGuard = 'IgnoredImportObfuscatingGuard',
|
||||
ImportMetaObfuscationGuard = 'ImportMetaObfuscationGuard',
|
||||
ProcessEnvObfuscationGuard = 'ProcessEnvObfuscationGuard',
|
||||
ReservedStringObfuscatingGuard = 'ReservedStringObfuscatingGuard'
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ export class ObfuscatingGuardsTransformer extends AbstractNodeTransformer {
|
||||
ObfuscatingGuard.ForceTransformStringObfuscatingGuard,
|
||||
ObfuscatingGuard.IgnoredImportObfuscatingGuard,
|
||||
ObfuscatingGuard.ImportMetaObfuscationGuard,
|
||||
ObfuscatingGuard.ProcessEnvObfuscationGuard,
|
||||
ObfuscatingGuard.ReservedStringObfuscatingGuard
|
||||
];
|
||||
|
||||
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
import { injectable } from 'inversify';
|
||||
|
||||
import * as ESTree from 'estree';
|
||||
|
||||
import { IObfuscatingGuard } from '../../../interfaces/node-transformers/preparing-transformers/obfuscating-guards/IObfuscatingGuard';
|
||||
|
||||
import { ObfuscatingGuardResult } from '../../../enums/node/ObfuscatingGuardResult';
|
||||
|
||||
import { NodeGuards } from '../../../node/NodeGuards';
|
||||
|
||||
@injectable()
|
||||
export class ProcessEnvObfuscationGuard implements IObfuscatingGuard {
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @return {boolean}
|
||||
* @private
|
||||
*/
|
||||
private static isProcessEnvMemberExpression(node: ESTree.Node): boolean {
|
||||
if (!NodeGuards.isMemberExpressionNode(node)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (
|
||||
NodeGuards.isIdentifierNode(node.object) &&
|
||||
node.object.name === 'process' &&
|
||||
NodeGuards.isIdentifierNode(node.property) &&
|
||||
node.property.name === 'env' &&
|
||||
!node.computed
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @return {boolean}
|
||||
* @private
|
||||
*/
|
||||
private static isPartOfProcessEnvChain(node: ESTree.Node): boolean {
|
||||
if (ProcessEnvObfuscationGuard.isProcessEnvMemberExpression(node)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const parentNode = node.parentNode;
|
||||
|
||||
if (parentNode && NodeGuards.isMemberExpressionNode(parentNode)) {
|
||||
if (ProcessEnvObfuscationGuard.isProcessEnvMemberExpression(parentNode.object)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ProcessEnvObfuscationGuard.isProcessEnvMemberExpression(parentNode)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @returns {ObfuscatingGuardResult}
|
||||
*/
|
||||
public check(node: ESTree.Node): ObfuscatingGuardResult {
|
||||
return ProcessEnvObfuscationGuard.isPartOfProcessEnvChain(node)
|
||||
? ObfuscatingGuardResult.Ignore
|
||||
: ObfuscatingGuardResult.Transform;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user