Добрый день. Хотел бы написать разминочный чит, вопрос возник лишь в следующем: Как читать память бесследно - игра сетевая, следовательно, есть возможность получить бан. Какие методы существуют для решения такого вопроса? Мне нужна только функция чтения, без записи) Благодарю за подсказки
Так и делаю, вопрос в том, может ли игра отследить это чтение или нет? Читал про всевозможные античитерские системы на подобии VAC и тд, хотел бы узнать, как лучше избежать такой проверки при этом выполняя сторонний код. Про систему анти-чит в мое игре не знаю
Может и отслеживает, если испльзуется нормальный античит. Самое очевидное решение - из кернел мода читать память процесса, возможно чей-нибудь готовый драйвер, например предназначенный для создания дампов, спасет отца демократии.
https://habr.com/ru/company/dsec/blog/481692/ --- Сообщение объединено, 28 дек 2019 --- плюс серия докладов этого парня --- Сообщение объединено, 28 дек 2019 --- https://software.intel.com/sites/default/files/intel-trace-hub-developers-manual-2.1.2.pdf
Посмотрел видео, почитал статью... Либо все на столько параноидально сделано, либо я недооцениваю задачу... Там же речь идет о linux на сколько я понял и при том IPT работает не для всех процессоров? Да и вообще, как-то жестко подключать напрямую к железу отдельный модуль, не находите? Оценил отсылку) Про режим ядра слышал 100500 раз, однако работы с ним не имел, с чего стоит начать, от чего оттолкнуться, знаю лишь, что это привилегированный режим и тд и тп, а как его запустить, если так можно выразиться не знаю, если вам эта тема хорошо понятная на практике, прошу будьте моим проводником в этой области, буду рад повысить навык.
Никак память чужого процесса не прочитать, для этого собственно вся защита и нарабатывалась столь долго. Что бы к его памяти получить доступ сначала нужно повысить права на это. Сейчас системная защита не пробиваема ничем и никак. Есть вещи которые решить нельзя. Единственный возможный вариант - провести атаку на левую защиту, обычно это очень просто, потому что писатели таких защит" совершенно безграмотны - не знают архитектуру, ни методы атаки и защиты. А если там ядерный самопал, то это решето, его используя можно что угодно сделать с системой.
чрез кэш можно статистику собирать и предполагать значение переменных.. если проведёшь реверс в оффлайне, то сможешь потренировать угадайку без угрозы бана. впрочем, остаётся проблема замусоривание кэша от других прог (а самое гнусное, от теневых процессов выньки). могешь попытать счастье на чём-то подобном https://github.com/Zer0Mem0ry/KernelBhop
Ваш пессимизм неумолим, Indy_, конечно можно, при помощи Dll или ReadProcessMemory, бесследно для игры, а не для пентогона) думаю приведенных вариантов достаточно для этого. Благодарю, UbIvItS, думаю , все получится
Ни одна современная ось не позволит делать что-либо бесследно. ReadProcessMemory логируется на уровне ядра и требует активный дескриптор процесса с определенным набором привилегий.
ReadProcessMemory палится необходимость открывать хэндл процесса. Соответственно, повесив каллбэки (ObRegisterCallbacks), можно отследить, кто открывает процесс игры с правами PROCESS_VM_READ. Самый простой вариант прочитать "бесследно" - написать драйвер и читать любым доступным способом: KeStackAttachProcess -> RtlCopyMemory -> KeUnstackDetachProcess, или через отображения: IoAllocateMdl -> MmProbeAndLockProcessPages -> MmMapLockedPagesSpecifyCache -> RtlCopyMemory -> MmUnmapLockedPages -> IoFreeMdl. Или даже через физическую память: MmGetPhysicalAddress -> MmMapIoSpace -> RtlCopyMemory -> MmUnmapIoSpace. Все эти способы отследить нельзя. Но если ты выпустишь этот драйвер в паблик, очень быстро он попадёт в блэклисты всех известных античитов (EAC, BattleEye) - они будут детектить не сам факт чтения, а присутствие твоего драйвера в системе.
Ну сигнатуру по кодесу всегда можно сбить за счет обфускации/полиморфа, ну и имена глобальных объектов не надо хардкодить.
Это уже не работает. Не спасает даже вмп или темида с виртуализацией. Пока обходят через мануалмаппинг драйвера и скрытие его памяти гипервизором, но даже такие обходы живут недолго.
HoShiMin, > Соответственно, повесив каллбэки (ObRegisterCallbacks) Соответственно если такой монитор есть, то можно на него провести атаку и тогда рассмотреть возможность через него прочитать память.
А это сложнее, ведь античит проверяет свою целостность и сам может быть накрыт криптором. Трудозатраты на такой обход выше, чем скрытие своего драйвера. Пока снимаешь вмп, выйдет сотня обновлений античита и обход быстро станет неактуальным.
HoShiMin, Такого рода защиту не особо нужно реверсить. Это аналогично как и ав-км фильтры. Всегда есть интерфейс в юзер, конечно если там вмп это всё усложняет.
Скорей всего, разработчики уже научились их снимать. Античит отправляет подозрительные куски памяти или целые бинарники на анализ, где, видимо, снимают виртуалку и составляют сигнатуры. Достоверно никто не знает. Но перекриптовывание паблик-читов уже года два как не спасает от ААА-античитов, типа BattleEye. Это самое очевидное. В индустрии читов "легальным" способом никто драйвера уже не грузит. У кого как. В игрострое используют протектор Denuvo. Хотя авторы отрицают, но те, кто его реверсил, говорят, что это практически полная копия вмп.