mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
SelfDefendingTemplate rewrite without evals
This commit is contained in:
Vendored
+1
-1
@@ -3968,7 +3968,7 @@ exports.DomainLockNodeTemplate = DomainLockNodeTemplate;
|
||||
|
||||
var Utils_1 = __webpack_require__(0);
|
||||
function SelfDefendingTemplate() {
|
||||
return '\n (function () { \n var func = function(){return \'dev\';},\n func2 = function () {\n return \'window\';\n };\n \n !Function(' + Utils_1.Utils.stringToUnicode('return/\\w+ *\\(\\) *{\\w+ *[\'|"].+[\'|"];? *}/') + ')().test(func.toString()) ? Function(' + Utils_1.Utils.stringToUnicode('return/(\\\\[x|u](\\w){2,4})+/') + ')().test(func2.toString()) ? [][\'filter\'][\'constructor\'](' + Utils_1.Utils.stringToJSFuck('while') + ' + \'(false){}\')() : [][\'filter\'][\'constructor\'](' + Utils_1.Utils.stringToJSFuck('while') + ' + \'(true){}\')() : [][\'filter\'][\'constructor\'](' + Utils_1.Utils.stringToJSFuck('while') + ' + \'(false){}\')();\n })();\n ';
|
||||
return "\n (function () { \n var func1 = function(){return 'dev';},\n func2 = function () {\n return 'window';\n };\n \n var test1 = function () {\n var regExp = new RegExp(" + Utils_1.Utils.stringToUnicode("return/\\w+ *\\(\\) *{\\w+ *['|\"].+['|\"];? *}/") + ");\n \n return !regExp.test(func1.toString());\n };\n \n var test2 = function () {\n var regExp = new RegExp(" + Utils_1.Utils.stringToUnicode("return/(\\\\[x|u](\\w){2,4})+/") + ");\n \n return regExp.test(func2.toString());\n };\n \n var recursiveFunc1 = function (string) {\n var i = ~1 >> 1 + 255 % 0;\n \n if (string.indexOf(([false]+undefined)[10]) === i) {\n recursiveFunc2(string)\n }\n };\n \n var recursiveFunc2 = function (string) {\n var i = ~-4 >> 1 + 255 % 0;\n \n if (string.indexOf((true+\"\")[3]) !== i) {\n recursiveFunc1(string)\n }\n };\n \n !test1() ? test2() ? (function () { recursiveFunc1('indexOf') })() : (function () { recursiveFunc1('ind\u0435xOf') })() : (function () { recursiveFunc1('indexOf') })();\n })();\n ";
|
||||
}
|
||||
exports.SelfDefendingTemplate = SelfDefendingTemplate;
|
||||
|
||||
|
||||
+37
-3
@@ -1,14 +1,48 @@
|
||||
import { Utils } from '../../../../Utils';
|
||||
|
||||
/**
|
||||
* SelfDefendingTemplate. Enter code in infinity loop.
|
||||
* Notice, that second call to recursiveFunc1('indexOf') has cyrillic `е` character instead latin
|
||||
*
|
||||
* @returns {string}
|
||||
*/
|
||||
export function SelfDefendingTemplate (): string {
|
||||
return `
|
||||
(function () {
|
||||
var func = function(){return 'dev';},
|
||||
var func1 = function(){return 'dev';},
|
||||
func2 = function () {
|
||||
return 'window';
|
||||
};
|
||||
|
||||
!Function(${Utils.stringToUnicode(`return/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/`)})().test(func.toString()) ? Function(${Utils.stringToUnicode(`return/(\\\\[x|u](\\w){2,4})+/`)})().test(func2.toString()) ? []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(false){}')() : []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(true){}')() : []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(false){}')();
|
||||
|
||||
var test1 = function () {
|
||||
var regExp = new RegExp(${Utils.stringToUnicode(`return/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/`)});
|
||||
|
||||
return !regExp.test(func1.toString());
|
||||
};
|
||||
|
||||
var test2 = function () {
|
||||
var regExp = new RegExp(${Utils.stringToUnicode(`return/(\\\\[x|u](\\w){2,4})+/`)});
|
||||
|
||||
return regExp.test(func2.toString());
|
||||
};
|
||||
|
||||
var recursiveFunc1 = function (string) {
|
||||
var i = ~1 >> 1 + 255 % 0;
|
||||
|
||||
if (string.indexOf(([false]+undefined)[10]) === i) {
|
||||
recursiveFunc2(string)
|
||||
}
|
||||
};
|
||||
|
||||
var recursiveFunc2 = function (string) {
|
||||
var i = ~-4 >> 1 + 255 % 0;
|
||||
|
||||
if (string.indexOf((true+"")[3]) !== i) {
|
||||
recursiveFunc1(string)
|
||||
}
|
||||
};
|
||||
|
||||
!test1() ? test2() ? (function () { recursiveFunc1('indexOf') })() : (function () { recursiveFunc1('indеxOf') })() : (function () { recursiveFunc1('indexOf') })();
|
||||
})();
|
||||
`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user