Бесследное чтение памяти программы

Тема в разделе "WASM.ZEN", создана пользователем LastNoob, 28 дек 2019.

  1. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    HoShiMin,

    > Но перекриптовывание паблик-читов уже года два как не спасает

    Так ведь читы пишут школьники и криптуют их стандартными протекторами, а они в свою очередь обычно выполняют файловое скрытие, те после распаковки(запуска) в памяти находится по большей части оригинальный код. Аналогично как и ав такое детектят сканером памяти.
     
  2. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.455
    Адрес:
    Россия, Нижний Новгород
    Да почему, тот же вмп. В памяти только виртуалка и байткод для неё - сканить нечего.
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    HoShiMin,

    vmp не полностью виртуализирует бинари, так как не может знать где начинается код и код-данные, это старая проблема, тут были мои темы по этой проблеме. Если никогда не видел вмп под дизом, посмотри тут https://exelab.ru/f/index.php?action=vthread&forum=1&topic=25888&page=1#8 :preved:
    --- Сообщение объединено, 29 дек 2019 ---
    HoShiMin,

    Не нужно так удивляться, скажу тебе принципы.

    К порции данных происходит прямая выборка, в частности из ядра, именно по этой проблеме нельзя создать полноценный с-анклав. Любой протектор восстанавливает исходное апп в памяти, без исключений все данные восстановлены. Код протектится лишь тот, на который есть прямые ссылки, их не много - это EP и IAT. Это общее заблуждение на основе статик реверса протекченных апп. Все норм протекторы встраиваются в апп на уровне сурков, что бы определить указатели на процедуры(код). Но это сложно и очень редко используется. Очень хорошо что апп не собирают с опцией защиты, тогда в памяти апп было бы так же криптовано, как и в файле https://wasm.in/threads/poluchit-spisok-procedur.31729/
     
  4. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    спрятать чит на самом деле вполне легко == гамис пускается под виртой, а память вирты читается чрез хостовый дравер. Другая проблема -- еть сбор статистики на сервачах гамиса == по собранной активности юзверя акк могут пометить акь подозрительный со всеми сопутствующими проблемами.. конечно, ещё стоит помнить, что дравера гамиса будут пытаться глянуть за пределы озу вирты.
    --- Сообщение объединено, 30 дек 2019 ---
    Ты ещё учитывай, что протектор может отлично уронить профайл аппа == тормознутый дравер на чит уЖО не тянет :)
     
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    UbIvItS,

    Я не знаком с читами, так что не знаю как там что реализовано. Предполагаю что это уровень нубья, судя этому форуму https://www.unknowncheats.me/forum/index.php

    Врядле эти люди могут что то собрать ядерное и стабильное. Учитывая что даже человек выше не понимает ничего в протекторах, хоть и написал защиту.
    --- Сообщение объединено, 30 дек 2019 ---
    UbIvItS,

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

    Срытие в памяти реализуется без драйверов, это софтверные наклавы. Примерно так https://wasm.in/threads/opredelit-ssylki-na-pamjat-v-dinamike.33497/#post-413503

    Это единственный способ обойти антидамп и сканер памяти. Но метод весьма сложен, для этого нужно написать быстрый визор, что бы отслеживать выборку. Это не доступно из за сложности большинству.
    --- Сообщение объединено, 30 дек 2019 ---
    * Скрытие в памяти реализуется без драйверов, это софтверные анклавы.

    Сделайте же больше время редактирования, ёлки палки.
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    не помогут == если гамис имеет дравер, то он много чего могет вытворять, чтоб явить истЕнные настройки среды. вот, к примеру..
    https://www.wired.com/story/plundervolt-intel-chips-sgx-hack/
    что касается вирты, там получается широкий набор возможностей по борьбе с дравером гамиса == вирту можно заточить на редакцию инструкций дравера на-лету, дабы предотвратить разные трюки. Поэтому с точки зрения защиты гамиса самое лёгкое -- еть полностью забанить любые вирты. Однако, для гамисной индустрии такой подход тоЖО плох, пч рынок "тонких" клиентов никто не отменял (впрочем, никто не мешает проводить регу такого барахла офицом). что касается читов в широком плане, самое смешное, что там никаких драверов нахЪ не нужно == даже сделав просто мало-мальски приличную автоматизацию хоткеев, игрок получает чудовищный буст в гамисе. Тч с точки зрения онлайн гамисов любая форма автоматики есмь читЪЪЪ :)
     
  7. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    А как скрыть сам факт присутствия визора? Защите без разницы визор это, чит или что-то еще, для него это все еще подозрительный кусок памяти/модуль. Получается для скрытого запуска визора придется эту самую защиту обойти, тогда и смысла в визоре нет, в данном случае. Либо проводить атаку на защитный модуль с помощью визора, но ведь еще есть удаленный модуль ядра, который визором не достать.
     
  8. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    hiddy,

    > А как скрыть сам факт присутствия визора?

    Они не изменяют память апп, разве что необходимо поставить ловушки на обратные вызовы ядра. Есть есчо нюанс, если использовать бинарную трансляцию(как дий), то нужны буфера rwE, исполняемый буфер может не дать выделить защита. Иначе придётся использовать эмуляцию, а это огромный размер кода и криптовать его соответственно сложнее, как и заставить стабильно работать.

    Само тело визора можно криптовать, что бы убрать сигнатуры, всё как и с викс-детектами.

    UbIvItS,

    Не вижу смысла обсуждать что не знаю. Как реализуется защита в играх не имею понятия. Наверно начать следует с примера, только какого ?
     
  9. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    Не ожидал увидеть такой отклик, но все же очень рад, пробую разобарться
    Пока что исследую пример с DSEFix драйвером, что привели ранее, тут есть исходник, вот бы попробовать на чем-нибудь тест чтения памяти.
    Свой бан я уже словил пару часов назад о чем, в принципе не жалею, ожидания оправдались, античит есть, очень интересная тема, жаль, что часть информации мне не понятно :dntknw:
    --- Сообщение объединено, 30 дек 2019 ---
    Так, подумывал об этом... Гамис - game - игра?
    Под виртой... Виртуальная машина по типу virtual box?
    Хостовый драйвер... ммм? Драйвер, который передаст прочитанное значение адреса с основной машины на виртуальную или как?
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Да, но будут тормоза, есть канеш забавные вещи, типа gpu pass through (или как там это называется), но, чтобы это завелось, придется потанцевать в бубном и хостом вроде должен выступать линукс, давно уже эту тему не смотрел, может что изменилось канеш за это время.
     
  11. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Один нюанс - если античиту будет по барабану (нет), что он под вм запущен.
     
  12. Bedolaga

    Bedolaga Member

    Публикаций:
    0
    Регистрация:
    10 июл 2019
    Сообщения:
    131
    А игрулю уже под ВМ запустили, или это пока все в теории?
     
  13. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    Если я правильно понимаю, то визор выполняет функцию прокси, а значит должен находиться в адресном пространстве игры, что уже является нарушением целостности.
     
  14. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.455
    Адрес:
    Россия, Нижний Новгород
    Визоры в области читов вообще ни к селу, ни к городу.
    От слабых античитов, типа VAC, их нет смысла использовать, т.к. VAC обойти несложно методами в лоб.
    А от ААА-античитов никакой визор не спасёт: драйвер из ядра увидит непонятный исполняемый регион и отправит его на проверку. Так как регион не похож ни на что, использующееся в легит-софте, которому разрешён инжект и перехваты (драйвера, стримилки, дискорды), за такой регион автоматически выпишут бан.
    Пока что единственное перспективное направление обходов - гипервизоры (например, подменять страницы при доступе на исполнение, чтобы при чтении античит читал одно, а при исполнении в этой странице было другое).
    Пока сами античиты не стали использовать гипервизоры (из-за возможных сайд-эффектов), гипервизоры в читах продолжают развиваться (в основном, за много долларов и в привате, но - развиваются).
    --- Сообщение объединено, 30 дек 2019 ---
    Не будут. Не игра запускается под гипервизором, а хостовая система виртуализуется и продолжает работать в виртуализованном окружении. Гипервизор висит в памяти и фильтрует только необходимые события. Примерно как хостовая винда с включенным Hyper-V. Сами железки не виртуализуются и продолжают работать, словно ничего не случилось.
    Единственное, что просаживает профайл - скрытие памяти (особенно на AMD, т.к. AMD-V не различает доступ на чтение и доступ на исполнение, из-за чего приходится городить сложную логику на каждый #VMEXIT при обращении к скрываемому региону)
     
  15. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    HoShiMin,

    Вы уже показали свои знания по протекторам, причём тут гпв хз :don-t_mention:

    hiddy,

    Он должен выполняться в том же режиме, что бы контролировать выборку. Немного появляется не определённость, вроде как задача про чтение памяти, а не про обход чтения. Анклав это метод скрыть область памяти от выборки в ином режиме или не подтверждённой в том же режиме. Но у тс задача обратная, наоборот нужно как то прочитать память. Впрочем я сразу сказал что это сделать нельзя системным путём. Если только купить какой то сплойт, который позволяет прочитать произвольный указатель в ядре(хотя и это врядле даст доступ к памяти иного процесса, только если полноценный доступ rw к любому указателю). Не уверен что такое вообще возможно.
     
  16. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.455
    Адрес:
    Россия, Нижний Новгород
    ТС'у надо читать память игры, чтобы античит об этом не знал, а все прямолинейные способы палятся по косвенным признакам. Гипервизорами и скрывают эти "косвенные признаки".
    Да почему нельзя-то? Кто мешает загрузить драйвер и читать? Проблема-то не в чтении, а в том, что рано или поздно этот драйвер найдут и прилетит бан.
     
  17. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    HoShiMin,

    Так ведь апп(игра) не запущена под визором, какой с него прок ?

    > Проблема-то не в чтении, а в том, что рано или поздно этот драйвер найдут и прилетит бан.

    Если нельзя это сделать в юм, то драйвером и тем более. Как его загрузить ?

    Даже если через какую то уязвимость получить доступ к записи произвольной памяти, то это мало что даёт. Что бы прочитать память процесса поток должен переключить адресное пространство, те в ядре вызвать функцию смены ап(AttachProcess). Учитывая что все уязвимости такого рода гуй, то это сделать есчо сложнее, так как ядерная часть памяти гуя изолирована от другого гуя, hyperspace". Да и защита такое наверно прибьёт. Поэтому и сомневаюсь что такое в принципе можно реализовать. Хотя если есть W доступ в ядро, то можно создать условия для двойной смены ап. Такого рода атака если и возможна, то слишком сложна и дорогая.
     
  18. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    через уязвимость в подписанном драйвере не?
     
  19. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.455
    Адрес:
    Россия, Нижний Новгород
    Загрузить можно или через уязвимые драйвера (таких много - драйвер VirtualBox'a, какой-то интеловский драйвер, даже драйвер одного античита, который позволяет выполнять произвольные шеллы). Или подписать свой драйвер каким-нибудь слитым EV-сертификатом (на unknowncheats лежит в паблике).
    А после загрузки почистить следы (почистить MmUnloadedDrivers и подобное). А дальше - зависит от фантазии создателя чита. Чем изощрённее он будет скрываться - тем дольше его не найдут.
     
  20. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Вероятность что тс сможет найти такую лазейку да и есчо реализовать ядерный эксплойт меньше, чем вероятность возникновения жизни на земле во вселенной :sarcastic: