#security #anti-cheat
#Безопасность #защита от обмана
Вопрос:
Я хотел бы спросить вас, как я могу обнаружить Cheat Engine?
Это то, что я нашел:
- имя процесса
- обработать заголовок главного окна
- файл значка процесса (?)
- обработать хэш EXE-файла
- полный путь к исполняемому файлу процесса
Вы знаете какой-нибудь другой способ?
Ответ №1:
Я не профессионал в этой области, но я думаю, что ни один из параметров, которые вы упомянули, не является надежным.Имейте в виду, что это программное обеспечение с открытым исходным кодом, поэтому все они могут быть легко изменены (пользовательская сборка), чтобы обмануть вас.
Я думаю, что наиболее распространенным аспектом всех программ, подобных CE, является внедрение DLL (это термин Windows, но аналогичные методы есть и в других ОС).Хотя это всего лишь одна из функций, предоставляемых CE.
Итак, вы должны проверить все загруженные библиотеки DLL в адресном пространстве ваших процессов.Вы знаете, что там должно быть, и все остальное вводится в ваш процесс.Вы можете проверить это через Process Explorer (действительно, существуют связанные API, которые можно использовать для автоматического обнаружения этого (т. Е. Без взаимодействия пользователя с графическим программным обеспечением), но, извините, я не сторонник Windows).).Об этом есть хорошая статья Криса Хоффмана, если вы хотите прочитать больше.
Если кто-нибудь предложит лучший ответ, я рад слышать.
Ответ №2:
Вы можете использовать CreateToolhelp32Snapshot с помощью этого API вы можете получить информацию обо всех процессах, запущенных в системе, и вы можете использовать EnumWindows для получения имен Windows, и вы можете обойти хук LoadLibraryA и LoadLibraryExA, чтобы определить, внедряется ли какая-либо DLL, и использовать IsDebuggerPresent и CheckRemoteDebuggerPresent для предотвращения отладки процесса
Ответ №3:
Большая часть того, что вы говорите, является внешним сканированием, в основном просто сканированием определенных аспектов Cheat Engine для его обнаружения.
Если вы планируете обнаружить его для античита, то вам не повезло с упомянутыми вами методами, поскольку все сказанное легко подделать, если вы начинаете разработку на античите, я рекомендую обнаружить что-то вроде внедрения кода или изменения Hex.
Если вы работаете над проектом только для обнаружения CE, скажем, для функции, и не фокусируетесь на остановке cheat engine, то вы могли бы написать скрипт для определения имени процесса или PID, для хэша EXE-файла и полного пути к EXE они ненадежны, поскольку они могут легко меняться на протяжении истории ваших скриптов, а для обнаружения процесса по файлу значка вам также не повезло, поскольку вам нужно знать имя процесса или PID, чтобы получить информацию о процессе и СКОПИРОВАТЬ значок, чтобы прочитать его, а затем сопоставить изображение.
Заголовок окна также действительно ненадежен, поскольку заголовок CE сильно меняется при взломе памяти и других вещах, связанных с CE.
Имя процесса также очень ненадежно, так как снова заголовок CE изменится при взломе памяти и тому подобном.
Надежный метод обнаружения CE — это обнаружение его отладчика, попытка определить, когда CE подключает свой отладчик к процессу, а также сканирование на предмет неизвестных библиотек, которые CE внедряет и использует.
Для обнаружения CE я предлагаю вам попробовать определить базовый адрес отладчика CE, вы также можете попытаться обнаружить определенные движения сборки, как здесь
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
// NULL
originalcode:
mov [ecx 38],eax
mov eax,[edx 3C]
exit:
jmp returnhere
"process.exe" B5B23
jmp newmem
nop
returnhere:
Это сценарий внедрения кода, используемый отладчиком CE
Это всего лишь пример того, что вам нужно было бы обнаружить, но вам понадобится довольно оптимизированный скрипт и быстрый скрипт, чтобы попытаться просканировать процесс сборки байтов и адресов, чтобы найти определенный массив байтов. Если вы собираетесь это сделать, я предлагаю закодировать это на C или C #, Python в этом случае ненадежен, так как вам нужно будет сканировать адреса памяти, а с текущим набором инструментов библиотек для взлома памяти для python это просто не сработает в этом случае, поэтому я рекомендую C или C #.