Обход nProtect GameGuard на примере игры Кабал Онлайн и Карос Начало
Обход GameGuard
На выходных попросили сделать безоткатку BM3-скиллов, wallhack (хождение сквозь препятствия) и обход защиты от кликеров для официального сервера cabal.zzima.com, т.к. все текущие версии волхака и все кликеры палились их защитой gameguard и собственно она вышибала клиента из игры после 1 минуты беготни с WH. А кликеры вообще не могут аттачиться к игре. Беспалевный волхак и дамагхак я реализовал, подробнее тут и тут - из игры не вышибает. Обход защиты кликеров тоже сделал, за этим в скайп - rfcheats. Параллельно сделал пару бесплатных примочек, которые помогут вам лучше изучить защиту "nProtect gameguard" и собственно обойти её. Обход (или взлом) gameguard актуален для игр Карос онлайн, Кабал онлайн, Седьмой элемент, Forsaken World, MU Online и думаю многих других.
Начну с того, что в Windows 7 GameGuard аттачит свой модуль npggNT.des (Usermode Filtering Library Rev 738) ко всем процессам системы, который в свою очередь хукает ряд функций в целевых программах не давая им видеть процесс игры и аттачиться к ней. В Windows XP это реализовано драйвером и снимается легко тем же самым RKU unhooker. Тут ничего интересного нет, для обхода в Windows 7/8 я сделал следующие вещи:
Total DLL Injector 1.4 - новая версия видит в списке задач игровой клиент. То есть позволяет инжектить в игру свои DLL-ки в любой момент, даже после входа в игру.
nProtect gameguard unhider - до запуска игры вы можете приаттачить эту DLL к любой программе, которой требуется видеть процесс игры. Это может быть Cheat Engine, OllyDbg, ArtMoney, API-шпионы, Proccess Explorer, кликеры и так далее. После загрузки игры, она будет видна нужной вам программе. При этом ваша программа сможет к ней аттачиться.
Всё это для Windows 7.
Теперь о вещах посложнее. Почитав забугорные форумы, я понял, что иностранцы сами до сих пор не научились снимать внутри-игровые хуки GG. О них и поговорим. GameGuard хукает следующий ряд функций:
SendMessageA
DispatchMessageW
SendInput
PostMessageA
PostMessageW
GetPixel
GetWindowThreadProcessId
ZwQuerySystemInformation
CreateProcessInernalW
ReadProcessMemory
OpenProcess
ZwDeviceIoControlFile
ZwSuspendThread
ZwTerminateProcess
VirtualProtect
WriteProcessMemory
ReadProcessMemory
И это вероятно даже не всё. При этом, хукаются также функции уровнем ниже (Native API), что весьма напрягает. Целью хуков является не допущение их использования внедрёнными DLL, а также тупо палево подгружаемых читов. Кстати, о палеве. Некоторые функции (например, ReadProcessMemory) отрабатывают, но инфа об этом оседает в логах GG, которые лежат по пути: Cabal\Data\UserData
Для их расшифровки можете скачать этот файл, поместить в эту же папку и запустить. После чего появится файл decrypted_dlog.txt, в котором лежит список палевных DLL. Кстати, в нём только названия и среди них оказался drweb32.dll Так что читы можно скрывать под видом антивирей.
Вернёмся к хукам. Тут начинается самое интересное, GameGuard устанавливает для всех загруженных системных и защитных DLL-ок права доступа PAGE_EXECUTE_WRITECOPY на секцию кода, соответственно не сменив права обратно на PAGE_EXECUTE_READWRITE, при попытке снятия хука ваш процесс потухнет. Соль в том, что при этом игра хукает следующие функции:
VirtualProtect
ZwProtectVirtualMemory
NtProtectVirtualMemory
Таким образом получается замкнутый круг - вы не можете снять хук с VirtualProtect, потому что нет соответствующих прав, которые вы не можете изменить из-за хука VirtualProtect :) Я сварганил вот такой вариант:
Он выполняет затёртую хуком инструкцию, после чего вызывает ZwProtectVirtualMemory+5, тем самым перепрыгивая через хук геймгварда.
Если не хочется ковыряться со снятием защиты с остальных функций, могу предложить вариант попроще, где за вас уже всё сделали.
Итак, готовый способ снятия защиты памяти в играх, защищённых nProtect gameguard. Total DLL Injector 1.4 - запускаете от админа последнюю версию программы, причём желательно перед запуском игры. Данная версия создаёт пайп: "\\\\.\\pipe\\RF-Cheats.ru.pipe". Далее подгружаете свою собственную DLL к любой игре с GG (в частности к Cabal) и из неё в выше-указанный пайп записываете структуру в следующем виде:
То есть по сути передаёте в пайп PID процесса и адрес, по которому нужно снять защиту. Ну и "isDebug":
1 - после снятия защиты, Тotal Injector сообщит вам о результате
0 - silent mode
Разумеется всё в бинарном виде, т.е. посылка должна получится 9 байт.
Единственное, хочу отметить, что защита снимается не мгновенно, поэтому когда защита будет снята, в пайп вы получите ответ "OK".
Всё. Причём защита будет снята не только с этого адреса, а во всём промежутке между BaseAddress и BaseAddress+RegionSize. После этого можете снимать хуки GG, ставить свои, в общем делать что угодно. Но обращаю ваше внимание на то, что GG через некоторое время (пару минут) вернёт свои хуки обратно. От этого защититься можно кучей способов, например, воспользоваться их же оружием с VirtualProtect Хукаете VirtualProtect чем-нибудь типа:
После чего ставите права 0x80 на секцию кода Kernel32.dll, KernelBase.dll, ntdll.dll
Ну а если серьёзно, то хорошим вариантом было бы патчить код функций-перехватчиков. Тогда и хуки снимать не нужно будет, т.е. без лишнего палева. Кстати, о палеве. Все выше-описанные вещи были реализованы средствами DLL. И ни один из представленных методов не палился GG и не оседал в его логах. Проверено.
Итог: аттачится к игре вы теперь можете и дебаггером, и чем угодно. Аттачить к ней свои DLL тоже можете. Снимать защиту памяти можете, а соответственно снимать/ставить хуки тоже. Карты в руки :) Осталось дело за малым. С такими возможностями взлом nProtect gameguard становится гораздо более простым и приятным занятием.
Рабочий волхак, безоткатку скиллов для кабала и обход защиты от кликеров в GameGuard распространятся бесплатно не будут, т.к. пофиксят добавив мне геморроя) За ними можете обратиться ко мне в скайп "rfcheats".
Последний раз редактировалось dark; 20.04.2017 в 14:53.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
dark, я правильно понимаю, что теперь можно юзать тот же WPe Pro для отправки пакетов на американском офф сервере rfonline.gmaescampus.com, на котором стоит данная защита?? Ведь вся проблема была именно в данных хуках, которые накладывает GG на процесс rf_online.bin
dark, я правильно понимаю, что теперь можно юзать тот же WPe Pro для отправки пакетов на американском офф сервере rfonline.gmaescampus.com, на котором стоит данная защита?? Ведь вся проблема была именно в данных хуках, которые накладывает GG на процесс rf_online.bin
Все верно?7
Я точно не знаю, как работает WPE и в чём загвоздка, но могу предположить, что WPE работает за счёт хуков send(), recv(), connect(). Для этого ему надо внедряться в игровой процесс. Если всё именно так, то для аттача WPE к игре надор юзать nProtect gameguard unhider.
Далее будет два варианта: либо траффик потечёт, либо нет Если второй вариант, то WPE не смог установить хуки на нужные ему функции, а соответственно нужно снимать защиту памяти с секции кода wsock32.dll. Как это делается - я в статье описал и готовое решение показал. Инжектишь в игру свою DLL-ку до аттача WPE. В твоей длл делаешь такую фигню:
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
Я точно не знаю, как работает WPE и в чём загвоздка, но могу предположить, что WPE работает за счёт хуков send(), recv(), connect(). Для этого ему надо внедряться в игровой процесс. Если всё именно так, то для аттача WPE к игре надор юзать nProtect gameguard unhider.
Далее будет два варианта: либо траффик потечёт, либо нет Если второй вариант, то WPE не смог установить хуки на нужные ему функции, а соответственно нужно снимать защиту памяти с секции кода wsock32.dll. Как это делается - я в статье описал и готовое решение показал. Инжектишь в игру свою DLL-ку до аттача WPE. В твоей длл делаешь такую фигню:
И просто шлёшь в пайп этот буффер. Защита памяти будет снята и можешь инжектить WPE.
Добавлено через 1 минуту
А, и я всё это дело на cabal.zzima.com тестировал. Я хз такой же там ГГ или другой..
Сегодня после работы проверю, пройдет ли траффик через WPE на сервере rfonline.gamescampus.com. Прост поковырял сервер и нашел, что на сервере должны быть прем вещи, но там они не выдаеются. А раз пакеты работают, то можно реализовать еще кучу всего.
Сегодня после работы проверю, пройдет ли траффик через WPE на сервере rfonline.gamescampus.com. Прост поковырял сервер и нашел, что на сервере должны быть прем вещи, но там они не выдаеются. А раз пакеты работают, то можно реализовать еще кучу всего.
Я хз какой там ГГ. Плюс, трафф там может быть шифрован. Тогда толку в WPE не будет.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
Я хз какой там ГГ. Плюс, трафф там может быть шифрован. Тогда толку в WPE не будет.
Ну вот это и хочу проверить. И, кстати, не факт, что бразильцы и филиппинцы не знают, как пакетить, ибо стоят нубы 1лвл и спамят в пм, рекламируя магазины по продаже валюты. Помню, был такой скрипт, кидающий в пм заготовленный текст всем, кто появлется в зоне видимости.
Следовательно, пакетят.