SelfDefendingTemplate rewrite without evals

This commit is contained in:
sanex3339
2016-10-31 23:57:44 +03:00
parent 375edc4b3e
commit c5a12732b8
2 changed files with 38 additions and 4 deletions
+1 -1
View File
@@ -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;
@@ -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') })();
})();
`;
}