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

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

И на затравочку чтобы вам унывать, а немного посмеяться.
 
Последнее редактирование модератором:
Ну Вам виднее, где проблема :Wahaha:
Хукаете пакет протокол вершион, в аргументах есть указатель на буфер. Считаете оффсет до нужного значения и переписываете его. Не забываем, что используется соглашение thiscall и в ecx у нас должен лежать указатель.
ТС ничего не понимает из этого, он думает, что переделать - это выманить какой-то офсет у кого-то и вписать его куда скажут. Но почему так, и откуда берется - не понимает.
Я к примеру не разбирался в смещениях, если надо спрошу - но суть вопроса понятна, технику можно подкачнуть. Водка же не понимает о чем говорят.
 

Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Смотри, взял чистую клиент часть и поменял в ней
unsigned char bfkey[16] = {120, 56, 2, 17, 58, 87, 44, 37, 28, 45, 1, 11, 102, 76, -5, 11}; - тот который у меня прописан на сервере

unsigned int startVMT = (unsigned int) hEngine + 0x4E994C; переделал под епилог

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

Тоже переделал под епилог.

Извините но статиккей я не нашел.
могу помочь , кинул заявку в скайп , у вас есть ну минут 15 потом дальше выносите себе мозг

Зарание ТВ - Еклипс- Хотя бы
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
могу помочь , кинул заявку в скайп , у вас есть ну минут 15 потом дальше выносите себе мозг

Зарание ТВ - Еклипс- Хотя бы
он тебе мозг вынесет как и мне, а потом будет орать давай ещё и ещё)))
а потом шантаж будет я тебя тролить буду)))
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
поражаюсь, вокруг Говно "защиты" столько споров -:D
ну на кой она вообще.... старо как яйца мамонта, почему и не актуальна года полтора уже...
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
поражаюсь, вокруг Говно "защиты" столько споров -:D
ну на кой она вообще.... старо как яйца мамонта, почему и не актуальна года полтора уже...
полностью с вами согласен...
 
я понимаю было бы ещё то, что я отдавал Акуму... но эта шара просто УЛЫБКА...
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
поражаюсь, вокруг Говно "защиты" столько споров -:D
ну на кой она вообще.... старо как яйца мамонта, почему и не актуальна года полтора уже...
Если она *ХАЛЯВНАЯ* то она просто шикарная, и не вероятно защищает от *Одуванчиков*, а так хз, кроме как нагрузки смысла в ней не вижу..
 
научились уже указатели доставать на хендлеры сети? Или все смещения тащите xD? Лулзы...
 
Последнее редактирование модератором:
Что-то ковыряю-ковыряю Engine.dll от Фреи, а как опознать оффсет - не пойму ((
8d7944886d35.jpg
 
Назад
Сверху Снизу