Я не могу использовать Obfuscator.io, чтобы исказить свой JS-скрипт, поскольку он содержит setTimeout внутри функции, которая вызывает сама себя.
MCVE:
function repeater() {
// DO SOME STUFF...
setTimeout(repeater, 100);
}
repeater();
Для воспроизведения требуются пользовательские настройки обфускации:
- Генератор имен идентификаторов: Mangled
- Зарезервированные имена: $ - jQuery
Сообщение об ошибке в Obfuscator.io:
Ошибка: ошибка @postConstruct в классе t: ошибка @postConstruct в классе t: превышен максимальный размер стека вызовов
Я прочитал несколько других вопросов о переполнении стека по этому поводу. Я понимаю, что вызов setTimeout(func) внутри func не на самом деле рекурсия.
Тем не менее, алгоритм Obfuscator.io не справляется с самовызывающейся задержкой setTimeout.
Как мне сделать многократно выполняющуюся функцию, используя setTimeout, не вызывая ее в самой функции? Я не хочу использовать setInterval, потому что хочу, чтобы задержка начиналась каждый раз после запуска кода функции. setInterval игнорирует это.


insert into Obfuscator.io to reproduce issueжирным шрифтом не помогает. Как я уже сказал, вставка кода в obfuscator.io работает хорошо. Результат, например.function _0x19c7c5(){setTimeout(_0x19c7c5,0x64);}_0x19c7c5();или больший код в зависимости от настроек. Но мне не удалось найти ни одной настройки, выдающей данную ошибку, ни при обфускации, ни при запуске полученного кода. - person t.niese   schedule 21.08.2018tranform object keys... И он все еще работает нормально (поскольку в вашем фрагменте кода нет объекта, это нормально, чтобы не заметить никакой разницы). - person Louys Patrice Bessette   schedule 21.08.2018mangledв генераторе имен идентификаторов... Работает нормально. - person Louys Patrice Bessette   schedule 21.08.2018$в качестве зарезервированного имени, Obfuscator.io может запутать ваш код! - person FZs   schedule 24.08.2018+, чтобы добавить зарезервированное имя. - person George   schedule 24.08.2018