Advertisement
Dodovogel

MessageBox (A/W) Detour (Hook) C++

May 31st, 2014
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <Windows.h>
  2. #include "Detour.h"
  3.  
  4. HMODULE hModule = GetModuleHandleA("User32.dll");
  5. DWORD dwMessageBoxA_location = (DWORD)GetProcAddress(hModule, "MessageBoxA");
  6. DWORD dwMessageBoxW_location = (DWORD)GetProcAddress(hModule, "MessageBoxW");
  7.  
  8. typedef int (WINAPI* tdMessageBoxA)(HWND, LPCSTR, LPCSTR, UINT);
  9. typedef int (WINAPI* tdMessageBoxW)(HWND, LPCWSTR, LPCWSTR, UINT);
  10. tdMessageBoxA p_tdMessageBoxA = NULL;
  11. tdMessageBoxW p_tdMessageBoxW = NULL;
  12.  
  13. int WINAPI dtMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) {
  14.     lpText = "Detoured MessageBoxA";
  15.     return p_tdMessageBoxA(hWnd, lpText, lpCaption, uType);
  16. }
  17.  
  18. int WINAPI dtMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) {
  19.     lpText = L"Detoured MessageBoxW";
  20.     return p_tdMessageBoxW(hWnd, lpText, lpCaption, uType);
  21. }
  22.  
  23. BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
  24.     if (fdwReason == DLL_PROCESS_ATTACH) {
  25.         p_tdMessageBoxA = (tdMessageBoxA)
  26.             DetourFunction((PBYTE)dwMessageBoxA_location, (PBYTE)dtMessageBoxA);
  27.             //DetourFunction((PBYTE)MessageBoxA, (PBYTE)dtMessageBoxA); would also work.
  28.         p_tdMessageBoxW = (tdMessageBoxW)
  29.             DetourFunction((PBYTE)dwMessageBoxW_location, (PBYTE)dtMessageBoxW);
  30.             //DetourFunction((PBYTE)MessageBoxW, (PBYTE)dtMessageBoxW); would also work.
  31.     } return 1;
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement