Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 19.12.2011, 19:35   #11
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

Цитата:
SplaisingVMTF(ClientEncrypt, NewCrypt);
SplaisingVMTF(ClientDecrypt, NewCrypt);
э.. и чо это значит ?
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 19.12.2011, 20:24   #12
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Цитата:
Сообщение от 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. Причина: Добавлено сообщение
ALF вне форума   Ответить с цитированием
Старый 19.12.2011, 22:07   #13
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

Цитата:
Сообщение от ALF Посмотреть сообщение
ВСё, проблема решена)
ну хоть отписалбы что там было
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
Старый 20.12.2011, 17:46   #14
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Была неправильная функция.
Вот исправил)

Код:
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;
};
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Старый 21.12.2012, 13:37   #15
Новичок
 
Регистрация: 21.12.2012
Сообщений: 3
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
[ Mifesto ] пока неопределено
По умолчанию

не хочется плодить темы, спрошу тут.

вот получается есть функция поиска адреса 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
ткнет пальцем кто на ошибку?
[ Mifesto ] вне форума   Ответить с цитированием
Старый 28.02.2013, 02:26   #16
Новичок
 
Регистрация: 06.12.2010
Сообщений: 18
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Sinn3r пока неопределено
По умолчанию

Тут был глупый вопрос, который разрешился сам собой

Последний раз редактировалось Sinn3r, 28.02.2013 в 08:28.
Sinn3r вне форума   Ответить с цитированием
Старый 01.03.2013, 21:49   #17
Новичок
 
Регистрация: 06.12.2010
Сообщений: 18
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Sinn3r пока неопределено
По умолчанию

Есть хук на 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. Причина: Добавлено сообщение
Sinn3r вне форума   Ответить с цитированием
Старый 02.03.2013, 00:11   #18
Пользователь
 
Регистрация: 05.03.2010
Сообщений: 46
Сказал Спасибо: 0
Имеет 14 спасибок в 9 сообщенях
Deadly пока неопределено
По умолчанию

Если не сложно обьясните как вы дизасемблируете код, у меня например вм протектор мозг вынес я так и не смог его обойти, и вообще реально запустить под отладкой хоть какойто клиент л2?
Deadly вне форума   Ответить с цитированием
Старый 02.03.2013, 00:44   #19
Новичок
 
Регистрация: 06.12.2010
Сообщений: 18
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Sinn3r пока неопределено
По умолчанию

Deadly, хотелось бы сказать, что как все, но у меня с этим такие же проблемы. Использую встроенный в чит енжин дебагер, функционал скудный, но это лучше чем ничего
Sinn3r вне форума   Ответить с цитированием
Старый 03.03.2013, 02:15   #20
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

olly dbg с плагинами вполне успешно справляется с темидой и винлицензом. тут два варианта решения.

а send проще "захардкодить", если не требуется гибкая работа на разных версиях клиента.
то есть если это делается для конкретного сервера и под конкретный клиент.
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...

Последний раз редактировалось Elecktron, 03.03.2013 в 02:20.
Elecktron вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!