1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2026-01-04 17:43:45 +00:00

Hybrid Experiment/PoC

This commit is contained in:
Bryan Roe
2021-12-06 19:50:35 -08:00
parent 3268eeb03e
commit 375515c0a3

View File

@@ -81,7 +81,8 @@ ILibTransport_DoneState kvm_serviceWriteSink(char *buffer, int bufferLen, void *
#ifdef WIN32
#define wmain_free(argv) for(argvi=0;argvi<(int)(ILibMemory_Size(argv)/sizeof(void*));++argvi){ILibMemory_Free(argv[argvi]);}ILibMemory_Free(argv);
int wmain(int argc, char **wargv)
//int wmain(int argc, char **wargv)
int APIENTRY wWinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PWSTR cmdline, int cmdshow)
#else
int main(int argc, char **argv)
#endif
@@ -95,15 +96,34 @@ int main(int argc, char **argv)
int integratedJavaScriptLen = 0;
int retCode = 0;
int capabilities = 0;
#ifdef WIN32
//TODO: This has two leaks... The CommandLineToArgvW below, and the Console below that... It needs to detach. This was only an experiment.
int argc;
LPWSTR *wargv = CommandLineToArgvW(cmdline, &argc);
WCHAR tmpExePath[2048];
GetModuleFileNameW(NULL, tmpExePath, sizeof(tmpExePath) / 2);
int argvi, argvsz;
char **argv = (char**)ILibMemory_SmartAllocate(argc * sizeof(void*));
char **argv = (char**)ILibMemory_SmartAllocate((argc + 1) * sizeof(void*));
argvsz = WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)tmpExePath, -1, NULL, 0, NULL, NULL);
argv[0] = (char*)ILibMemory_SmartAllocate(argvsz);
WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)tmpExePath, -1, argv[0], argvsz, NULL, NULL);
for (argvi = 0; argvi < argc; ++argvi)
{
argvsz = WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)wargv[argvi], -1, NULL, 0, NULL, NULL);
argv[argvi] = (char*)ILibMemory_SmartAllocate(argvsz);
WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)wargv[argvi], -1, argv[argvi], argvsz, NULL, NULL);
argv[argvi+1] = (char*)ILibMemory_SmartAllocate(argvsz);
WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)wargv[argvi], -1, argv[argvi+1], argvsz, NULL, NULL);
}
++argc;
if (AttachConsole((DWORD)-1) == 0)
{
AllocConsole();
}
#endif
@@ -113,7 +133,6 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
#endif
#endif
ILibDuktape_ScriptContainer_CheckEmbedded(&integratedJavaScript, &integratedJavaScriptLen);
if (integratedJavaScriptLen != 0 && integratedJavaScript != NULL && argc > 1)
@@ -130,7 +149,18 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
}
}
}
if (argc > 2 && strcmp(argv[1], "-hexec") == 0 && integratedJavaScriptLen == 0)
{
ShowWindow(GetConsoleWindow(), 0);
integratedJavaScript = ILibString_Copy(argv[2], 0);
integratedJavaScriptLen = (int)strnlen_s(integratedJavaScript, sizeof(ILibScratchPad));
}
if (argc > 2 && strcmp(argv[1], "-hb64exec") == 0)
{
ShowWindow(GetConsoleWindow(), 0);
integratedJavaScript = NULL;
integratedJavaScriptLen = ILibBase64Decode((unsigned char *)argv[2], (const int)strnlen_s(argv[2], sizeof(ILibScratchPad2)), (unsigned char**)&integratedJavaScript);
}
if (argc > 2 && strcmp(argv[1], "-exec") == 0 && integratedJavaScriptLen == 0)
{
integratedJavaScript = ILibString_Copy(argv[2], 0);