#define WIN32_LEAN_AND_MEAN #define NOUSER #include #include #include #define DLL_EXPORT __declspec(dllexport) typedef int (WINAPI *MessageBoxAPtr)(HWND hwnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType); typedef int (WINAPI *MessageBoxWPtr)(HWND hwnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType); DLL_EXPORT WINAPI int MessageBoxA(HWND hwnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) { MessageBoxAPtr proc = (MessageBoxAPtr) GetProcAddress(GetModuleHandle("user32.dll"), "MessageBoxA"); LPSTR buffer = malloc(strlen(lpText) + 1 + 26); strcpy(buffer, "MessageBoxA gruesst Sie!\n"), strcat(buffer, lpText); int result = proc(hwnd, buffer, lpCaption, uType); free(buffer); return result; return 0; } DLL_EXPORT WINAPI int MessageBoxW(HWND hwnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) { MessageBoxWPtr proc = (MessageBoxWPtr) GetProcAddress(GetModuleHandle("user32.dll"), "MessageBoxW"); LPWSTR buffer = malloc(wcslen(lpText) + 1 + 26); wcscpy(buffer, L"MessageBoxW gruesst Sie!\n"); wcscat(buffer, lpText); int result = proc(hwnd, buffer, lpCaption, uType); free(buffer); return result; } DLL_EXPORT WINAPI BOOL GetVersionExW(LPOSVERSIONINFOW version) { if (version->dwOSVersionInfoSize == sizeof(OSVERSIONINFOW)) { version->dwMajorVersion = 4; version->dwMinorVersion = 0; version->dwBuildNumber = 1381; version->dwPlatformId = VER_PLATFORM_WIN32_NT; //wcscpy(version->szCSDVersion, L"Befator Inc gruesst Sie!"); /*HKEY key; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\BCompat"), 0, KEY_READ, &key) == ERROR_SUCCESS) { DWORD size; DWORD major = 0; if (RegQueryValueEx(key, TEXT("ReportedMajor"), NULL, NULL, (LPBYTE) &major, &size) == ERROR_SUCCESS) { version->dwMajorVersion = major; } DWORD minor = 0; if (RegQueryValueEx(key, TEXT("ReportedMinor"), NULL, NULL, (LPBYTE) &minor, &size) == ERROR_SUCCESS) { version->dwMinorVersion = minor; } DWORD build = 0; if (RegQueryValueEx(key, TEXT("ReportedBuild"), NULL, NULL, (LPBYTE) &build, &size) == ERROR_SUCCESS) { version->dwBuildNumber = build; } DWORD platform = 0; if (RegQueryValueEx(key, TEXT("ReportedPlatform"), NULL, NULL, (LPBYTE) &platform, &size) == ERROR_SUCCESS) { version->dwPlatformId = platform; } RegCloseKey(key); }*/ return TRUE; } else { SetLastError(ERROR_INSUFFICIENT_BUFFER); return FALSE; } } DLL_EXPORT WINAPI BOOL GetVersionExA(LPOSVERSIONINFOA version) { if (version->dwOSVersionInfoSize == sizeof(OSVERSIONINFOA)) { OSVERSIONINFOW versionW; versionW.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW); if (GetVersionExW(&versionW)) { version->dwMajorVersion = versionW.dwMajorVersion; version->dwMinorVersion = versionW.dwMinorVersion; version->dwBuildNumber = versionW.dwBuildNumber; version->dwPlatformId = versionW.dwPlatformId; //wcstombs(version->szCSDVersion, versionW.szCSDVersion, ARRAYSIZE(version->szCSDVersion)); return TRUE; } return FALSE; } else { SetLastError(ERROR_INSUFFICIENT_BUFFER); return FALSE; } }