|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.12.2011, 19:52 | #11 |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
тут как ни крути одно из двух: лучше всего конечно внедрить свою DLL которая будет перехватывать искомую функцию
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
17.12.2011, 22:23 | #12 |
Пользователь
Регистрация: 24.06.2011
Сообщений: 69
|
Нашел очень хорошую статью по перехвату, по моему то, что мне нужно.
http://www.rsdn.ru/article/baseserv/IntercetionAPI.xml |
11.08.2017, 18:39 | #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; } Инжектор сами напишите или скачаете. |
11.08.2017, 19:01 | #15 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Думаете через 6 лет это актуально?
|
11.08.2017, 19:30 | #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 |