#include #include #include #include #include "Global.h" #include "Win32API.h" #include "AppMan.h" ////////////////////////////////////////////////////////////////////////////////////////////// // // Global Variables // ////////////////////////////////////////////////////////////////////////////////////////////// WCHAR gwszGlobalString[MAX_STRING_LEN]; CHAR gszGlobalString[MAX_STRING_LEN]; GUID gsCryptoGuid = { 0xb47c09c9, 0x1ace, 0x4bc3, 0xab, 0x45, 0x29, 0xa1, 0x80, 0x37, 0xa6, 0xf9 }; ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern LPSTR MakeString(LPCSTR szFormat, ...) { va_list ArgumentList; if (NULL != szFormat) { va_start(ArgumentList, szFormat); _vsnprintf(gszGlobalString, 512, szFormat, ArgumentList); va_end(ArgumentList); } return gszGlobalString; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern DWORD GetAppManVersion(void) { return 1; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern BOOL StringToGuidW(LPCWSTR wszGuidString, GUID * lpGuid) { BOOL fSuccess = FALSE; if (11 == swscanf(wszGuidString, L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", &lpGuid->Data1, &lpGuid->Data2, &lpGuid->Data3, &lpGuid->Data4[0], &lpGuid->Data4[1], &lpGuid->Data4[2], &lpGuid->Data4[3], &lpGuid->Data4[4], &lpGuid->Data4[5], &lpGuid->Data4[6], &lpGuid->Data4[7])) { fSuccess = TRUE; } return fSuccess; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern BOOL GuidToStringW(const GUID * lpGuid, LPWSTR wszGuidString) { BOOL fSuccess = FALSE; if (38 == swprintf(wszGuidString, L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", lpGuid->Data1, lpGuid->Data2, lpGuid->Data3, lpGuid->Data4[0], lpGuid->Data4[1], lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7])) { fSuccess = TRUE; } return fSuccess; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern BOOL StringToGuidA(LPCSTR szGuidString, GUID * lpGuid) { BOOL fSuccess = FALSE; DWORD dwDword[11]; if (11 == sscanf(szGuidString, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", &dwDword[0], &dwDword[1], &dwDword[2], &dwDword[3], &dwDword[4], &dwDword[5], &dwDword[6], &dwDword[7], &dwDword[8], &dwDword[9], &dwDword[10])) { lpGuid->Data1 = dwDword[0]; lpGuid->Data2 = (WORD) dwDword[1]; lpGuid->Data3 = (WORD) dwDword[2]; lpGuid->Data4[0] = (BYTE) dwDword[3]; lpGuid->Data4[1] = (BYTE) dwDword[4]; lpGuid->Data4[2] = (BYTE) dwDword[5]; lpGuid->Data4[3] = (BYTE) dwDword[6]; lpGuid->Data4[4] = (BYTE) dwDword[7]; lpGuid->Data4[5] = (BYTE) dwDword[8]; lpGuid->Data4[6] = (BYTE) dwDword[9]; lpGuid->Data4[7] = (BYTE) dwDword[10]; fSuccess = TRUE; } return fSuccess; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern BOOL GuidToStringA(const GUID * lpGuid, LPSTR szGuidString) { BOOL fSuccess = FALSE; if (38 == wsprintfA(szGuidString, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", lpGuid->Data1, lpGuid->Data2, lpGuid->Data3, lpGuid->Data4[0], lpGuid->Data4[1], lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7])) { fSuccess = TRUE; } return fSuccess; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern void EncryptGuid(GUID * lpGuid) { DWORD dwIndex; BYTE * lpCryptoByte; BYTE * lpGuidByte; lpCryptoByte = (BYTE *) &gsCryptoGuid; lpGuidByte = (BYTE *) lpGuid; for (dwIndex = 0; dwIndex < sizeof(GUID); dwIndex++) { *(lpGuidByte + dwIndex) = (BYTE)(*(lpGuidByte + dwIndex) ^ *(lpCryptoByte + dwIndex)); } } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern void DecryptGuid(GUID * lpGuid) { DWORD dwIndex; BYTE * lpCryptoByte; BYTE * lpGuidByte; lpCryptoByte = (BYTE *) &gsCryptoGuid; lpGuidByte = (BYTE *) lpGuid; for (dwIndex = 0; dwIndex < sizeof(GUID); dwIndex++) { *(lpGuidByte + dwIndex) = (BYTE)(*(lpGuidByte + dwIndex) ^ *(lpCryptoByte + dwIndex)); } } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern void RandomInit(void) { srand((unsigned) time(NULL)); } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern BYTE RandomBYTE(void) { DWORD dwRandom; dwRandom = (rand() * 0xff) / RAND_MAX; return (BYTE) dwRandom; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern WORD RandomWORD(void) { WORD wRandom; wRandom = (WORD)(rand() * 2); return wRandom; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern DWORD RandomDWORD(void) { DWORD dwRandom; dwRandom = rand() * (0xffffffff/RAND_MAX); return dwRandom; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern DWORD StrLenA(LPCSTR szString) { DWORD dwIndex; dwIndex = 0; while ((MAX_PATH_CHARCOUNT > dwIndex)&&(0 != szString[dwIndex])) { dwIndex++; } return dwIndex + 1; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern DWORD StrLenW(LPCWSTR wszString) { DWORD dwIndex; dwIndex = 0; while ((MAX_PATH_CHARCOUNT > dwIndex)&&(0 != wszString[dwIndex])) { dwIndex++; } return dwIndex + 1; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern BOOL GetResourceStringA(DWORD dwResourceId, LPSTR szString, DWORD dwStringCharLen) { HINSTANCE hDllInstance; BOOL fSuccess = FALSE; hDllInstance = (HINSTANCE) GetModuleHandle("AppMan.dll"); if (0 < LoadStringA(hDllInstance, dwResourceId, szString, dwStringCharLen)) { fSuccess = TRUE; } return fSuccess; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern BOOL GetResourceStringW(DWORD dwResourceId, LPWSTR wszString, DWORD dwStringCharLen) { HINSTANCE hDllInstance; BOOL fSuccess = FALSE; CWin32API sWin32API; hDllInstance = (HINSTANCE) GetModuleHandle("AppMan.dll"); if (0 < LoadStringA(hDllInstance, dwResourceId, gszGlobalString, MAX_PATH_CHARCOUNT)) { if (0 < sWin32API.MultiByteToWideChar(gszGlobalString, MAX_PATH_CHARCOUNT, wszString, dwStringCharLen)) { fSuccess = TRUE; } } return fSuccess; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern LPSTR GetResourceStringPtrA(DWORD dwResourceId) { LPSTR lpszStringPtr = NULL; if (TRUE == GetResourceStringA(dwResourceId, gszGlobalString, MAX_PATH_CHARCOUNT)) { lpszStringPtr = gszGlobalString; } return lpszStringPtr; } ////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////// extern LPWSTR GetResourceStringPtrW(DWORD dwResourceId) { LPWSTR lpwszStringPtr = NULL; if (TRUE == GetResourceStringW(dwResourceId, gwszGlobalString, MAX_PATH_CHARCOUNT)) { lpwszStringPtr = gwszGlobalString; } return lpwszStringPtr; }