mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Merge pull request #172 from javascript-obfuscator/issue-171
Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/…
This commit is contained in:
@@ -4,6 +4,7 @@ v0.14.0
|
||||
---
|
||||
* **Breaking change:** Now CLI obfuscating directory recursively. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/157
|
||||
* Fixed runtime errors when `deadCodeInjection` is enabled and `identifierNamesGenerator` is set to `mangled`
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/171
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/166
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/156
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/159
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+3
-1
@@ -58,10 +58,12 @@ export class BlockStatementControlFlowTransformer extends AbstractNodeTransforme
|
||||
|| NodeGuards.isContinueStatementNode(statement);
|
||||
const isVariableDeclarationWithLetOrConstKind: boolean = NodeGuards.isVariableDeclarationNode(statement)
|
||||
&& (statement.kind === 'const' || statement.kind === 'let');
|
||||
const isClassDeclaration: boolean = NodeGuards.isClassDeclarationNode(statement);
|
||||
|
||||
return NodeGuards.isFunctionDeclarationNode(statement)
|
||||
|| isBreakOrContinueStatement
|
||||
|| isVariableDeclarationWithLetOrConstKind;
|
||||
|| isVariableDeclarationWithLetOrConstKind
|
||||
|| isClassDeclaration;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+26
-2
@@ -454,7 +454,31 @@ describe('BlockStatementControlFlowTransformer', function () {
|
||||
});
|
||||
});
|
||||
|
||||
describe('variant #13: `controlFlowFlatteningThreshold` chance', () => {
|
||||
describe('variant #13: block statement contain class declaration', () => {
|
||||
const statementRegExp: RegExp = /^\(function *\( *\) *{ * *class *_0x([a-f0-9]){4,6} *{.*?} *}.*class *_0x([a-f0-9]){4,6} *{.*?} *}.*class *_0x([a-f0-9]){4,6} *{.*?} *}/;
|
||||
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/class-declaration.js');
|
||||
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_CUSTOM_NODES_PRESET,
|
||||
controlFlowFlattening: true,
|
||||
controlFlowFlatteningThreshold: 1
|
||||
}
|
||||
);
|
||||
|
||||
obfuscatedCode = obfuscationResult.getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('shouldn\'t transform block statement', () => {
|
||||
assert.match(obfuscatedCode, statementRegExp);
|
||||
});
|
||||
});
|
||||
|
||||
describe('variant #14: `controlFlowFlatteningThreshold` chance', () => {
|
||||
const samples: number = 1000;
|
||||
const delta: number = 0.1;
|
||||
|
||||
@@ -499,7 +523,7 @@ describe('BlockStatementControlFlowTransformer', function () {
|
||||
});
|
||||
});
|
||||
|
||||
describe('variant #14: No `unreachable code after return statement` warning', () => {
|
||||
describe('variant #15: No `unreachable code after return statement` warning', () => {
|
||||
const switchCaseRegExp: RegExp = /switch *\(_0x([a-f0-9]){4,6}\[_0x([a-f0-9]){4,6}\+\+\]\) *\{/;
|
||||
const switchCaseLengthRegExp: RegExp = /case *'[0-5]': *console\['log'\]\(0x[0-6]\);/g;
|
||||
const returnStatementRegExp: RegExp = /case *'[0-5]': *return; *(case|})/;
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
(function(){
|
||||
class Test1 {
|
||||
foo () {
|
||||
var that = this;
|
||||
|
||||
console.log(that.foo);
|
||||
}
|
||||
}
|
||||
|
||||
class Test2 {
|
||||
bar () {
|
||||
var that = this;
|
||||
|
||||
console.log(that.bar);
|
||||
}
|
||||
}
|
||||
|
||||
class Test3 {
|
||||
baz () {
|
||||
var that = this;
|
||||
|
||||
console.log(that.baz);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(new Test1().foo());
|
||||
console.log(new Test2().bar());
|
||||
console.log(new Test3().baz());
|
||||
})();
|
||||
Reference in New Issue
Block a user