Цитата:
Сообщение от YK_Sirius
Но я сомневаюсь, что у меня хватит знаний для написания на С/С++ inject'ов своих модулей в Ла2 клиент.
|
Хуков
Для Л2 - это переработка dsetup. Он в открытом доступе (пустые вызовы функций ДиректИкса). А дальше - уже поле для фантазий открыто
ну чуток поизучать двиг клиента, и на крайний случай - эмулировать функции (Пример эмуляции сендПакета в любой из стоящих защит, спасибо в свое время Альфу за открытие
).
Выключалка ГГ
bool DisableGameGuard(void)
{
unsigned long oldProtect;
unsigned char *GL2UseGameGuard;
GL2UseGameGuard = (unsigned char *) GetProcAddress(LoadLibraryA("core.dll"), "?GL2UseGameGuard@@3HA");
if(GL2UseGameGuard == 0)
return false;
if(!VirtualProtect(GL2UseGameGuard, 1, PAGE_READWRITE, &oldProtect))
return false;
*GL2UseGameGuard = 0;
if(!VirtualProtect(GL2UseGameGuard, 1, oldProtect, &oldProtect))
return false;
return true;
}Code: C
СплайсингВМТ:
...
unsigned int startVMT = (unsigned int) hEngine + 0x51F658;
unsigned int AddNetworkQueue = (unsigned int) GetProcAddress(hEngine, "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPacket@@@Z");
unsigned int currVMT = startVMT;.
..Code: C