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

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

  1. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    Добрый день. Хотел бы написать разминочный чит, вопрос возник лишь в следующем:
    Как читать память бесследно - игра сетевая, следовательно, есть возможность получить бан.
    Какие методы существуют для решения такого вопроса? Мне нужна только функция чтения, без записи)
    Благодарю за подсказки
     
  2. Bedolaga

    Bedolaga Member

    Публикаций:
    0
    Регистрация:
    10 июл 2019
    Сообщения:
    131
    ReadProcessMemory чем не устраивает?
     
  3. LastNoob

    LastNoob Member

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

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.954
    Может и отслеживает, если испльзуется нормальный античит. Самое очевидное решение - из кернел мода читать память процесса, возможно чей-нибудь готовый драйвер, например предназначенный для создания дампов, спасет отца демократии.
     
  5. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    988
  6. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    Посмотрел видео, почитал статью... Либо все на столько параноидально сделано, либо я недооцениваю задачу... Там же речь идет о linux на сколько я понял и при том IPT работает не для всех процессоров?
    Да и вообще, как-то жестко подключать напрямую к железу отдельный модуль, не находите?

    Оценил отсылку)
    Про режим ядра слышал 100500 раз, однако работы с ним не имел, с чего стоит начать, от чего оттолкнуться, знаю лишь, что это привилегированный режим и тд и тп, а как его запустить, если так можно выразиться не знаю, если вам эта тема хорошо понятная на практике, прошу будьте моим проводником в этой области, буду рад повысить навык.
     
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Никак память чужого процесса не прочитать, для этого собственно вся защита и нарабатывалась столь долго. Что бы к его памяти получить доступ сначала нужно повысить права на это. Сейчас системная защита не пробиваема ничем и никак. Есть вещи которые решить нельзя. Единственный возможный вариант - провести атаку на левую защиту, обычно это очень просто, потому что писатели таких защит" совершенно безграмотны - не знают архитектуру, ни методы атаки и защиты. А если там ядерный самопал, то это решето, его используя можно что угодно сделать с системой.
     
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    чрез кэш можно статистику собирать и предполагать значение переменных.. если проведёшь реверс в оффлайне, то сможешь потренировать угадайку без угрозы бана. впрочем, остаётся проблема замусоривание кэша от других прог (а самое гнусное, от теневых процессов выньки). могешь попытать счастье на чём-то подобном https://github.com/Zer0Mem0ry/KernelBhop
     
  9. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    Ваш пессимизм неумолим, Indy_, конечно можно, при помощи Dll или ReadProcessMemory, бесследно для игры, а не для пентогона)
    думаю приведенных вариантов достаточно для этого.
    Благодарю, UbIvItS, думаю , все получится :)
     
  10. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    Ни одна современная ось не позволит делать что-либо бесследно. ReadProcessMemory логируется на уровне ядра и требует активный дескриптор процесса с определенным набором привилегий.
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
  12. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    ReadProcessMemory палится необходимость открывать хэндл процесса. Соответственно, повесив каллбэки (ObRegisterCallbacks), можно отследить, кто открывает процесс игры с правами PROCESS_VM_READ.
    Самый простой вариант прочитать "бесследно" - написать драйвер и читать любым доступным способом: KeStackAttachProcess -> RtlCopyMemory -> KeUnstackDetachProcess, или через отображения: IoAllocateMdl -> MmProbeAndLockProcessPages -> MmMapLockedPagesSpecifyCache -> RtlCopyMemory -> MmUnmapLockedPages -> IoFreeMdl. Или даже через физическую память: MmGetPhysicalAddress -> MmMapIoSpace -> RtlCopyMemory -> MmUnmapIoSpace.

    Все эти способы отследить нельзя.
    Но если ты выпустишь этот драйвер в паблик, очень быстро он попадёт в блэклисты всех известных античитов (EAC, BattleEye) - они будут детектить не сам факт чтения, а присутствие твоего драйвера в системе.
     
  13. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Ну сигнатуру по кодесу всегда можно сбить за счет обфускации/полиморфа, ну и имена глобальных объектов не надо хардкодить.
     
    Indy_ нравится это.
  14. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Это уже не работает. Не спасает даже вмп или темида с виртуализацией.
    Пока обходят через мануалмаппинг драйвера и скрытие его памяти гипервизором, но даже такие обходы живут недолго.
     
  15. Indy_

    Indy_ Well-Known Member

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

    > Соответственно, повесив каллбэки (ObRegisterCallbacks)

    Соответственно если такой монитор есть, то можно на него провести атаку и тогда рассмотреть возможность через него прочитать память.
     
  16. HoShiMin

    HoShiMin Well-Known Member

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

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Как же это детектируется?
     
  18. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    В блэклист заносят сертификат, которым подписан драйвер.
     
  19. Indy_

    Indy_ Well-Known Member

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

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

    HoShiMin Well-Known Member

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

    Это самое очевидное. В индустрии читов "легальным" способом никто драйвера уже не грузит.

    У кого как. В игрострое используют протектор Denuvo. Хотя авторы отрицают, но те, кто его реверсил, говорят, что это практически полная копия вмп.