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

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

  1. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    Так он же видит, куда ведёт хук, и видит, что в этом модуле нет ни одной знакомой ему сигнатуры. Оверлей рисуют многие, но античиты про весь "белый" софт знают, и увидеть что-то незнакомое - это очень подозрительно.
    Особенно если твой модуль ещё и загружен не через LoadLibrary, а мануалмаппингом.

    Да: идея была в том, чтобы предоставить такой интерфейс, чтобы из юзермода можно было относительно свободно работать с ядром.
    Идея была ещё в те времена, когда у меня был EV-сертификат: зная, что он не вечен, хотелось один раз написать большой API, который мог бы закрыть все ядерные потребности.

    А в плане "подружить"? Если ты можешь подгрузить произвольный драйвер, то зачем грузить бридж? Грузи свой собственный драйвер и делай всё из ядра: это проще, чем работать через юзермодный API. И намного скрытнее, ведь бридж не задумывался для скрытности: он создаёт виртуальный девайс, а это красная тряпка для любого античита.

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

    В тестовом игры обычно не запускаются. Основанием для бана тестмод тоже служить не может, поскольку игрок может быть одновременно разработчиком, которому этот тестмод нужен для работы (или для чего-то ещё).
    То же самое по поводу SystemInformer'а, CheatEngine'a и другого условно "читерского" софта: банить за сам факт его наличия нельзя, ведь неизвестно, для чего он запущен у игрока. Может, игрок даже и читер, но читер в другой игре. Или ему этот софт нужен для реверсинга, не связанного с читами.

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

    Да, можно перехватить апи DirectX в dxgkrnl и рисовать из ядра (античиты тоже про это знают).
    Если говорить именно о драйверах видеокарты и записи напрямую в видеопамять - теоретически конечно можно (драйвера же это как-то делают), но для этого тебе придётся разреверсить сами драйвера, чтобы понять, как они работают с видеокартой, где там у неё отмаплена видеопамять и в каком формате она ожидает данные. И у разных видеокарт эти протоколы будут разными. Поэтому теоретически хоть и возможно, но на практике ты не захочешь в это влезать.
     
    808Problem и mantissa нравится это.
  2. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    152
    с кайфом, спасибо за ответы. осталось найти драйвер с бэкдором. в принципе моя идея в том, чтобы просто читать память процесса, ничего модифицировать не нужно (для бота хватает). осталось понять опытном путем, что выгоднее и безопаснее: DMA или драйвер. Первое вроде как стабильное, но муторное, а второе полегче, но нестабильное..
     
  3. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    А если DMA, то через какое устройство? Ему ведь нужен физический девайс, в который будешь читать память. А если планируешь софт на продажу, то мало кто захочет дополнительно покупать железо. Но таки да, DMA скрытный.

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

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    будут - аномалия на серваче обнаружится быстро: по логам можно определить, что игрок получил возможности, коих у него быть не должно.
     
  5. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    Смотря что они найдут. Если развесистый ESP на весь экран, как ёлка, то в бан, конечно, но если увидят неизвестный драйвер, которого больше нет ни у кого, но не найдут явной связи между драйвером и читами (а если только читать память, то определить довольно сложно) - то скорее всего они просто проигнорят. Или сделают у себя пометку, чтобы впоследствии найти ещё кого-то с таким же драйвером, и тогда уже сделать вывод, чит это или нет.
     
  6. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    152
    вроде как все делают через PCI, вот примеры

     
    Mikl___ нравится это.
  7. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    тамо всё проще - смотрят на динамику прокачки учётки + происходят периодические обновления модулей игры, тч чит нужно постоянно адаптировать. то бишь получаем, что просадка успешности учётки напрямую коррелирует с обновлением модулей :)
     
  8. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    152
    Привет, использовал эту тулзу https://github.com/hfiref0x/KDU ? Стоит использовать или лучше свой шелл писать
     
  9. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    Подойдёт что угодно, любой способ загрузки драйвера (даже штатный через сервис или через ZwLoadDriver), но только если ты после загрузки почистишь все следы
     
    mantissa нравится это.
  10. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    152
    это понятно, я про размещение неподписанного драйвера не в тест моде. По сути там тулза, которая может запамить драйвер в уязвимый подписанный драйвер и передать исполнение на DriverEnrty замапленного драйвера, какие способы в этом случае остаются, ведь хендла на драйвер нет и ядро по сути вообще знать не должно (или знает?), что новый драйвер загружен (варварски замаплен в другой)
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    так мапишь ты через функи ядра. конечно, можно всё запускать под виртой и мапить чрез неё.. однако, скорость работы сего колхоза сильно уронится :)
     
  12. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    А ты рассуждай, как бы ты сам искал такие драйвера и чем такой драйвер может спалиться.
    Например, если ты перезаписываешь уже существующий драйвер, можно сравнить содержимое кодовых секций с файлом на диске.
    Если выделяешь исполняемую память - палится сам факт наличия такой памяти.
    Если переключаешься в контекст игры, чтобы прочитать её память, то твой поток палится по регистру cr3, который смотрит на адресное пространство игры.
    Если драйвер общается с юзермодом через какой-либо именованный объект (девайс, communication-порт, что-то ещё) - палится этот объект.
    Если мапишь драйвер одним из уязвимых драйверов, то палится этот уязвимый драйвер (и если он загружен, и если ты его выгрузил - например, в MmUnloadedDrivers).
    Перечислять можно долго, здесь надо смотреть конкретику, что ты используешь в драйвере, и что из этого потенциально опасное.
     
    mantissa и UbIvItS нравится это.
  13. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    HoShiMin, кстати, дма тоже вполне себе палево - система видит девайс и может его опросить да сравнить с ориг девайсами/
     
  14. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.978
    А если девайс иденты легитимного прибора отдает, тогда что?
     
  15. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    тогда чекер берёт соответствующий дравер и начинает гонять тесты, даже эдакий супер-пупер чит едва ль так хорош, чтобы выдержать все тесты/
     
  16. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.978
    Тесты звуковой карты например? Пользователь не охренеет?
     
  17. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    ничто не мешает предупредить юзвера о возможных тестах + в лицухе легко могут быть буковки, что вероятны физ повреждения оборудования (ежли оно нестандартное). :)
     
  18. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.978
    И тогда от твоего античита сам издатель игры откажется в пользу нормального.
     
  19. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    Но даже если предположить, что ты хочешь проверить, что железка именно та, за кого себя выдаёт - что ты с ней сделаешь? Ты же не знаешь о ней буквально ничего, кроме её номера. Куда и какие слать запросы и что ожидать в ответ?
     
  20. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    152
    Привет! Можешь, пожалуйста, быстрый ликбез сделать как делают читы на гипервизорах, насколько это сложно в реализации и когда оправдано?