Можно было отключить точки останова и тогда он бы не останавливался на debugger. Там где кнопка продолжить и самая последняя переключает точки останова И в Chrome и firefox такая кнопка есть
Офигенно) Такое в книжках по js не напишут. Сам веб-разработкой не занимаюсь, но из видео можно многое подчеркнуть о том, как работает js в современных браузерах
На самом деле уникальная информация которую автор самостоятельно собирал по крупицам долгие годы, уважение ему. От меня лично вопрос, кроме офф документации, где искать подобного рода ценную информацию и как ее находить?
Только опытом. JS в этом плане очень пластичный... Даже сами разрабы языка могут не всегда предсказать как поведут себя элементы программы в купе. Ну, может автор знает, где энтузиасты делятся своими находками.
Я там для наглядности хотел, чтобы инжектируемый script в head-е остался. А так, да, тампер классика. Но недавно обнаружил, что он не идеален. И даже с директивой document-start можно спроетировать страницу так, чтобы скрипт страницы выполнился первее, чем инжект от тампера. Нужно наверное, будет отдельный ролик по этому кейсу снимать.
31:44 - А есть способ послать экстренный сигнал прекращения? Типу чтобы не закрывать вкладку, а просто прервать выполнение нынешних процессов во вкладке. Иногда нужно, чтобы сохранить прогресс в чем-то.
Спасибо, всегда интересно послушать, в js пока не сильно разбираюсь, но уже в PAWS пробовал через встроенный webview телеги запросами на сервер выполнять задания, кто не знает - там можно было из list брать quest id и потом на сервер отправлять запросы 'completed' и 'claim', начисляло поинты даже в случае, если задание убрали полностью, я так понял, что оно у них на сервере все равно продолжало в кеше хранится. Наверно забанят через пару дней, можно не скрывать.
Вопрос про new Function и eval() вызовы. На сколько мне известно, в вебприложении можно включить настройку Content-Security-Policy, которая будет отвергать любые попытки работы с приведенными выше примерами. Соответственно тут вопрос к telegram, который разрешает до сих пор работать с этими возможностями, верно?
Вполне возможно, что через webpack плагин. Парсер парсит входной скрипт, строит AST и вклинивает в него такие штуки. А может и какой-то обфускатор, который вызыватеся webpack-ом. Т.к. в этих кусках наблюдается запаковка строк в массив, свойственная обфускаторам.
кстати можно сделать проверку потом типа что if ("debugger" !== "debu"+"gger") throw new Error("") и тогда если ты этот скрипт заинжектишь, то у тебя ничего не получится. Там будет if ("" !== "debu"+"gger") throw new Error("") Есть только один выход: полностью делать парсинг языка Javascript P.S.: Я заметил, там в этом сайте уже такое есть 😂 P.S. v.2.0: Это уже вопрос к разрабам chrome, почему debugger; обрабатывается быстрее с закрытым devtools
@@kredwiЭто видео, его можно смотреть сколько хочешь раз, пока не поймёшь. Я замучился перематывать видео. Ощущение что меня, как зрителя, принимают за дебила
Возник вопрос, а что если в самом начале попасть на deber, через стек вызовов перейти на точку где он вызывается, вырезать его, сохранить и перезагрузить.
Так это же ты его для себя вырезаешь, он на сервере и вызывается каждый раз при запуске мини апп, тут же код через программу инжектится ещё на загрузке и сам вызов в ошибку превращает. Не претендую на истину.
микрофон иногда хрипит, например на 29:21 или 29:28 или 29:47, сначала начал копаться в своей системе, но похоже проблема не в ней к контенту вопросов нет, жду каждый новый ролик
Одни ставят защиту, другие ломают ее. Интересно а если все функции будут вызывать в начале так дебагер и там будет стоять try catch, то как с этим бороться.
насчет хейта dev toos лисы - там для верстальщиков почти ничего нет, dev tools хрома выносит его в перед ногами. Но вот для того кто на js пишет dev tools лисы намного лучше
Технология такая: команда дебаг вызывается постоянно, но в нормальном режиме она не исполняется, а в режиме девтулза постоянно вызывает приостановку выполнения. Так что проверки на открытый девтулз как таковой нету. При включении игнорирования дебаг в девтулзе происходят интереные вещи, ведь оказывается что процесс игнорирование не так прост: он на лету удаляет команду дебаг из кода, что в свою очередь вызывает срабатывание ловушки в яйцеграме.
но если разработчики добавят нерекурсивную проверку с try catch что new Function("debugger") должен НЕ возвращаться ошибку, то такая система обхода перестанет работать
Автор, а как вы учили жс, столь основательное понимание работы обьектов с видеокурсов не почерпнешь... Видно что книжки читали и вдумчиво со всем разбирались. Не поделитесь списком хорошей литературы? 😊
я думаю сама концепция создания такого типа ловушек не эффективная, код может и интересно написан но толку с него? мы же знаем что на любой болт есть своя гайка :) Напишут еще сложнее защиту, появится еще интереснее видео о взломе. Намного эффективнее было бы встраивать такие хитрые конструкции которые очень сложно заметить, но которые будут оповещать сервер что игра запущена с нарушениями правил, и после, эти акаунты бото ферм будут просто пачками блокироваться, и для этого будут вполне обоснованные причины - нарушение правил игры. А может в этой игре и есть такие блоки кода которые сообщают все что нужно серверу и этот акаунт уже с красной меткой.
Да, по факту такое можно сделать, только вы не учли одного: бюджет. Обычно под такие приложения выделяется один мидл фронтенд разработчик, и один джун-джун+ бэкенд разработчик. Почему именно мидл? Потому что обычно мидлы, мидлы+ знают концепцию подобных защит, а джуны как то не задумываются. И по факту, на такие "приложения" выделяют очень мало человеческих ресурсов, делая всё в крайне сжатые сроки. Ну и сами себе задайте вопрос: какая защита на стороне бэка? Второй вопрос - люди просто могут случайно открыть консоль и хоп - бан! Помню сам случайно когда ещё не занимался программированием нажимал F12 либо просто ПКМ и Inspect либо "Посмотреть код" на русском. Представляете сколько разработчикам придётся принимать апелляция на подобные случаи, а ведь ещё может полететь слух что это приложение просто скам для мамонтов. И наконец третье - почему это не выгодно. Да всё просто! Чем больше что-то запрещают - тем больше этого хочется. Первый акк заблокировали - зарегал новый, скачал исходный код, изучаешь, и пишешь взлом (так взломы, читы и пишутся если что). Тем более, тут даже не надо знать концепций ревёрс-инженеринга, это же тебе не приложение там какое-то на Qt и плюсах, это обычный JavaScript с открытым исходным кодом. Подобный прицнип защиты подогреет интерес десятки тысяч программистов, и просто заставит их начать разбираться в подобных обходах и системах анти-бота, потому что разработчики постарались над своим проектом, а если постарались - значит у него есть будущее) Всё просто
Код для Tampermonkey скрипта:
// ==UserScript==
// @name Yaytsogram
// @namespace tampermonkey.net/
// @version 2024-12-15
// @description try to take over the world!
// @author You
// @match yaytsogram.com/*
// @grant none
// @icon www.google.com/s2/favicons?sz=64&domain=yaytsogram.com
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
window.originalFunction = window.Function;
window.Function = function(...args) {
if(args.find(el => el.includes('debugger'))) {
throw new Error()
}
return window.originalFunction.apply(this, args)
};
window.originalFunction.prototype.constructor = window.Function
})();
Можно было отключить точки останова и тогда он бы не останавливался на debugger. Там где кнопка продолжить и самая последняя переключает точки останова
И в Chrome и firefox такая кнопка есть
ещё бы к этому коду обход проверки на устройство
Мега редкий контент, сам в эти игры не играю и js не знаю, но посмотрел с удовольствием, спасибо!
Офигенно) Такое в книжках по js не напишут.
Сам веб-разработкой не занимаюсь, но из видео можно многое подчеркнуть о том, как работает js в современных браузерах
На самом деле уникальная информация которую автор самостоятельно собирал по крупицам долгие годы, уважение ему. От меня лично вопрос, кроме офф документации, где искать подобного рода ценную информацию и как ее находить?
Посмотрел 6 минут говна, дальше не смог
Только опытом. JS в этом плане очень пластичный... Даже сами разрабы языка могут не всегда предсказать как поведут себя элементы программы в купе. Ну, может автор знает, где энтузиасты делятся своими находками.
Исходный код Chromium
Да эти все игры создают ради скама и почти не занимаются защитой, тк 99% игроков ничего не получит или получит меньше чем вложил
Именно так
Согл, вот бы все такие игры поставили туда фропей ещё.......
наконец то увидел применение тампера. задавался вопросом, почему не он еще с момента, когда ты постман показывал на какой-то тапалке
Я там для наглядности хотел, чтобы инжектируемый script в head-е остался.
А так, да, тампер классика.
Но недавно обнаружил, что он не идеален. И даже с директивой document-start можно спроетировать страницу так, чтобы скрипт страницы выполнился первее, чем инжект от тампера. Нужно наверное, будет отдельный ролик по этому кейсу снимать.
@@tashchan выложите пожалуйста, тематика интересна и актуальна
p.s. с наступающим 2025 годом!
спасибо тебе огромное. Смотреть такой редкий контент - кайф!
Спасибо за работу) всегда жду ваши новые выпуски!
Прикольно было бы увидеть как можно улучшить защиту или про типы защиты. А так очень познавательный ролик большое спасибо автору ❤
Мне нравится, что фоновая музыка из шоу Magic Secrets Revealed
хочется узнать больше о тебе автор этого видео, спасибо за такой контент.
Всегда поражало насколько в хроме офигенный дебаггер, там еще чуть-чуть и он станет IDE.
Ох, как в старые добрые. Хотя это было полгода назад
мега годно. хорошо, что ты начал делать подобный контент
31:44 - А есть способ послать экстренный сигнал прекращения? Типу чтобы не закрывать вкладку, а просто прервать выполнение нынешних процессов во вкладке. Иногда нужно, чтобы сохранить прогресс в чем-то.
Я нашел самый оптимальный вариант для этих тапалок, теперь абсолютно все боты запускаются в браузере, для фермы лучшее решение
В Firefox'е была включена галочка "Pause on debugger statements". Что будет, если её снять?
спасибо, это однозначно годный контент, особенно для такого нубаря как я)
Спасибо, всегда интересно послушать, в js пока не сильно разбираюсь, но уже в PAWS пробовал через встроенный webview телеги запросами на сервер выполнять задания, кто не знает - там можно было из list брать quest id и потом на сервер отправлять запросы 'completed' и 'claim', начисляло поинты даже в случае, если задание убрали полностью, я так понял, что оно у них на сервере все равно продолжало в кеше хранится. Наверно забанят через пару дней, можно не скрывать.
Видео крутое не обрати внимание на умников которые не cмогли зайти но хейтить каждую мелочь. Ждем ещё такие видосы )
Вопрос про new Function и eval() вызовы. На сколько мне известно, в вебприложении можно включить настройку Content-Security-Policy, которая будет отвергать любые попытки работы с приведенными выше примерами.
Соответственно тут вопрос к telegram, который разрешает до сих пор работать с этими возможностями, верно?
А как они такую защиту сделали? Это через вебпак подставляется такая функция в конец других функций?
Вполне возможно, что через webpack плагин. Парсер парсит входной скрипт, строит AST и вклинивает в него такие штуки.
А может и какой-то обфускатор, который вызыватеся webpack-ом. Т.к. в этих кусках наблюдается запаковка строк в массив, свойственная обфускаторам.
кстати можно сделать проверку потом типа что if ("debugger" !== "debu"+"gger") throw new Error("") и тогда если ты этот скрипт заинжектишь, то у тебя ничего не получится. Там будет if ("" !== "debu"+"gger") throw new Error("") Есть только один выход: полностью делать парсинг языка Javascript
P.S.: Я заметил, там в этом сайте уже такое есть 😂
P.S. v.2.0: Это уже вопрос к разрабам chrome, почему debugger; обрабатывается быстрее с закрытым devtools
Скорее всего с закрытым devtools debugger вообще не обрабатывается, поэтому быстрее
Это видео не должно было длиться почти час 🥱
Он по 15 раз повторяет одно и то же
@@SergeiD925 чтобы даже дуб понял
@@kredwiЭто видео, его можно смотреть сколько хочешь раз, пока не поймёшь. Я замучился перематывать видео. Ощущение что меня, как зрителя, принимают за дебила
ставьте скорость х2
Длинное видео, просмотрел с паузой, спасибо уважаемый Арам, очень познавательно
Возник вопрос, а что если в самом начале попасть на deber, через стек вызовов перейти на точку где он вызывается, вырезать его, сохранить и перезагрузить.
Так это же ты его для себя вырезаешь, он на сервере и вызывается каждый раз при запуске мини апп, тут же код через программу инжектится ещё на загрузке и сам вызов в ошибку превращает. Не претендую на истину.
ну, как дальше по видео показали, их довольно много и не все получится найти, так как сигнатуры чутка поличаются. но в теории можно конечно
микрофон иногда хрипит, например на 29:21 или 29:28 или 29:47, сначала начал копаться в своей системе, но похоже проблема не в ней
к контенту вопросов нет, жду каждый новый ролик
Одни ставят защиту, другие ломают ее. Интересно а если все функции будут вызывать в начале так дебагер и там будет стоять try catch, то как с этим бороться.
Какая-то гонка вооружений получатся. Как тогда модернизировать антитулинг защиту?
Зачем вообще защищаться на фронте?
А зачем это все? Для чего? Чтобы заинжектить скрипт, который будет автоматически тапать?
насчет хейта dev toos лисы - там для верстальщиков почти ничего нет, dev tools хрома выносит его в перед ногами. Но вот для того кто на js пишет dev tools лисы намного лучше
видик интересный, ток не совсем понятно, в каком месте происходит проверка на открытый девтулз
Технология такая: команда дебаг вызывается постоянно, но в нормальном режиме она не исполняется, а в режиме девтулза постоянно вызывает приостановку выполнения. Так что проверки на открытый девтулз как таковой нету. При включении игнорирования дебаг в девтулзе происходят интереные вещи, ведь оказывается что процесс игнорирование не так прост: он на лету удаляет команду дебаг из кода, что в свою очередь вызывает срабатывание ловушки в яйцеграме.
@@Snayper44 чет я и забыл, что дебаггер срабатывает ток при открытой консоле
15:53 🤣
но если разработчики добавят нерекурсивную проверку с try catch что new Function("debugger") должен НЕ возвращаться ошибку, то такая система обхода перестанет работать
Тогда будем другую херню искать))
Надо музыку на фоне тише делать
Да, немного не рассчитал с громкостью
Скращай, блин, пояснительную воду... Тут же не собрались люди, которые дебагера в лицо не видели.
6:03 ты че, там есть такой функционал
Автор, а как вы учили жс, столь основательное понимание работы обьектов с видеокурсов не почерпнешь... Видно что книжки читали и вдумчиво со всем разбирались. Не поделитесь списком хорошей литературы? 😊
Практика
Ну, и впечатление словно в js специально напихано функционала, чтобы можно было таким заниматься
Почему голос напоминает резтопа но с нормальным микрофоном
я думаю сама концепция создания такого типа ловушек не эффективная, код может и интересно написан но толку с него? мы же знаем что на любой болт есть своя гайка :) Напишут еще сложнее защиту, появится еще интереснее видео о взломе. Намного эффективнее было бы встраивать такие хитрые конструкции которые очень сложно заметить, но которые будут оповещать сервер что игра запущена с нарушениями правил, и после, эти акаунты бото ферм будут просто пачками блокироваться, и для этого будут вполне обоснованные причины - нарушение правил игры.
А может в этой игре и есть такие блоки кода которые сообщают все что нужно серверу и этот акаунт уже с красной меткой.
Если человек все предусмотрел, то это невозможно определить
Да, по факту такое можно сделать, только вы не учли одного: бюджет. Обычно под такие приложения выделяется один мидл фронтенд разработчик, и один джун-джун+ бэкенд разработчик. Почему именно мидл? Потому что обычно мидлы, мидлы+ знают концепцию подобных защит, а джуны как то не задумываются.
И по факту, на такие "приложения" выделяют очень мало человеческих ресурсов, делая всё в крайне сжатые сроки. Ну и сами себе задайте вопрос: какая защита на стороне бэка?
Второй вопрос - люди просто могут случайно открыть консоль и хоп - бан! Помню сам случайно когда ещё не занимался программированием нажимал F12 либо просто ПКМ и Inspect либо "Посмотреть код" на русском. Представляете сколько разработчикам придётся принимать апелляция на подобные случаи, а ведь ещё может полететь слух что это приложение просто скам для мамонтов.
И наконец третье - почему это не выгодно. Да всё просто! Чем больше что-то запрещают - тем больше этого хочется.
Первый акк заблокировали - зарегал новый, скачал исходный код, изучаешь, и пишешь взлом (так взломы, читы и пишутся если что). Тем более, тут даже не надо знать концепций ревёрс-инженеринга, это же тебе не приложение там какое-то на Qt и плюсах, это обычный JavaScript с открытым исходным кодом.
Подобный прицнип защиты подогреет интерес десятки тысяч программистов, и просто заставит их начать разбираться в подобных обходах и системах анти-бота, потому что разработчики постарались над своим проектом, а если постарались - значит у него есть будущее) Всё просто
I could not understand bro what is it? opening tg bot in web?
This video is about bypassing custom anti-tool protection for beginners.
какие нафиг 50 минут видео. в хроме есть кнопка чтоб игнорировать дебагеры
🗿 🗿 🗿
Ага. Видео как раз объясняет, почему эта кнопка не работает здесь
🤣