[JS] Рекурсивная ловушка DevTools на примере Yaytsogram

แชร์
ฝัง
  • เผยแพร่เมื่อ 2 ม.ค. 2025

ความคิดเห็น • 76

  • @tashchan
    @tashchan  6 วันที่ผ่านมา +11

    Код для 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
    })();

    • @holodina
      @holodina 5 วันที่ผ่านมา

      Можно было отключить точки останова и тогда он бы не останавливался на debugger. Там где кнопка продолжить и самая последняя переключает точки останова
      И в Chrome и firefox такая кнопка есть

    • @gungrave12
      @gungrave12 4 วันที่ผ่านมา

      ещё бы к этому коду обход проверки на устройство

  • @НикитаХабибуллин-ю3ы
    @НикитаХабибуллин-ю3ы 5 วันที่ผ่านมา +16

    Мега редкий контент, сам в эти игры не играю и js не знаю, но посмотрел с удовольствием, спасибо!

  • @DarthMalok
    @DarthMalok 5 วันที่ผ่านมา +8

    Офигенно) Такое в книжках по js не напишут.
    Сам веб-разработкой не занимаюсь, но из видео можно многое подчеркнуть о том, как работает js в современных браузерах

  • @Dazzler0905
    @Dazzler0905 4 วันที่ผ่านมา +3

    На самом деле уникальная информация которую автор самостоятельно собирал по крупицам долгие годы, уважение ему. От меня лично вопрос, кроме офф документации, где искать подобного рода ценную информацию и как ее находить?

    • @drice558
      @drice558 4 วันที่ผ่านมา

      Посмотрел 6 минут говна, дальше не смог

    • @bidanfullko1
      @bidanfullko1 3 วันที่ผ่านมา +1

      Только опытом. JS в этом плане очень пластичный... Даже сами разрабы языка могут не всегда предсказать как поведут себя элементы программы в купе. Ну, может автор знает, где энтузиасты делятся своими находками.

    • @two-spikes
      @two-spikes 19 ชั่วโมงที่ผ่านมา

      Исходный код Chromium

  • @sashair
    @sashair 6 วันที่ผ่านมา +20

    Да эти все игры создают ради скама и почти не занимаются защитой, тк 99% игроков ничего не получит или получит меньше чем вложил

    • @tashchan
      @tashchan  6 วันที่ผ่านมา +3

      Именно так

    • @gastmoney
      @gastmoney 5 วันที่ผ่านมา

      Согл, вот бы все такие игры поставили туда фропей ещё.......

  • @TimaDeveloper
    @TimaDeveloper 5 วันที่ผ่านมา +5

    наконец то увидел применение тампера. задавался вопросом, почему не он еще с момента, когда ты постман показывал на какой-то тапалке

    • @tashchan
      @tashchan  5 วันที่ผ่านมา +4

      Я там для наглядности хотел, чтобы инжектируемый script в head-е остался.
      А так, да, тампер классика.
      Но недавно обнаружил, что он не идеален. И даже с директивой document-start можно спроетировать страницу так, чтобы скрипт страницы выполнился первее, чем инжект от тампера. Нужно наверное, будет отдельный ролик по этому кейсу снимать.

    • @adr1enette
      @adr1enette 2 วันที่ผ่านมา

      @@tashchan выложите пожалуйста, тематика интересна и актуальна
      p.s. с наступающим 2025 годом!

  • @Jmp3RR
    @Jmp3RR 5 วันที่ผ่านมา +1

    спасибо тебе огромное. Смотреть такой редкий контент - кайф!

  • @leitooleg
    @leitooleg 5 วันที่ผ่านมา +1

    Спасибо за работу) всегда жду ваши новые выпуски!

  • @RustyWorker
    @RustyWorker วันที่ผ่านมา

    Прикольно было бы увидеть как можно улучшить защиту или про типы защиты. А так очень познавательный ролик большое спасибо автору ❤

  • @harry-smith404
    @harry-smith404 20 ชั่วโมงที่ผ่านมา

    Мне нравится, что фоновая музыка из шоу Magic Secrets Revealed

  • @ppv8392
    @ppv8392 4 วันที่ผ่านมา

    хочется узнать больше о тебе автор этого видео, спасибо за такой контент.

  • @maksikgregory4988
    @maksikgregory4988 5 วันที่ผ่านมา +2

    Всегда поражало насколько в хроме офигенный дебаггер, там еще чуть-чуть и он станет IDE.

  • @jdk_h
    @jdk_h 6 วันที่ผ่านมา +3

    Ох, как в старые добрые. Хотя это было полгода назад

  • @_test_test
    @_test_test 3 วันที่ผ่านมา

    мега годно. хорошо, что ты начал делать подобный контент

  • @bidanfullko1
    @bidanfullko1 3 วันที่ผ่านมา

    31:44 - А есть способ послать экстренный сигнал прекращения? Типу чтобы не закрывать вкладку, а просто прервать выполнение нынешних процессов во вкладке. Иногда нужно, чтобы сохранить прогресс в чем-то.

  • @JhonyEight
    @JhonyEight 5 วันที่ผ่านมา +1

    Я нашел самый оптимальный вариант для этих тапалок, теперь абсолютно все боты запускаются в браузере, для фермы лучшее решение

  • @Yazhrupizza
    @Yazhrupizza 2 วันที่ผ่านมา +1

    В Firefox'е была включена галочка "Pause on debugger statements". Что будет, если её снять?

  • @antoshabrain
    @antoshabrain 4 วันที่ผ่านมา

    спасибо, это однозначно годный контент, особенно для такого нубаря как я)

  • @denamix6926
    @denamix6926 5 วันที่ผ่านมา

    Спасибо, всегда интересно послушать, в js пока не сильно разбираюсь, но уже в PAWS пробовал через встроенный webview телеги запросами на сервер выполнять задания, кто не знает - там можно было из list брать quest id и потом на сервер отправлять запросы 'completed' и 'claim', начисляло поинты даже в случае, если задание убрали полностью, я так понял, что оно у них на сервере все равно продолжало в кеше хранится. Наверно забанят через пару дней, можно не скрывать.

  • @seonshinei
    @seonshinei 5 วันที่ผ่านมา

    Видео крутое не обрати внимание на умников которые не cмогли зайти но хейтить каждую мелочь. Ждем ещё такие видосы )

  • @Rendar2slcz
    @Rendar2slcz วันที่ผ่านมา

    Вопрос про new Function и eval() вызовы. На сколько мне известно, в вебприложении можно включить настройку Content-Security-Policy, которая будет отвергать любые попытки работы с приведенными выше примерами.
    Соответственно тут вопрос к telegram, который разрешает до сих пор работать с этими возможностями, верно?

  • @anton79817
    @anton79817 5 วันที่ผ่านมา +2

    А как они такую защиту сделали? Это через вебпак подставляется такая функция в конец других функций?

    • @tashchan
      @tashchan  5 วันที่ผ่านมา +2

      Вполне возможно, что через webpack плагин. Парсер парсит входной скрипт, строит AST и вклинивает в него такие штуки.
      А может и какой-то обфускатор, который вызыватеся webpack-ом. Т.к. в этих кусках наблюдается запаковка строк в массив, свойственная обфускаторам.

  • @two-spikes
    @two-spikes 19 ชั่วโมงที่ผ่านมา

    кстати можно сделать проверку потом типа что if ("debugger" !== "debu"+"gger") throw new Error("") и тогда если ты этот скрипт заинжектишь, то у тебя ничего не получится. Там будет if ("" !== "debu"+"gger") throw new Error("") Есть только один выход: полностью делать парсинг языка Javascript
    P.S.: Я заметил, там в этом сайте уже такое есть 😂
    P.S. v.2.0: Это уже вопрос к разрабам chrome, почему debugger; обрабатывается быстрее с закрытым devtools

    • @harry-smith404
      @harry-smith404 6 ชั่วโมงที่ผ่านมา

      Скорее всего с закрытым devtools debugger вообще не обрабатывается, поэтому быстрее

  • @Georgggg
    @Georgggg 5 วันที่ผ่านมา +4

    Это видео не должно было длиться почти час 🥱

    • @SergeiD925
      @SergeiD925 5 วันที่ผ่านมา +1

      Он по 15 раз повторяет одно и то же

    • @kredwi
      @kredwi 5 วันที่ผ่านมา +1

      @@SergeiD925 чтобы даже дуб понял

    • @SergeiD925
      @SergeiD925 5 วันที่ผ่านมา

      @@kredwiЭто видео, его можно смотреть сколько хочешь раз, пока не поймёшь. Я замучился перематывать видео. Ощущение что меня, как зрителя, принимают за дебила

    • @Recycling-ey1yc
      @Recycling-ey1yc 5 วันที่ผ่านมา +1

      ставьте скорость х2

  • @kitN
    @kitN 5 วันที่ผ่านมา

    Длинное видео, просмотрел с паузой, спасибо уважаемый Арам, очень познавательно

  • @mr.alexhackchannel7368
    @mr.alexhackchannel7368 5 วันที่ผ่านมา

    Возник вопрос, а что если в самом начале попасть на deber, через стек вызовов перейти на точку где он вызывается, вырезать его, сохранить и перезагрузить.

    • @denamix6926
      @denamix6926 5 วันที่ผ่านมา +1

      Так это же ты его для себя вырезаешь, он на сервере и вызывается каждый раз при запуске мини апп, тут же код через программу инжектится ещё на загрузке и сам вызов в ошибку превращает. Не претендую на истину.

    • @_test_test
      @_test_test 2 วันที่ผ่านมา

      ну, как дальше по видео показали, их довольно много и не все получится найти, так как сигнатуры чутка поличаются. но в теории можно конечно

  • @Topper.Harley
    @Topper.Harley 5 วันที่ผ่านมา

    микрофон иногда хрипит, например на 29:21 или 29:28 или 29:47, сначала начал копаться в своей системе, но похоже проблема не в ней
    к контенту вопросов нет, жду каждый новый ролик

  • @vlllll5489
    @vlllll5489 4 วันที่ผ่านมา

    Одни ставят защиту, другие ломают ее. Интересно а если все функции будут вызывать в начале так дебагер и там будет стоять try catch, то как с этим бороться.

  • @cherimolah9493
    @cherimolah9493 5 วันที่ผ่านมา

    Какая-то гонка вооружений получатся. Как тогда модернизировать антитулинг защиту?

    • @Katar1x
      @Katar1x 5 วันที่ผ่านมา

      Зачем вообще защищаться на фронте?

  • @GELSAV777
    @GELSAV777 4 วันที่ผ่านมา

    А зачем это все? Для чего? Чтобы заинжектить скрипт, который будет автоматически тапать?

  • @sergozar
    @sergozar 4 วันที่ผ่านมา

    насчет хейта dev toos лисы - там для верстальщиков почти ничего нет, dev tools хрома выносит его в перед ногами. Но вот для того кто на js пишет dev tools лисы намного лучше

  • @DreamFall1123
    @DreamFall1123 5 วันที่ผ่านมา

    видик интересный, ток не совсем понятно, в каком месте происходит проверка на открытый девтулз

    • @Snayper44
      @Snayper44 5 วันที่ผ่านมา +1

      Технология такая: команда дебаг вызывается постоянно, но в нормальном режиме она не исполняется, а в режиме девтулза постоянно вызывает приостановку выполнения. Так что проверки на открытый девтулз как таковой нету. При включении игнорирования дебаг в девтулзе происходят интереные вещи, ведь оказывается что процесс игнорирование не так прост: он на лету удаляет команду дебаг из кода, что в свою очередь вызывает срабатывание ловушки в яйцеграме.

    • @DreamFall1123
      @DreamFall1123 5 วันที่ผ่านมา

      @@Snayper44 чет я и забыл, что дебаггер срабатывает ток при открытой консоле

  • @room5896
    @room5896 3 วันที่ผ่านมา

    15:53 🤣

  • @andreipetkun6587
    @andreipetkun6587 4 วันที่ผ่านมา

    но если разработчики добавят нерекурсивную проверку с try catch что new Function("debugger") должен НЕ возвращаться ошибку, то такая система обхода перестанет работать

    • @bidanfullko1
      @bidanfullko1 3 วันที่ผ่านมา

      Тогда будем другую херню искать))

  • @Comm1ted
    @Comm1ted 5 วันที่ผ่านมา

    Надо музыку на фоне тише делать

    • @tashchan
      @tashchan  5 วันที่ผ่านมา +1

      Да, немного не рассчитал с громкостью

  • @bidanfullko1
    @bidanfullko1 3 วันที่ผ่านมา +1

    Скращай, блин, пояснительную воду... Тут же не собрались люди, которые дебагера в лицо не видели.

  • @sergozar
    @sergozar 4 วันที่ผ่านมา

    6:03 ты че, там есть такой функционал

  • @maksikgregory4988
    @maksikgregory4988 5 วันที่ผ่านมา

    Автор, а как вы учили жс, столь основательное понимание работы обьектов с видеокурсов не почерпнешь... Видно что книжки читали и вдумчиво со всем разбирались. Не поделитесь списком хорошей литературы? 😊

    • @jdk_h
      @jdk_h 5 วันที่ผ่านมา

      Практика

  • @harry-smith404
    @harry-smith404 20 ชั่วโมงที่ผ่านมา

    Ну, и впечатление словно в js специально напихано функционала, чтобы можно было таким заниматься

  • @PAPENOK
    @PAPENOK 4 วันที่ผ่านมา

    Почему голос напоминает резтопа но с нормальным микрофоном

  • @maksikgregory4988
    @maksikgregory4988 5 วันที่ผ่านมา +1

    я думаю сама концепция создания такого типа ловушек не эффективная, код может и интересно написан но толку с него? мы же знаем что на любой болт есть своя гайка :) Напишут еще сложнее защиту, появится еще интереснее видео о взломе. Намного эффективнее было бы встраивать такие хитрые конструкции которые очень сложно заметить, но которые будут оповещать сервер что игра запущена с нарушениями правил, и после, эти акаунты бото ферм будут просто пачками блокироваться, и для этого будут вполне обоснованные причины - нарушение правил игры.
    А может в этой игре и есть такие блоки кода которые сообщают все что нужно серверу и этот акаунт уже с красной меткой.

    • @jdk_h
      @jdk_h 5 วันที่ผ่านมา

      Если человек все предусмотрел, то это невозможно определить

    • @jjbitya5241
      @jjbitya5241 5 วันที่ผ่านมา +2

      Да, по факту такое можно сделать, только вы не учли одного: бюджет. Обычно под такие приложения выделяется один мидл фронтенд разработчик, и один джун-джун+ бэкенд разработчик. Почему именно мидл? Потому что обычно мидлы, мидлы+ знают концепцию подобных защит, а джуны как то не задумываются.
      И по факту, на такие "приложения" выделяют очень мало человеческих ресурсов, делая всё в крайне сжатые сроки. Ну и сами себе задайте вопрос: какая защита на стороне бэка?
      Второй вопрос - люди просто могут случайно открыть консоль и хоп - бан! Помню сам случайно когда ещё не занимался программированием нажимал F12 либо просто ПКМ и Inspect либо "Посмотреть код" на русском. Представляете сколько разработчикам придётся принимать апелляция на подобные случаи, а ведь ещё может полететь слух что это приложение просто скам для мамонтов.
      И наконец третье - почему это не выгодно. Да всё просто! Чем больше что-то запрещают - тем больше этого хочется.
      Первый акк заблокировали - зарегал новый, скачал исходный код, изучаешь, и пишешь взлом (так взломы, читы и пишутся если что). Тем более, тут даже не надо знать концепций ревёрс-инженеринга, это же тебе не приложение там какое-то на Qt и плюсах, это обычный JavaScript с открытым исходным кодом.
      Подобный прицнип защиты подогреет интерес десятки тысяч программистов, и просто заставит их начать разбираться в подобных обходах и системах анти-бота, потому что разработчики постарались над своим проектом, а если постарались - значит у него есть будущее) Всё просто

  • @MonoIiith
    @MonoIiith 5 วันที่ผ่านมา +1

    I could not understand bro what is it? opening tg bot in web?

    • @Katar1x
      @Katar1x 5 วันที่ผ่านมา

      This video is about bypassing custom anti-tool protection for beginners.

  • @ilyaChuk
    @ilyaChuk 5 วันที่ผ่านมา

    какие нафиг 50 минут видео. в хроме есть кнопка чтоб игнорировать дебагеры

    • @tashchan
      @tashchan  5 วันที่ผ่านมา +6

      🗿 🗿 🗿
      Ага. Видео как раз объясняет, почему эта кнопка не работает здесь

    • @Katar1x
      @Katar1x 5 วันที่ผ่านมา

      🤣