![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
![]()
тут как ни крути одно из двух: лучше всего конечно внедрить свою DLL которая будет перехватывать искомую функцию
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 24.06.2011
Сообщений: 70
|
![]()
Нашел очень хорошую статью по перехвату, по моему то, что мне нужно.
http://www.rsdn.ru/article/baseserv/IntercetionAPI.xml |
![]() |
![]() |
![]() |
#13 |
Регистрация: 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; } Инжектор сами напишите или скачаете. |
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,371
|
![]()
Думаете через 6 лет это актуально?
|
![]() |
![]() |
![]() |
#16 |
Регистрация: 21.03.2015
Сообщений: 3
|
![]()
Нет, просто решил написать, вдруг кому-то будет нужно...
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Причины появления ошибок | 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 |