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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 12.04.2010, 21:39   #1
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 60
Сказал Спасибо: 3
Имеет 107 спасибок в 21 сообщенях
GoldFinch пока неопределено
По умолчанию [C++] перехват AddNetworkQueue

Перехват UNetworkHandler::AddNetworkQueue, для фришек
cpp Код:
#include <Windows.h> class UNetworkHandler {}; #pragma pack(push, 1) struct NetworkPacket {     unsigned char id, _padding1, exid, _padding2;     unsigned short size, _padding3;     unsigned char* data; }; #pragma pack(pop) int (__fastcall *UNetworkHandler_AddNetworkQueue)(UNetworkHandler*, int, NetworkPacket*); int __fastcall UNetworkHandler_AddNetworkQueue_hook(UNetworkHandler* This, int /*edx*/, NetworkPacket* packet) {     // Полезная нагрузка перехвата     char buf&#91;1024];     wsprintfA(buf, "Packet id=0x%x, size=0x%x", packet->id, packet->size);     OutputDebugStringA(buf);     //-----------------------------------------     return (*UNetworkHandler_AddNetworkQueue)(This, 0/*чтоугодно*/, packet); } DWORD WINAPI InitThread(LPVOID) {     HMODULE hEngine = LoadLibraryA("Engine.dll");     (FARPROC&) UNetworkHandler_AddNetworkQueue = GetProcAddress(hEngine, "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPacket@@@Z");     void** UNetworkHandler_vftable = (void**)GetProcAddress(hEngine, "??_7UNetworkHandler@@6BUObject@@@");     while(*UNetworkHandler_vftable != (void*)UNetworkHandler_AddNetworkQueue)         ++UNetworkHandler_vftable;     *UNetworkHandler_vftable = (void*)UNetworkHandler_AddNetworkQueue_hook;     return 0; } BOOL WINAPI DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID) {     if (DLL_PROCESS_ATTACH != ul_reason_for_call)         return 1;     DisableThreadLibraryCalls(hModule);     CreateThread(0, 0, &InitThread, 0, 0, 0);     return 1; }

Спасибо Demion за идею использовать __fastcall вместо __thiscall.
GoldFinch вне форума   Ответить с цитированием
За это сообщение GoldFinch нажился 7 спасибками от:
 

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



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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:25.

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

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