#winapi #pinvoke #easyhook
#winapi #pinvoke #easyhook
Вопрос:
Увидев простые примеры перехватов, я смог создать перехват для openProcessMemory, чтобы некоторые взломы не испортили некоторые игры. Случай, с которым я сталкиваюсь, заключается в том, что некоторые взломы выполняют свою работу так быстро, что я не могу сделать инъекцию вовремя. Например: процесс A (взлом), процесс B (игра), процесс C (античит)
Процесс A открывает память процесса игры, записывает в нее данные желаний и закрывает ее самостоятельно, не давая времени процессу C, чтобы ввести A, для подключения openProcessMemory, чтобы поймать момент, когда взломщик пытается открыть игровой процесс. Этот процесс работает нормально, пока хакеры ожидают ввода данных пользователем, поскольку дайте время, чтобы античит выполнил свою работу.
Итак, вот несколько вопросов: есть ли способ с помощью c # easyhook узнать, когда игровая память будет изменена с помощью взлома? В настоящее время подключаются openProcessMemory (opm), WriteProcessMemory (wpm) или ReadProcessMemory (rpm), но с описанной проблемой.
Когда некоторые из связанных методов (opm, rpm или wpm) выполняют какое-либо действие в целевом процессе, может ли этот целевой процесс активировать другую функцию WinAPI на основе связанных методов?
Резюме: я подключаю процесс инжектора. И это работает, пока у anticheat есть время для его подключения. Я хотел бы сделать перехваты в игровом процессе, которые приведут меня к процессу инжектора.
Комментарии:
1. Вероятно, гораздо эффективнее вместо этого защитить ваш процесс и позволить системе препятствовать непривилегированным доступам. Хотя вы должны принять тот факт, что ваше приложение работает в небезопасной среде. Вы можете сделать так много только после того, как раздадите исполняемый файл.
2. Это не автономный античит. Клиент и сервер выполняют некоторые процедуры безопасности, прежде чем разрешить клиенту подключиться к серверу. Я ценю вашу помощь и буду помнить об этом. Но есть ли способ сделать перехваты winapi внутри игры, которые приведут меня к процессу инжектора безопасным способом?
3. Но есть ли способ сделать winapi-хук внутри game. Можете ли вы запустить C в начале игры (процесс B) или использовать
Detours
in B напрямую?4. Обязательно, чтобы процесс C запускал игровой процесс. Пожалуйста, если у вас есть какие-либо идеи…
Ответ №1:
Я не советую подключать процессы, которыми вы не владеете, это неправильное решение вашей проблемы.
Правильное решение — отправить драйвер, который использует ObRegisterCallbacks для блокировки доступа к вашим процессам. Вы используете ObRegisterCallbacks для создания обратного вызова каждый раз, когда запрашивается дескриптор вашего процесса. Это происходит, когда вызывается OpenProcess() , затем вы удаляете разрешения на обработку (чтение и запись), когда запрашиваются дескрипторы для вашего игрового / античит-процесса. Это самое эффективное решение для защиты от мошенничества, которое вы можете создать, оно мгновенно остановит 99% хакеров, они даже не смогут подключить чит-движок. Хотя создание драйвера может показаться сложным, этот драйвер относительно прост и требует ограниченного редактирования.
Вот пример исходного кода Microsoft
Есть ли способ с помощью c # easyhook узнать, когда игровая память будет изменена с помощью взлома? В настоящее время подключаются openProcessMemory (opm), WriteProcessMemory (wpm) или ReadProcessMemory (rpm), но с описанной проблемой.
Вы не можете обнаружить ReadProcessMemory или WriteProcessMemory из своего собственного процесса.
Вы можете подключать их глобально в каждом процессе (что я не рекомендую) и фильтровать по дескрипторам, которые нацелены на ваш собственный процесс, возвращая, если они нацелены на ваш процесс.
В качестве альтернативы вы можете перебрать все дескрипторы открытых процессов в системе, найти те, у которых есть права на запись в вашем игровом процессе, и завершить эти процессы. Часто считается, что это невозможно из пользовательского режима, но это так, исходный код, который показывает вам, как это сделать, доступен здесь
Я подключаю процесс инжектора. И это работает, пока у anticheat есть время для его подключения. Я хотел бы сделать перехваты в игровом процессе, которые приведут меня к процессу инжектора.
Используйте методы инжектора Guided Hacking Injector:
Вы можете подключить LoadLibrary, LdrLoadDll, LdrpLoadDLL в вашем игровом процессе, чтобы остановить внедрение, но вам будет сложно заблокировать ручное сопоставление, потому что оно не использует обычные API для загрузки DLL. Вы можете подключить VirtualAllocate() и VirtualProtect() для обнаружения ручного сопоставления, но это требует много настроек. Использование системных вызовов напрямую может обойти это.
Все защиты пользовательского режима легко обойти, поэтому я рекомендую драйвер ObRegisterCallbacks.
Комментарии:
1. Большое спасибо. Это хорошая отправная точка. К сожалению, я не настолько разбираюсь в c . В настоящее время я изучаю VC . Через некоторое время я смогу создать мощную систему защиты от читов.