Ищу модификацию BIOS

Тема в разделе "WASM.COMMERCE", создана пользователем LastNoob, 30 мар 2022.

  1. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    Приветствую форум, хотел бы выслушать ваше мнение и по возможности оценку стоимости работы.
    С недавних пор занимаюсь небольшим ботоводствам в играх, запрос соответствующий.
    Необходимо читать/записывать небольшие фрагменты памяти в озу, многие игры сопротивляются и выдают блокировки. Как стоило бы поступить ?
    Давно раздумывал над модификацией биоса, получается, что программа, читающая память находится вне зоны видимости программы защиты игры, существуют ли варианты такой модификации уже или на сколько сложно/дорого реализовать такой механизм, например, на платах под Xeon2011 x79/x99?
    Чтение физической памяти вполне приемлемо.

    Надеюсь, никого не оскорбил таким вопросом.
     
  2. HoShiMin

    HoShiMin Well-Known Member

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

    Единственное, что подходит под требования - System Management Mode. Это некий анклав, в котором крутится код, обычно отвечающий за управление питанием.
    Сразу после старта системы область SMM доступна на чтение и запись, но операционная система после загрузки туда своего кода "закрывает" его на доступ извне - и до следующей перезагрузки открыть доступ к SMM нельзя.
    Всё, что может процессор - перейти по заданному адресу на точку входа в этот анклав, исполнить его и вернуться обратно. Переход осуществляется через специальное прерывание SMI (System Management Interrupt).

    По итогу, чтобы туда попасть, надо вклиниться в загрузку системы и, например, не дать системе "закрыть" SMM или подделать код, который система туда записывает, чтобы выполнялся твой обработчик, который затем передаст управление оригинальному коду.

    И второй вариант - системы виртуализации. Написать гипервизор, который переведёт работающую систему под виртуализацию и скроет часть памяти, создав похожий на SMM анклав.
    Этот вариант проще, много примеров на гитхабе (Hyper-Platform, SimpleVisor, hvpp, HyperBone или мой Hyper-Bridge).
    --- Сообщение объединено, 30 мар 2022 ---
    На самом деле, ты неправильно ставишь задачу: тебе не нужны настолько хардкорные способы. Античит надо обходить, исходя из проверок, которые он делает.
    Ты можешь что-то перехватить в коде самого античита или в коде системы. Можешь даже написать эмулятор античита, чтобы сервер игры думал, что античит запущен, когда на его месте на самом деле будет пустышка (см. эмулятор BattleEye)
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Можно же софтварный анклав сделать, как спец завещал, или как я делал в крекмише. Без шуток. Но кодец, который будет сам код в анклаве гонять, должен быть в памяти, да. Хотя, может быть, его можно разложить на ROP-цепочку. Но в целом это уже может быть не так очевидно для античитов.
     
  4. HoShiMin

    HoShiMin Well-Known Member

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

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Ну он их решал, чтобы тысячи семплов гонять, если тебе нужно один единственный семпл закрыть, то это куда проще должно быть. У тебя ограниченное количество инструкций твоего семпла, которое меньше, чем все возможные инструкции, которые можно встретить в тысяче семплов. Но да, опять же, кому и что проще.
     
  6. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Были же еще какие-то EFI колбеки? Или это так не работает?

    Это что, напомните? Трассировщик, DBI?
    В таком случае

    ==
    Это оно и есть, принципиального отличия не вижу.
     
  7. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    Читал про Intel Processor Trace:
    https://habr.com/ru/company/dsec/blog/481692/
    Даже раздобыл пару материнских плат из этой статьи. Только получается, что программа, вызывающая код из SMM находится в ос и ее видно.
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Ну типа кодец, который скрывает другой кодец в виртуальной памяти, он же "полноценный антидамп" (с).
     
  9. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    Могли бы объяснить, что обозначает это выражение? Дампит же сам инжектируемый код в SMI?
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Эмм... это - антидамп, только полноценный... спецовый... с помощью "софтварного анклава"...
     
  11. Andrey333

    Andrey333 Member

    Публикаций:
    0
    Регистрация:
    30 янв 2020
    Сообщения:
    35
    А как софтварный анклав по скорости? Игра не станет неиграбельной?
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Так а причем тут игра? В анклаве защищается код самого чита в виртуальной памяти, а не код игры.
     
  13. Andrey333

    Andrey333 Member

    Публикаций:
    0
    Регистрация:
    30 янв 2020
    Сообщения:
    35
    Чит перехватывает функции игры.
     
  14. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    В этом нет никакой необходимости, по крайней мере в рамках моего проекта.
    Достаточно только чтения памяти, управление происходит через железную имитацию мышки и клавиатуры, в дальнейшем планирую добавить нейрсеть, которая сгенерирует более "живое" управление мышью, на всякий случай.