![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Kasiro |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 11.7.2010 Репутация: нет Всего: -1 |
Всем привет, интересует как можно защитить процесс от внедрения в него чужого кода
конкретно речь идет о hl2.exe (cs source) и о защите от читов на одном из форуме нашел несколько способов, не знаю на сколько они рабочие, кроме названий никакой дополнительный инфы не было 1) Можно проверять целостность машинного кода, и наличие лишнего кода 2) Можно проверять лишние DLL 3) Можно проверять лишние потоки 4) Можно проверять целостность машинного кода всех DLL 5) Можно проверять наличие внедренной программы в куче И другой вариант, ставить хуки на фукнции OpenProcess(ZwOpenProcess) DuplicateHandle(ZwDuplicateObject) WriteProcessMemory(ZwWriteVirtualMemory) ReadProcessMemory(ZwReadVirtualMemory) подскажите какой из методов лучше, либо может быть их совокупность и еще вопрос, сейчас в читерстве активно используется мануал маппинг для загрузки дллок, есть ли способы защиты от этого? PS: ссылки на статьи и код по теме горячо приветствуются |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Все методы использовать разом
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
Kasiro |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 11.7.2010 Репутация: нет Всего: -1 |
Dem_max, если все сразу тормозов не должно быть?
может есть примеры кода по любому из методов? сам искал ничего не нашел толкового кроме перехват функций из ring3 меня больше всего интересует как реализовать первые 5 методов |
|||
|
||||
DarthTon |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 7.2.2009 Репутация: 5 Всего: 6 |
Самым действенным методом было бы сделать процесс защищенным, изменив бит в его структуре EPROCESS из ring 0. Это запретит любой доступ к процессу с правами отличными от PROCESS_QUERY_LIMITED_INFORMATION и PROCESS_TERMINATE. Однако такой драйвер вряд ли пройдет проверку Microsoft.
Можно перехватить LdrLoadDll и просто не давать лишним длл загружаться. От мануал маппинга не спасет соответственно.
Обычно код внедряется не в кучу, а в новую область выделенную при помощи VirtualAlloc. Но проверить хип на всякий случай тоже не помешает ![]()
Если есть 100% гарантия что весь код всегда должен исполнятся в областях памяти принадлежащих PE файлам, а так же DEP включен для процесса, то можно искать области памяти с флагом EXECUTABLE. Но Вы так же должны быть уверены что функции для работы с памятью (VirtualQuery, NtQueryVirtualMemory и т.п.) не перехвачены. Ещё можно смотреть не исполняется ли какой-нибудь поток в области памяти не принадлежащей ни одному из образов. Или перехватить создание потока и смотреть на адрес стартовой функции потока. P.S. С таким вопросом я бы порекомендовал Вам заглянуть на форум wasm.ru или gamedeception.net. |
||||||
|
|||||||
Kasiro |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 11.7.2010 Репутация: нет Всего: -1 |
DarthTon, спасибо попробую:)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |