Программинг Форум для тем связанных с программированием
19.12.2011, 19:35
#11
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
Цитата:
SplaisingVMTF(ClientEncrypt, NewCrypt );
SplaisingVMTF(ClientDecrypt, NewCrypt );
э.. и чо это значит ?
__________________
L2Ext - project closed.
19.12.2011, 20:24
#12
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
Цитата:
Сообщение от
alexteam
э.. и чо это значит ?
Это просто функции, в которых месседжБокс)
Код:
DWORD WINAPI InitThread(LPVOID lpParameter)
{
//HWID();
hEngine = GetModuleHandle("engine.dll");
UNHandlerTable = GetProcAddress(hEngine, nUNHandlerTable);
//GameGuardReplay = GetProcAddress(hEngine, nGameGuardReplay);
(FARPROC &)UNetWorkHandler_Init = GetProcAddress(hEngine, nUNHandlerInit);
(FARPROC &)DispatchNetworkQueue = GetProcAddress(hEngine, nDispatchNetworkQueue);
pDispatchNetworkQueue = (int)DispatchNetworkQueue;
SplaisingVMT(UNHandlerTable,UNetWorkHandler_Init,UNHandler_Init);
//SplaisingVMT(UNHandlerTable,GameGuardReplay,GameGuardReplayHook);
while (GetModuleHandleA("fire.dll") == 0)
{
Sleep(100);
}
(FARPROC &)SendPacket = (FARPROC)(DWORD *)(**(DWORD **)(pUNetworkHandler + 0x48) + 0x6C);
(FARPROC &)ClientEncrypt = (FARPROC)((DWORD)UNHandlerTable - 0x0C);
(FARPROC &)ClientDecrypt = (FARPROC)((DWORD)UNHandlerTable - 0x08);
SplaisingVMTF(ClientEncrypt, NewCrypt);
SplaisingVMTF(ClientDecrypt, NewCrypt);
return 0;
};
Код:
void __stdcall NewCrypt(char * buff, __int64 * Key, int size)
{
MessageBox(0,"New Crypt","New Ctypt Is", MB_OK);
};
Код:
DWORD oldprotect;
/******************************************************************************************************
* Хук таблицы VMT
******************************************************************************************************/
void __stdcall SplaisingVMT(void * Table, void * Method, void * Hook)
{
asm
{
mov ecx,-1
cld
mov edi,Table
mov eax,Method
repnz scasd
push Hook
pop edi-4
}
return;
};
void __stdcall SplaisingVMTF(void * Method, void * Hook)
{
int * pMethod = *(int**)(Method);
if(!VirtualProtect(pMethod,10,PAGE_EXECUTE_READWRITE,&oldprotect))
{
MessageBox(0,"SplaisingVMTF", "Error", MB_OK);
return;
}
pMethod = (int*)Hook;
return;
};
/******************************************************************************************************
* Сплайсинг типа CALL
******************************************************************************************************/
void __stdcall SplaisingCall(void * Method, void * Hook)
{
if(!VirtualProtect(Method,10,PAGE_EXECUTE_READWRITE,&oldprotect))
{
MessageBox(0,"SplaisingCall", "Error", MB_OK);
return;
}
asm
{
mov eax, [Method]
mov ebx, eax
mov edx, [Hook]
add ebx, 0x05
sub edx, ebx
mov byte [eax], 0xE8
mov dword [eax+1], edx
}
return;
};
Добавлено через 43 минуты
ВСё, проблема решена)
Тему можно закрывать)
__________________
Все относительно...
Последний раз редактировалось ALF, 19.12.2011 в 20:24 .
Причина: Добавлено сообщение
19.12.2011, 22:07
#13
Рыцарь
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
Цитата:
Сообщение от
ALF
ВСё, проблема решена)
ну хоть отписалбы что там было
__________________
Шожиделать.. ботить хочется..
20.12.2011, 17:46
#14
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
Была неправильная функция.
Вот исправил)
Код:
void __stdcall SplaisingVMTF(void * Method, void * Hook)
{
if(!VirtualProtect(*(void **)Method,10,PAGE_EXECUTE_READWRITE,&oldprotect))
{
MessageBox(0,"SplaisingVMTF", "Error", MB_OK);
return;
}
*(void **)Method = Hook;
return;
};
__________________
Все относительно...
21.12.2012, 13:37
#15
Новичок
Регистрация: 21.12.2012
Сообщений: 3
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
не хочется плодить темы, спрошу тут.
вот получается есть функция поиска адреса SendPacket:
Код:
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;
}
но выше 268 протокола она не работает, попытался сделать так:
Код:
unsigned int GetSendPacketAddress(void)
{
HMODULE hEngine = LoadLibraryA("engine.dll");
unsigned int UNHandlerTable = (unsigned int)GetProcAddress(hEngine, "??_7UNetworkHandler@@6BUObject@@@");
return (UNHandlerTable + 0x48) + 0x6C;
}
с этим кодом хук становится, но как только открывается окно то оно сразу крашится:
Код:
2013.1.7 22:52:30
OS : Windows XP 5.1 (Build: 2600)
CPU : GenuineIntel Intel(R) Celeron(R) CPU E3300 @ 2.50GHz @ 2506 MHz 2047MB RAM
Video : Radeon X1300XT/X1600Pro/X1650 Series (6925)
PosCode : LS1(273) 0:0:0 2/0 [288]
General protection fault!
History: ViewportLock1 <- Precaching <- UGameEngine::Draw <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- MainLoop
ткнет пальцем кто на ошибку?
28.02.2013, 02:26
#16
Новичок
Регистрация: 06.12.2010
Сообщений: 18
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Тут был глупый вопрос, который разрешился сам собой
Последний раз редактировалось Sinn3r, 28.02.2013 в 08:28 .
01.03.2013, 21:49
#17
Новичок
Регистрация: 06.12.2010
Сообщений: 18
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Есть хук на SendPacket
выглядит это дело примерно так
Код:
__declspec( naked ) void _cdecl jmpSendPacket(void* obj, char* format,...)
{
_asm jmp lpSendPacket_Original
}
void _cdecl SendPacket_Hook(void* obj, char* format, ...)
{
if(lpSendPacketObject == 0)
lpSendPacketObject = obj;
va_list args;
va_start(args, format);
printf("Format: %s\n", format);
SendPacket_Detour->Remove();
jmpSendPacket(obj, format, args);
SendPacket_Detour->Apply();
}
хук срабатывает, все классно, но, пакет не доходит. Если ставить хук после коннекта к гейм серверу то вылетает из за ошибки подключения
Добавлено через 54 секунды
Предпалагаю что это из за неправильной пердачи параметров..
Последний раз редактировалось Sinn3r, 01.03.2013 в 21:49 .
Причина: Добавлено сообщение
02.03.2013, 00:11
#18
Пользователь
Регистрация: 05.03.2010
Сообщений: 46
Сказал Спасибо: 0
Имеет 14 спасибок в 9 сообщенях
Если не сложно обьясните как вы дизасемблируете код, у меня например вм протектор мозг вынес я так и не смог его обойти, и вообще реально запустить под отладкой хоть какойто клиент л2?
02.03.2013, 00:44
#19
Новичок
Регистрация: 06.12.2010
Сообщений: 18
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Deadly , хотелось бы сказать, что как все, но у меня с этим такие же проблемы. Использую встроенный в чит енжин дебагер, функционал скудный, но это лучше чем ничего
03.03.2013, 02:15
#20
Местный
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
olly dbg с плагинами вполне успешно справляется с темидой и винлицензом.
тут два варианта решения.
а send проще "захардкодить", если не требуется гибкая работа на разных версиях клиента.
то есть если это делается для конкретного сервера и под конкретный клиент.
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Последний раз редактировалось Elecktron, 03.03.2013 в 02:20 .
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 03:13 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!