Ft guard клиент epilogue

Vodka TreasureHunter

Выдающийся
Местный
Сообщения
371
Розыгрыши
0
Репутация
242
Реакции
174
Баллы
1 388
С трудом и потом, я прикрутил защиту фт гвард к моей сборке, ну как прикрутил пару файлов с исходников джанки перекинул и сборочка завелась.
Но теперь проблема lvl 2.
Клиент часть, как ее под епилог подогнать то?

Исходя из всего того что мне сказали надо переделать подключение к движку(адрес)
ADDR 0x203B0B90

unsigned int GetSendPacketAddress(void)
{
HMODULE hEngine = LoadLibraryA("engine.dll");

unsigned int startVMT = (unsigned int) hEngine + 0x51F658;
unsigned int AddNetworkQueue = (unsigned int) GetProcAddress(hEngine, "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPacket@@@Z");
unsigned int currVMT = startVMT;

if (AddNetworkQueue == 0)
return 0;

while (true)
{
if (*(unsigned int*) currVMT == AddNetworkQueue)
return *(unsigned int*) (currVMT - 0xA4);

currVMT++;
if (currVMT - startVMT > 10000)
return 0;
}

return 0;
}

bool SetHooks(void)
{
FARPROC addr;
HMODULE hEngine = LoadLibraryA("engine.dll"), hNtDlll = LoadLibraryA("ntdll.dll");
MODULEINFO modinfo;

GetModuleInformation(GetCurrentProcess(), hEngine, &modinfo, sizeof(MODULEINFO));

hEngineStart = (unsigned int) hEngine;
hEngineEnd = hEngineStart + modinfo.SizeOfImage - 1;

GetModuleInformation(GetCurrentProcess(), hNtDlll, &modinfo, sizeof(MODULEINFO));

hNtDllStart = (unsigned int) hNtDlll;
hNtDllEnd = hNtDllStart + modinfo.SizeOfImage - 1;

if ((KiUserExceptDispADR = (unsigned int) GetProcAddress(LoadLibraryA("ntdll.dll"), "KiUserExceptionDispatcher")) == 0)
return false;

if (*(unsigned char*) (KiUserExceptDispADR) == 0xFC)
KiUserExceptDispADR++;

if ((addr = GetProcAddress(LoadLibraryA("ws2_32.dll"), "connect")) == 0)
return false;

true_connect = (_connect) splice((unsigned char*) addr, new_connect);

if ((addr = GetProcAddress(hEngine, "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPacket@@@Z")) == 0)
return false;

true_AddNetworkQueue = (_AddNetworkQueue) splice((unsigned char*) addr, new_AddNetworkQueue);

if ((addr = (FARPROC) GetSendPacketAddress()) == 0)
return false;

true_SendPacket = (_SendPacket) splice((unsigned char*) addr, new_SendPacket);

if ((addr = GetProcAddress(hEngine, "?MasterProcessPreRender@UInteractionMaster@@QAEXPAVUCanvas@@@Z")) == 0)
return false;

true_MasterProcessPreRender = (_MasterProcessPreRender) splice((unsigned char*) addr, new_MasterProcessPreRender);

if ((addr = GetProcAddress(hEngine, "?DrawTextTTFToCanvas@UCanvas@@QAEHHHPB_WPBVFontDrawInfo@@EHHPBV?$TArray@PAVFontDrawInfoSection@@@@@Z")) == 0)
return false;

true_DrawTextTTFToCanvas = (_DrawTextTTFToCanvas) addr;

if ((addr = GetProcAddress(hEngine, "?Render@FPlayerSceneNode@@UAEXPAVFRenderInterface@@@Z")) == 0)
return false;

true_Render = (_Render) splice((unsigned char*) addr, new_Render);

return true;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
}

bool LoadTrayIcon(HINSTANCE hInst, unsigned int ID)
{
ghMutex = CreateMutexA(0, false, "First Guard");

if (GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(ghMutex);
return true;
}

WNDCLASSEXA wcx;
NOTIFYICONDATAA niData;

memset(&wcx, 0, sizeof(WNDCLASSEXA));

wcx.cbSize = sizeof(wcx);
wcx.lpfnWndProc = WndProc;
wcx.hInstance = hInst;
wcx.lpszClassName = "tray_icon";

if ((RegisterClassExA(&wcx) == 0) && (GetLastError() != ERROR_CLASS_ALREADY_EXISTS))
return false;

if ((hWND = CreateWindowExA(0, "tray_icon", 0, 0, 0, 0, 0, 0, 0, 0, hInst, 0)) == 0)
return false;

memset(&niData, 0, sizeof(NOTIFYICONDATAA));

niData.cbSize = sizeof(NOTIFYICONDATAA);
niData.uID = ID;
niData.uFlags = NIF_ICON | NIF_TIP;
niData.hWnd = hWND;
strcpy_s(niData.szTip, "First Guard");

niData.hIcon = (HICON) LoadImageA(hInst, MAKEINTRESOURCEA(IDI_TRAYICON), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR);

if (!Shell_NotifyIconA(NIM_ADD, &niData))
return false;

return true;
}
Отличие с епилогом есть только в одной функции
?DrawTextTTFToCanvas@UCanvas@@QAEHHHPBGPBVFontDrawInfo@@EHHPBV?$TArray@PAVFontDrawInfoSection@@@@@Z

Без понятия что делать, буду рад любой помощи.

И на затравочку чтобы вам унывать, а немного посмеяться.
 
Последнее редактирование модератором:
Последнее редактирование:
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Последнее редактирование модератором:
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Без причины никто, я думаю, репу просто так бы не понижал (хотя есть исключения). Возможно кому-то перешел дорогу, или обидел. Взять, например, тот случай с Гремори, он же не обязан тебе помогать, но ты все равно решил ему угрожать и создали срач на форуме, если бы ты заплатил ему, а он не сделал свою работу, тогда да, совсем другое дело. И даже тогда лучше четко, ясно и адекватно изложить свое мнение, а не орать во всю гортань поливая грязью.
 
В случае с Гремори он был обязан помогать, поскольку произошла сделка и он дал обещание что если баг будет он поможет, как с защитой так и с фиксом.
Но не того и не того в окончательной версии я не дождался и пришлось все делать самому, выпиливать с исходов джанки.

Я эму серьезного ничего не предъявляю, я только выложил скрины, народ должен знать своих героев.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
все вас поняли уже раз 200 зачем еще раз повторять - дллку могу дать на определенный IP чисто для теста что ты там напривязывал (сурс нет)
 
Откуда у валета - козыря в рукаве? Вангую, сервер не взлетит.
 
Откуда у валета - козыря в рукаве? Вангую, сервер не взлетит.
Я не буду первый сервер делать топовым, сначала пару лоу серверов что бы придрочиться, после уже что то получше.
Не стал бы вообще открывать, если бы пару идей не было.
 
Чем ваш друг гремори может помочь ему? Мне кажется у вашего друга даже по менее знаний будет.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
СГ\ФТ\РГ - в мусорку (вы думаете что он защищает от хлапы или обхода??.... вы очень заблуждаетесь господа.....)
 
Ты случайно не знаешь что за проблема, скомпилил клиент часть для епилога, дохожу до выбора сервера и ничего в гсе пусто, с защитой и без зайти на сервер не могу.
Проблема скорей всего в протоколе, не знаешь где его поменять в исходах клиентки?
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
не полностью привязана защита на уровне сервера
 
не полностью привязана защита на уровне сервера
Не надо меня не туда направлять, на сборке джанки тоже не работает, но вот когда менял на ней протокол с 152 на 260+ то уже в гсе пишет что я пытался приконектится.
 
ты точно уверен что кто-то будет отправлять тебя по иному адресу кроме как [А по щам?]?
 
не полностью привязана защита на уровне сервера
На сервер даже с выключенной защитой не заходит.
Я поменял только для епилога
unsigned int startVMT = (unsigned int) hEngine + 0x4E994C;
?DrawTextTTFToCanvas@UCanvas@@QAEHHHPBGPBVFontDrawInfo@@EHHPBV?$TArray@PAVFontDrawInfoSection@@@@@Z

Я что то забыл?