diff --git a/meshservice/MeshService.aps b/meshservice/MeshService.aps index a4f776c..8db96a2 100644 Binary files a/meshservice/MeshService.aps and b/meshservice/MeshService.aps differ diff --git a/meshservice/MeshService.rc b/meshservice/MeshService.rc index 5e08579..e680f32 100644 --- a/meshservice/MeshService.rc +++ b/meshservice/MeshService.rc @@ -118,6 +118,7 @@ BEGIN LTEXT "Click the buttons below to install or uninstall this remote management software. When installed, this software runs in the background allowing this computer to be managed and controlled by a remote administrator.",IDC_STATIC_LEFTTEXT,7,7,171,63 LTEXT "Static",IDC_STATIC_LINE,7,128,294,1 PUSHBUTTON "Connection Details...",IDC_DETAILSBUTTON,7,111,97,14 + CONTROL "",IDC_IMAGE,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_REALSIZEIMAGE | WS_TABSTOP,185,20,103,95 END IDD_DETAILSDIALOG DIALOGEX 0, 0, 311, 102 diff --git a/meshservice/MeshService.vcxproj b/meshservice/MeshService.vcxproj index 17d2ce4..f5d7435 100644 --- a/meshservice/MeshService.vcxproj +++ b/meshservice/MeshService.vcxproj @@ -552,7 +552,6 @@ - diff --git a/meshservice/MeshService.vcxproj.filters b/meshservice/MeshService.vcxproj.filters index 7c40f45..67d68fe 100644 --- a/meshservice/MeshService.vcxproj.filters +++ b/meshservice/MeshService.vcxproj.filters @@ -30,9 +30,6 @@ Resource Files - - Resource Files - diff --git a/meshservice/ServiceMain.c b/meshservice/ServiceMain.c index a63b59a..577cf61 100644 --- a/meshservice/ServiceMain.c +++ b/meshservice/ServiceMain.c @@ -66,10 +66,10 @@ extern int gRemoteMouseRenderDefault; char *DIALOG_LANG = NULL; HBRUSH DialogBackgroundBrush = NULL; -HBITMAP g_hbmLogo = NULL; duk_context *g_dialogCtx = NULL; char *g_dialogLanguage = NULL; void *g_dialogTranslationObject = NULL; +char image_b64[] = "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"; /* extern int g_TrustedHashSet; @@ -87,6 +87,84 @@ extern int g_ServiceConnectFlags; extern DWORD WINAPI kvm_server_mainloop(LPVOID Param); #endif +#include +#define SmoothingModeAntiAlias 5 +#define InterpolationModeBicubic 8 + + +HMODULE _gdip = NULL; +HMODULE _shm = NULL; +typedef int(*_GdipCreateBitmapFromStream)(void *stream, void **bitmap); +typedef int(*_GdiplusStartup)(void **token, void *input, void *obj); +typedef int(*_GdiplusShutdown)(void *token); +typedef IStream*(*_SHCreateMemStream)(void *buffer, uint32_t bufferLen); +typedef int(*_GdipCreateHBITMAPFromBitmap)(void *bitmap, HBITMAP *hbReturn, int background); +typedef int(*_GdipGetImagePixelFormat)(void *image, int *format); +typedef int(*_GdipCreateBitmapFromScan0)(int width, int height, int stride, int format, BYTE* scan0, void** bitmap); +typedef int(*_GdipGetImageHorizontalResolution)(void *image, float *resolution); +typedef int(*_GdipGetImageVerticalResolution)(void *image, float *resolution); +typedef int(*_GdipBitmapSetResolution)(void* bitmap, float xdpi, float ydpi); +typedef int(*_GdipGetImageGraphicsContext)(void *image, void **graphics); +typedef int(*_GdipSetSmoothingMode)(void *graphics, int smoothingMode); +typedef int(*_GdipSetInterpolationMode)(void *graphics, int interpolationMode); +typedef int(*_GdipDrawImageRectI)(void *graphics, void *image, int x, int y, int width, int height); +typedef int(*_GdipDisposeImage)(void *image); +typedef HRESULT(__stdcall *DpiAwarenessFunc)(PROCESS_DPI_AWARENESS); + +_GdipCreateBitmapFromStream GdipCreateBitmapFromStream; +_GdipCreateHBITMAPFromBitmap GdipCreateHBITMAPFromBitmap; +_GdipGetImagePixelFormat GdipGetImagePixelFormat; +_GdipCreateBitmapFromScan0 GdipCreateBitmapFromScan0; +_GdipGetImageHorizontalResolution GdipGetImageHorizontalResolution; +_GdipGetImageVerticalResolution GdipGetImageVerticalResolution; +_GdipBitmapSetResolution GdipBitmapSetResolution; +_GdipGetImageGraphicsContext GdipGetImageGraphicsContext; +_GdipSetSmoothingMode GdipSetSmoothingMode; +_GdipSetInterpolationMode GdipSetInterpolationMode; +_GdipDrawImageRectI GdipDrawImageRectI; +_GdipDisposeImage GdipDisposeImage; +_GdiplusShutdown GdiplusShutdown; + +_GdiplusStartup GdiplusStartup; +_SHCreateMemStream SHCreateMemStream2; +void *GdiPlusToken = NULL; + +void GdiPlusFlat_Init() +{ + char input[24] = { 0 }; + _gdip = LoadLibraryExW(L"Gdiplus.dll", NULL, LOAD_LIBRARY_SEARCH_USER_DIRS); + if (_gdip == NULL) { _gdip = LoadLibraryExW(L"Gdiplus.dll", NULL, 0); } + if (_gdip == NULL) { return; } + _shm = LoadLibraryExW(L"Shlwapi.dll", NULL, LOAD_LIBRARY_SEARCH_USER_DIRS); + if (_shm == NULL) { _gdip = LoadLibraryExW(L"Shlwapi.dll", NULL, 0); } + if (_shm == NULL) { FreeLibrary(_gdip); _gdip = NULL; return; } + + GdipCreateBitmapFromStream = (_GdipCreateBitmapFromStream)GetProcAddress(_gdip, (LPCSTR)"GdipCreateBitmapFromStream"); + GdiplusStartup = (_GdiplusStartup)GetProcAddress(_gdip, (LPCSTR)"GdiplusStartup"); + SHCreateMemStream2 = (_SHCreateMemStream)GetProcAddress(_shm, (LPCSTR)"SHCreateMemStream"); + GdipCreateHBITMAPFromBitmap = (_GdipCreateHBITMAPFromBitmap)GetProcAddress(_gdip, (LPCSTR)"GdipCreateHBITMAPFromBitmap"); + GdipGetImagePixelFormat = (_GdipGetImagePixelFormat)GetProcAddress(_gdip, (LPCSTR)"GdipGetImagePixelFormat"); + GdipCreateBitmapFromScan0 = (_GdipCreateBitmapFromScan0)GetProcAddress(_gdip, (LPCSTR)"GdipCreateBitmapFromScan0"); + GdipGetImageHorizontalResolution = (_GdipGetImageHorizontalResolution)GetProcAddress(_gdip, (LPCSTR)"GdipGetImageHorizontalResolution"); + GdipGetImageVerticalResolution = (_GdipGetImageVerticalResolution)GetProcAddress(_gdip, (LPCSTR)"GdipGetImageVerticalResolution"); + GdipBitmapSetResolution = (_GdipBitmapSetResolution)GetProcAddress(_gdip, (LPCSTR)"GdipBitmapSetResolution"); + GdipGetImageGraphicsContext = (_GdipGetImageGraphicsContext)GetProcAddress(_gdip, (LPCSTR)"GdipGetImageGraphicsContext"); + GdipSetSmoothingMode = (_GdipSetSmoothingMode)GetProcAddress(_gdip, (LPCSTR)"GdipSetSmoothingMode"); + GdipSetInterpolationMode = (_GdipSetInterpolationMode)GetProcAddress(_gdip, (LPCSTR)"GdipSetInterpolationMode"); + GdipDrawImageRectI = (_GdipDrawImageRectI)GetProcAddress(_gdip, (LPCSTR)"GdipDrawImageRectI"); + GdipDisposeImage = (_GdipDisposeImage)GetProcAddress(_gdip, (LPCSTR)"GdipDisposeImage"); + GdiplusShutdown = (_GdiplusShutdown)GetProcAddress(_gdip, (LPCSTR)"GdiplusShutdown"); + + ((uint32_t*)input)[0] = 1; + GdiplusStartup(&GdiPlusToken, input, NULL); +} +void GdiPlusFlat_Release() +{ + if (GdiPlusToken != NULL) { GdiplusShutdown(GdiPlusToken); GdiPlusToken = NULL; } + if (_gdip != NULL) { FreeLibrary(_gdip); _gdip = NULL; } + if (_shm != NULL) { FreeLibrary(_shm); _shm = NULL; } +} + BOOL IsAdmin() { BOOL admin; @@ -912,7 +990,21 @@ int wmain(int argc, char* wargv[]) g_dialogTranslationObject = duk_get_heapptr(ctx, -1); g_dialogCtx = ctx; g_dialogLanguage = lang; + GdiPlusFlat_Init(); + + HMODULE sh = LoadLibraryExA((LPCSTR)"SHcore.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); + if (sh != NULL) + { + DpiAwarenessFunc func = (DpiAwarenessFunc)GetProcAddress(sh, (LPCSTR)"SetProcessDpiAwareness"); + if (func != NULL) + { + func(0); + } + FreeLibrary(sh); sh = NULL; + } + DialogBoxW(NULL, MAKEINTRESOURCEW(IDD_INSTALLDIALOG), NULL, DialogHandler); + GdiPlusFlat_Release(); Duktape_SafeDestroyHeap(ctx); ILibStopChain(dialogchain); @@ -959,6 +1051,35 @@ WCHAR *Dialog_GetTranslation(void *ctx, char *property) WCHAR closeButtonText[255] = { 0 }; int closeButtonTextSet = 0; +HBITMAP GetScaledImage(char *raw, size_t rawLen, int w, int h) +{ + size_t newLen = ILibBase64DecodeLength(rawLen); + char *decoded = (char*)ILibMemory_SmartAllocate(newLen); + newLen = ILibBase64Decode(raw, (int)rawLen, (unsigned char**)&decoded); + + IStream *instream = SHCreateMemStream2(decoded, (uint32_t)newLen); + void *bm = NULL; + void *g = NULL; + void *nb = NULL; + HBITMAP hbm; + int format; + float REAL_w, REAL_h; + int s = GdipCreateBitmapFromStream((void*)instream, &bm); + s = GdipGetImagePixelFormat(bm, &format); + s = GdipCreateBitmapFromScan0(w, h, 0, format, NULL, &nb); + s = GdipGetImageHorizontalResolution(bm, &REAL_w); + s = GdipGetImageVerticalResolution(bm, &REAL_h); + s = GdipBitmapSetResolution(nb, REAL_w, REAL_h); + s = GdipGetImageGraphicsContext(nb, &g); + s = GdipSetSmoothingMode(g, SmoothingModeAntiAlias); + s = GdipSetInterpolationMode(g, InterpolationModeBicubic); + s = GdipDrawImageRectI(g, bm, 0, 0, w, h); + s = GdipCreateHBITMAPFromBitmap(nb, &hbm, RGB(105, 54, 0)); + s = GdipDisposeImage(bm); + ILibMemory_Free(decoded); + return(hbm); +} + // Message handler for dialog box. INT_PTR CALLBACK DialogHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { @@ -988,21 +1109,6 @@ INT_PTR CALLBACK DialogHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP } case WM_PAINT: { - // Paint the logo - // TODO: We need to auto-scale the image to fit - // TODO: Paint using GDI+ with transparency support - if (g_hbmLogo != NULL) { - BITMAP bm; - PAINTSTRUCT ps; - HDC hdc = BeginPaint(hDlg, &ps); - HDC hdcMem = CreateCompatibleDC(hdc); - HBITMAP hbmOld = SelectObject(hdcMem, g_hbmLogo); - GetObject(g_hbmLogo, sizeof(bm), &bm); - BitBlt(hdc, 326, 14, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY); - SelectObject(hdcMem, hbmOld); - DeleteDC(hdcMem); - EndPaint(hDlg, &ps); - } break; } case WM_INITDIALOG: @@ -1028,10 +1134,6 @@ INT_PTR CALLBACK DialogHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP duk_context *ctx = g_dialogCtx; char *lang = g_dialogLanguage; - // Load the bitmap - // TODO: We need to load a PNG from the .MSH file if present - g_hbmLogo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP_MC)); - if (duk_has_prop_string(ctx, -1, lang)) { duk_get_prop_string(ctx, -1, lang); @@ -1077,59 +1179,29 @@ INT_PTR CALLBACK DialogHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP state_notrunning = Dialog_GetTranslationEx(ctx, Duktape_GetStringPropertyIndexValue(ctx, -1, 2, NULL)); } - -// fileName = MeshAgent_MakeAbsolutePath(selfexe, ".msh"); -// { -// DWORD dwSize = 0; -// BYTE *pVersionInfo = NULL; -// VS_FIXEDFILEINFO *pFileInfo = NULL; -// UINT pLenFileInfo = 0; -// int major, minor, hotfix, other; -// -// if ((dwSize = GetFileVersionInfoSizeW(wselfexe, NULL))) -// { -// if ((pVersionInfo = malloc(dwSize)) == NULL) { ILIBCRITICALEXIT(254); } -// if (GetFileVersionInfoW(wselfexe, 0, dwSize, pVersionInfo)) -// { -// if (VerQueryValue(pVersionInfo, TEXT("\\"), (LPVOID*)&pFileInfo, &pLenFileInfo)) -// { -// // Display the version of this software -// major = (pFileInfo->dwFileVersionMS >> 16) & 0xffff; -// minor = (pFileInfo->dwFileVersionMS) & 0xffff; -// hotfix = (pFileInfo->dwFileVersionLS >> 16) & 0xffff; -// other = (pFileInfo->dwFileVersionLS) & 0xffff; -//#ifdef _WIN64 -// if (SOURCE_COMMIT_DATE != NULL) -// { -// sprintf_s(ILibScratchPad, sizeof(ILibScratchPad), "%s, 64bit", SOURCE_COMMIT_DATE); -// } -// else -// { -// sprintf_s(ILibScratchPad, sizeof(ILibScratchPad), "v%d.%d.%d, 64bit", major, minor, hotfix); -// } -//#else -// if (SOURCE_COMMIT_DATE != NULL) -// { -// sprintf_s(ILibScratchPad, sizeof(ILibScratchPad), "%s", SOURCE_COMMIT_DATE); -// } -// else -// { -// sprintf_s(ILibScratchPad, sizeof(ILibScratchPad), "v%d.%d.%d", major, minor, hotfix); -// } -//#endif -// SetWindowTextA(GetDlgItem(hDlg, IDC_VERSIONTEXT), ILibScratchPad); -// } -// } -// free(pVersionInfo); -// } -// } - if (duk_peval_string(ctx, "_MSH();") == 0) { int installFlagsInt = 0; WINDOWPLACEMENT lpwndpl; + RECT r; + GetWindowRect(GetDlgItem(hDlg, IDC_IMAGE), &r); + duk_size_t rawLen; char *imageraw = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "image", NULL); + if (imageraw != NULL) + { + duk_push_sprintf(g_dialogCtx, "('%s').split(',').pop()", imageraw); // [msh][str] + duk_eval(g_dialogCtx); // [msh][str] + duk_swap_top(g_dialogCtx, -2); // [str][msh] + imageraw = (char*)duk_get_lstring(g_dialogCtx, -2, &rawLen); + HBITMAP scaled = GetScaledImage(imageraw, rawLen, 155, 155); + SendMessageW(GetDlgItem(hDlg, IDC_IMAGE), STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)scaled); + } + else + { + HBITMAP scaled = GetScaledImage(image_b64, sizeof(image_b64) - 1, 155, 155); + SendMessageW(GetDlgItem(hDlg, IDC_IMAGE), STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)scaled); + } installFlags = Duktape_GetStringPropertyValue(ctx, -1, "InstallFlags", NULL); meshname = (WCHAR*)Duktape_GetStringPropertyValue(ctx, -1, "MeshName", NULL); meshid = Duktape_GetStringPropertyValue(ctx, -1, "MeshID", NULL); @@ -1173,6 +1245,8 @@ INT_PTR CALLBACK DialogHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP else { EnableWindow(GetDlgItem(hDlg, IDC_CONNECTBUTTON), FALSE); + HBITMAP scaled = GetScaledImage(image_b64, sizeof(image_b64) - 1, 155, 155); + SendMessageW(GetDlgItem(hDlg, IDC_IMAGE), STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)scaled); } // Get the current service running state @@ -1326,7 +1400,7 @@ INT_PTR CALLBACK DialogHandler2(HWND hDlg, UINT message, WPARAM wParam, LPARAM l WCHAR *meshidentitifer = NULL; WCHAR *oktext = NULL; WCHAR *dialogtitle = NULL; - meshname = (WCHAR*)Duktape_GetStringPropertyValue(g_dialogCtx, -1, "MeshName", NULL); + meshname = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "MeshName", NULL); meshid = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "MeshID", NULL); serverid = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "ServerID", NULL); serverurl = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "MeshServer", NULL); diff --git a/meshservice/resource.h b/meshservice/resource.h index 0e0659e..01de2c9 100644 --- a/meshservice/resource.h +++ b/meshservice/resource.h @@ -29,6 +29,7 @@ #define IDC_TAB2 1021 #define IDC_TABS 1021 #define IDC_STATIC_LEFTTEXT 1022 +#define IDC_IMAGE 1023 #define IDC_STATIC_LINE 1024 #define IDC_DETAILSBUTTON 1031 diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index cc3df12..71b76d5 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2366,7 +2366,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('PE_Parser', Buffer.from('eJytV0tz2kgQvlPFf+j1RSjL8rJCEVM+EOxUqPWCC4FTOQ7SCKYsZrSjkTGbyn/fHkkIiad2KzogNNPzdffXL6n5oVoZimAr2XKloNNq92DEFfVhKGQgJFFM8GqlWnliDuUhdSHiLpWgVhQGAXHwlu7U4YXKEKWh02hBTQvcpFs3Zr9a2YoI1mQLXCiIQooILASP+RTou0MDBYyDI9aBzwh3KGyYWsVaUoxGtfI9RRALRVCYoHiAT15eDIjS1gJeK6WCu2Zzs9k0SGxpQ8hl00/kwubTaPg4th//QGv1iTn3aRiCpH9HTKKbiy2QAI1xyAJN9MkGhASylBT3lNDGbiRTjC/rEApPbYik1YrLQiXZIlIFnnamob95AWSKcLgZ2DCyb+DzwB7Z9Wrl22j2dTKfwbfBdDoYz0aPNkymMJyMH0az0WSMT19gMP4Of47GD3WgyBJqoe+B1NajiUwzSF2ky6a0oN4TiTlhQB3mMQed4suILCksxRuVHH2BgMo1C3UUQzTOrVZ8tmYqToLw2CNU8qGpyWs2YUpVJDnygmrW8QEgCxGpJM70nTqR0lRWK17EnXg/IDKkNdx6JmplVis/kri9EYlhUC/Eh3v48bO/X/VCXEkjVDO80DDzmy5uemFDBJTbW+7sgOtgyEVBcrFVNJxS4ubWXBF+xRX07x4+R55HZYP4vnBqXSt/lKvTUp2ClAhSsf4uF2OCiBuT9zCxYRVvJ3uZOYn9Ev/F9ntufW9WHVp16Fp42yliHtSy7fjUHAu33X16rLXMhhI2Jhpf1tpd/TAPMLJDgnSb8Ns9GB8H1oNhJkAp7fpSKyk2UDMiLqkjlpz9oyuBcSK3kMQ1I/LnKdfGs9Ke7ZiMHds9NHzKlzpkx47ddtCxbsvMu58dC3VV1xDIynlurOi7kbrbsj628Lrgsm5LBJ4f45aU91LfQuxGziqnsEC3VaT7WIeDxIPRthzjTtN120FO1X5bX0nCNxKSkS7jvdc1+kWZBWp97R/C9rpdK8HtWmVwUfoKrks9EvkqxpzzVy42/DKobgwe49S9AJzlS3oYawR7APETQm3MNAQ6zW8ny/mzZweuGzfA+wuZA7/jeDtZkTu8QvJmRXxY62eN3Fl5Ke0z1Djvs6cSia/NL/aiaD19GRzQX+BpuKLOqx2tn8V1Ziz86VpFnjWzE28oXB2bva2F45Z56syI42wkvu4fD0SR88d7J4/PeWmAdsfM3N6V6bHo9bZ4tmpbn/NVm3bDYp5nkThj46eO2T9ZQUMqlR7FRNGZHo77ND7rba8kVFpR53Buy5qkccrmD6KeBpVvxFZEqrJlqsE+dUu1v84uPkn3+1/xabfKsno9QJb1awJk/ZdAlw6Q1ft1AWq3D6N9bpAUpXYTNx0tgPoj/XaKbSx+R53suvFfZMmcOzBQ15mea12s6MvTqOj9ENXrUZakStZR9FvG5VQ47hv5yUIi/OWKObqHOnsEbP3cx28Xnqxiy9KP+oTHZKgAz8itucfU/X7lHo2iQo4cjhqUj4cM3rPxcsWXHFoqmbP5ULnGLeRGy7xkzjFgbN3xckljMSv2nl21/ISa/YviAvMFX4sugzxsnmJVCHbC82Jeoe+OL0KaOp+bcfobKc0ovRq/Fa2FG/m0gR9xQipde/GHUZyD1cq/OIedMw==', 'base64'));"); // Windows Message Pump, refer to modules/win-message-pump.js - duk_peval_string_noresult(ctx, "addCompressedModule('win-userconsent', Buffer.from('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', 'base64'), '2022-01-17T15:11:20.000-08:00');"); + duk_peval_string_noresult(ctx, "addCompressedModule('win-userconsent', Buffer.from('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', 'base64'), '2022-01-19T20:11:35.000-08:00');"); duk_peval_string_noresult(ctx, "addCompressedModule('win-message-pump', Buffer.from('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', 'base64'), '2021-12-10T11:39:27.000-08:00');"); duk_peval_string_noresult(ctx, "addCompressedModule('win-console', Buffer.from('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', 'base64'));"); diff --git a/modules/win-userconsent.js b/modules/win-userconsent.js index 0f0dcaa..86d236b 100644 --- a/modules/win-userconsent.js +++ b/modules/win-userconsent.js @@ -16,8 +16,8 @@ limitations under the License. */ const HALFTONE = 4; -const SmoothingModeAntiAlias = 4; -const InterpolationModeBicubic = 5; +const SmoothingModeAntiAlias = 5; +const InterpolationModeBicubic = 8; const WM_SETFONT = 0x0030; const WM_CTLCOLORSTATIC = 0x0138;