Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Гайд Как взламывался plaguecheat

micropenis Company
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
7 Ноя 2023
Сообщения
93
Реакции
62
Как взламывался plaguecheat



Вступление
Мозольный привет. Простенькая статья на тему того, как взламывался чит buttplag(ue)CC. Никогда до этого подобного контента на югейме не делал, культ шитпостинга все дела, но под новый предоставилась такая возможность да делать особо нехуй вот выдавил из себя пару абзацев.
1766577523920.png



Hardware-привязки

KUSER_SHARED_DATA
Автор защиты решил взять реверсеров не качеством, а количеством - и напихал 50k+ проверок по KUSER_SHARED_DATA во всех видах и формах: под VMProtect-виртуализацией, под MBA-блоками. Но оказалось не всё так солнечно, как он ожидал.

1766576656209.png

1766576674671.png

Не совсем ясно, почему автор защиты не засунул сам адрес KUSER_SHARED_DATA под MBA. В этой обфусцированной проверки не имеет никакого смысла, кроме как хвастовство бездарными OLLVM-пассами.

Вышеуказанные проверки были найдены трейсером на основе Unicorn (написан за вечер и бутылку водки со спрайтом).
И в первом, и во втором примере это обходится обычной подменой результата чтения KUSER_SHARED_DATA.

1766576685092.png

В этом примере автору защиты не дали возможности опозориться: логика вычисления адреса и сравнение оказались под виртой. Но это не стало проблемой - последние полгода я трудился над универсальным девиртуализатором на основе форка Mergen, и Plague показался отличным тестовым полигоном.

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



Проверка на стэк
Помимо 50k банальных чеков на KUSER_SHARED_DATA, автор защиты решил добавить “оригинальность” - проверку адреса стэка в main-потоке и в потоке чита. На основе адреса стэка происходила расшифровка дальнейших констант и адресов.

1766576697329.png

При неверной расшифровке ret возвращал в невалидное адресное пространство.

Благодаря девирту я нашёл и обошёл это: простая подмена адреса стэка на старте потока игры и чита.

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



Импорты
Фикс импортов тоже не представлял из себя ничего сложного: я выделял память по их изначальным адресам с дампа и ставил jump на уже рабочий импорт.

1766576722502.png



Заключение
Не считая времени на написание тулинга: на кряк потратил 2 года 3 месяца 14 недель 88 дней, было выпито около 57 литров водки.

Поздравляю всех с наступающим Новым годом и желаю автору разобраться, какие проверки существуют помимо KUSER_SHARED_DATA, и как всё же применять MBA-блоки.
 

Вложения

  • 1766576967053.png
    1766576967053.png
    836.2 KB · Просмотры: 193
  • 1766576949209.png
    1766576949209.png
    836.2 KB · Просмотры: 110
  • 1766576938080.png
    1766576938080.png
    836.2 KB · Просмотры: 111
  • 1766576736628.png
    1766576736628.png
    174.8 KB · Просмотры: 190
откуда ты знаешь так ассемблер ??? как ты обошёл кастомные регистры господина пермякова ? где найти девиртуализатор на основе ИИ и мергена ? когда в кс 1.6 ?

крутая статья мне понравилось. ждём маппер на гитхабе. всех с наступающим!
 
откуда ты знаешь так ассемблер ??? как ты обошёл кастомные регистры господина пермякова ? где найти девиртуализатор на основе ИИ и мергена ? когда в кс 1.6 ?

крутая статья мне понравилось. ждём маппер на гитхабе. всех с наступающим!
Для меня это удивительно что простые школьники как ты и миша так легко запускают кёрнел и так же легко разбирают любые инструкции асма.
 
откуда ты знаешь так ассемблер ??? как ты обошёл кастомные регистры господина пермякова ? где найти девиртуализатор на основе ИИ и мергена ? когда в кс 1.6 ?

крутая статья мне понравилось. ждём маппер на гитхабе. всех с наступающим!
го седня
 
Как взламывался plaguecheat



Вступление
Мозольный привет. Простенькая статья на тему того, как взламывался чит buttplag(ue)CC. Никогда до этого подобного контента на югейме не делал, культ шитпостинга все дела, но под новый предоставилась такая возможность да делать особо нехуй вот выдавил из себя пару абзацев.
Посмотреть вложение 322840


Hardware-привязки

KUSER_SHARED_DATA
Автор защиты решил взять реверсеров не качеством, а количеством - и напихал 50k+ проверок по KUSER_SHARED_DATA во всех видах и формах: под VMProtect-виртуализацией, под MBA-блоками. Но оказалось не всё так солнечно, как он ожидал.



Не совсем ясно, почему автор защиты не засунул сам адрес KUSER_SHARED_DATA под MBA. В этой обфусцированной проверки не имеет никакого смысла, кроме как хвастовство бездарными OLLVM-пассами.

Вышеуказанные проверки были найдены трейсером на основе Unicorn (написан за вечер и бутылку водки со спрайтом).
И в первом, и во втором примере это обходится обычной подменой результата чтения KUSER_SHARED_DATA.


В этом примере автору защиты не дали возможности опозориться: логика вычисления адреса и сравнение оказались под виртой. Но это не стало проблемой - последние полгода я трудился над универсальным девиртуализатором на основе форка Mergen, и Plague показался отличным тестовым полигоном.

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



Проверка на стэк
Помимо 50k банальных чеков на KUSER_SHARED_DATA, автор защиты решил добавить “оригинальность” - проверку адреса стэка в main-потоке и в потоке чита. На основе адреса стэка происходила расшифровка дальнейших констант и адресов.


При неверной расшифровке ret возвращал в невалидное адресное пространство.

Благодаря девирту я нашёл и обошёл это: простая подмена адреса стэка на старте потока игры и чита.





Импорты
Фикс импортов тоже не представлял из себя ничего сложного: я выделял память по их изначальным адресам с дампа и ставил jump на уже рабочий импорт.




Заключение
Не считая времени на написание тулинга: на кряк потратил 2 года 3 месяца 14 недель 88 дней, было выпито около 57 литров водки.

Поздравляю всех с наступающим Новым годом и желаю автору разобраться, какие проверки существуют помимо KUSER_SHARED_DATA, и как всё же применять MBA-блоки.
прикольно, застрелите меня
 
Назад
Сверху Снизу