Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 19:52   #11
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от StIX-S Посмотреть сообщение
Хотелось бы обойтись без подгрузки лишних dll, а также без модификации файлов сервера.
тут как ни крути одно из двух: лучше всего конечно внедрить свою DLL которая будет перехватывать искомую функцию
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 17.12.2011, 22:23   #12
StIX-S
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 69
Сообщение

Нашел очень хорошую статью по перехвату, по моему то, что мне нужно.
http://www.rsdn.ru/article/baseserv/IntercetionAPI.xml
StIX-S вне форума Ответить с цитированием
Старый 11.08.2017, 18:39   #13
Zagadohnik37
 
Регистрация: 21.03.2015
Сообщений: 3
По умолчанию

Вот исход длл для перехвата:

#include "MinHook.h"
#include <string>



#if defined _M_X64
#pragma comment(lib, "MinHook.x64.lib")
#elif defined _M_IX86
#pragma comment(lib, "MinHook.x86.lib")
#endif


typedef int (WINAPI *MESSAGEBOXW)(HWND, LPCWSTR, LPCWSTR, UINT);
typedef int (WINAPI *MESSAGEBOXA)(HWND, LPCSTR, LPCSTR, UINT);

MESSAGEBOXW fpMessageBoxW = NULL;
MESSAGEBOXA fpMessageBoxA = NULL;

int WINAPI DetourMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType)
{
std::wstring s = lpText;
s = s += L"\n_(HOOK)";
return fpMessageBoxW(hWnd, (LPCWSTR)s.c_str(), lpCaption, uType);
}

int WINAPI DetourMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType)
{
std::string s = lpText;
s = s + "\n_(HOOK)";
return fpMessageBoxA(hWnd, (LPCSTR)s.c_str(), lpCaption, uType);
}

int init()
{
if (MH_Initialize() != MH_OK)
{
return 1;
}
//##########
if (MH_CreateHook(&MessageBoxW, &DetourMessageBoxW,
reinterpret_cast<void**>(&fpMessage BoxW)) != MH_OK)
{
return 1;
}
if (MH_EnableHook(&MessageBoxW) != MH_OK)
{
return 1;
}
//##########
if (MH_CreateHook(&MessageBoxA, &DetourMessageBoxA,
reinterpret_cast<void**>(&fpMessage BoxA)) != MH_OK)
{
return 1;
}
if (MH_EnableHook(&MessageBoxA) != MH_OK)
{
return 1;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
std::wstring s = L"I hook MessageBox! PID: ";
s = s += (std::to_wstring(GetCurrentProcessI d()));

MessageBoxW(NULL, (LPCWSTR)s.c_str(), L"Hello", MB_OK);

OutputDebugStringA("Attached :D!");
init();
OutputDebugStringA("Initiated Hook!");
}
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

Инжектор сами напишите или скачаете.
Zagadohnik37 вне форума Ответить с цитированием
Старый 11.08.2017, 18:42   #14
Zagadohnik37
 
Регистрация: 21.03.2015
Сообщений: 3
По умолчанию

И да, для этого кода нужен MinHook, установка:
Cайт
Zagadohnik37 вне форума Ответить с цитированием
Старый 11.08.2017, 19:01   #15
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Думаете через 6 лет это актуально?
waleri вне форума Ответить с цитированием
Старый 11.08.2017, 19:30   #16
Zagadohnik37
 
Регистрация: 21.03.2015
Сообщений: 3
По умолчанию

Нет, просто решил написать, вдруг кому-то будет нужно...
Zagadohnik37 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Причины появления ошибок mazzahaker Общие вопросы C/C++ 6 12.12.2011 11:28
Задержка появления строк darkahoy Общие вопросы .NET 6 12.11.2010 21:57
Задержка появления окна. DIMANJ Общие вопросы Delphi 5 09.10.2009 21:05
Рисунок. Метод появления. NSvirus Паскаль, Turbo Pascal, PascalABC.NET 1 23.06.2009 01:40
Плавное появления формы Claster Помощь студентам 4 12.11.2008 23:59