瀏覽代碼

Improved new self defending code

sanex3339 5 年之前
父節點
當前提交
e3f8291657

文件差異過大導致無法顯示
+ 0 - 0
dist/index.browser.js


文件差異過大導致無法顯示
+ 0 - 0
dist/index.cli.js


文件差異過大導致無法顯示
+ 0 - 0
dist/index.js


+ 3 - 1
src/custom-code-helpers/self-defending/templates/SelfDefendingTemplate.ts

@@ -11,7 +11,9 @@ export function SelfDefendingTemplate (escapeSequenceEncoder: IEscapeSequenceEnc
     return `
         const {selfDefendingFunctionName} = {callControllerFunctionName}(this, function () {
             const test = function () {
-                const regExp = new RegExp('^([^ ]+( +[^ ]+)+)+[^ ]}');
+                const regExp = test
+                    .constructor('return /" + this + "/')()
+                    .compile('^([^ ]+( +[^ ]+)+)+[^ ]}');
                 
                 return !regExp.test({selfDefendingFunctionName});
             };

+ 4 - 6
test/dev/dev.ts

@@ -7,15 +7,13 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
 
     let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
         `
-            var foo = 'foo';
+            (function () {
+                return 1;
+            })();
         `,
         {
             ...NO_ADDITIONAL_NODES_PRESET,
-            compact: false,
-            identifierNamesGenerator: 'mangled',
-            stringArray: true,
-            stringArrayThreshold: 1,
-            stringArrayEncoding: 'base64'
+            selfDefending: true
         }
     ).getObfuscatedCode();
 

+ 4 - 6
test/functional-tests/custom-code-helpers/self-defending/templates/SelfDefendingTemplate.spec.ts

@@ -134,7 +134,7 @@ describe('SelfDefendingTemplate', function () {
     });
 
     describe('Variant #4: obfuscated code with beautified self defending code', () => {
-        const expectedEvaluationResult: number = 0;
+        const expectedEvaluationResult: number = 1;
 
         let obfuscatedCode: string,
             evaluationResult: number = 0;
@@ -153,20 +153,18 @@ describe('SelfDefendingTemplate', function () {
                 .replace(/function\(\){/g, 'function () {')
                 .replace(/=/g, ' = ')
                 .replace(/,/g, ', ')
-                .replace(/;/g, '; ')
-                .replace(/{/g, '{\n')
-                .replace(/}/g, '}\n');
+                .replace(/;/g, '; ');
 
             evaluateInWorker(
                 obfuscatedCode,
-                (response: number) => {
-                    evaluationResult = response;
+                () => {
                     done();
                 },
                 () => {
                     done();
                 },
                 () => {
+                    evaluationResult = 1;
                     done();
                 },
                 evaluationTimeout

部分文件因文件數量過多而無法顯示