diff --git a/Scylla/Architecture.cpp b/Scylla/Architecture.cpp new file mode 100644 index 0000000..5f81765 --- /dev/null +++ b/Scylla/Architecture.cpp @@ -0,0 +1,23 @@ +#include "Architecture.h" + +/* +#ifdef _WIN64 + +const WCHAR Architecture::NAME[] = L"x64"; + +const WCHAR Architecture::PRINTF_DWORD_PTR[] = L"%I64X"; +const WCHAR Architecture::PRINTF_DWORD_PTR_FULL[] = L"%016I64X"; +const WCHAR Architecture::PRINTF_DWORD_PTR_HALF[] = L"%08I64X"; +const WCHAR Architecture::PRINTF_INTEGER[] = L"%I64u"; + +#else + +const WCHAR Architecture::NAME[] = L"x86"; + +const WCHAR Architecture::PRINTF_DWORD_PTR[] = L"%X"; +const WCHAR Architecture::PRINTF_DWORD_PTR_FULL[] = L"%08X"; +const WCHAR Architecture::PRINTF_DWORD_PTR_HALF[] = L"%08X"; +const WCHAR Architecture::PRINTF_INTEGER[] = L"%u"; + +#endif +*/ diff --git a/Scylla/Architecture.h b/Scylla/Architecture.h new file mode 100644 index 0000000..9b2c4d0 --- /dev/null +++ b/Scylla/Architecture.h @@ -0,0 +1,27 @@ +#pragma once + +#include + +#ifdef _WIN64 + +#define ARCHITECTURE_S "x64" +#define PRINTF_DWORD_PTR_S "%I64X" +#define PRINTF_DWORD_PTR_FULL_S "%016I64X" +#define PRINTF_DWORD_PTR_HALF_S "%08I64X" +#define PRINTF_INTEGER_S "%I64u" + +#else + +#define ARCHITECTURE_S "x86" +#define PRINTF_DWORD_PTR_S "%X" +#define PRINTF_DWORD_PTR_FULL_S "%08X" +#define PRINTF_DWORD_PTR_HALF_S "%08X" +#define PRINTF_INTEGER_S "%u" + +#endif + +#define ARCHITECTURE TEXT(ARCHITECTURE_S) +#define PRINTF_DWORD_PTR TEXT(PRINTF_DWORD_PTR_S) +#define PRINTF_DWORD_PTR_FULL TEXT(PRINTF_DWORD_PTR_FULL_S) +#define PRINTF_DWORD_PTR_HALF TEXT(PRINTF_DWORD_PTR_HALF_S) +#define PRINTF_INTEGER TEXT(PRINTF_INTEGER_S) diff --git a/Scylla/Configuration.cpp b/Scylla/Configuration.cpp new file mode 100644 index 0000000..459e304 --- /dev/null +++ b/Scylla/Configuration.cpp @@ -0,0 +1,64 @@ +#include "Configuration.h" + +Configuration::Configuration(const WCHAR* name, Type type) +{ + wcscpy_s(this->name, name); + this->type = type; + valueNumeric = 0; + valueString[0] = L'\0'; +} + +const WCHAR* Configuration::getName() const +{ + return name; +} + +Configuration::Type Configuration::getType() const +{ + return type; +} + +DWORD_PTR Configuration::getNumeric() const +{ + return valueNumeric; +} + +void Configuration::setNumeric(DWORD_PTR value) +{ + valueNumeric = value; +} + +const WCHAR* Configuration::getString() const +{ + return valueString; +} + +void Configuration::setString(const WCHAR* str) +{ + wcsncpy_s(valueString, str, _countof(valueString)); +} + +bool Configuration::getBool() const +{ + return getNumeric() == 1; +} + +void Configuration::setBool(bool flag) +{ + setNumeric(flag ? 1 : 0); +} + +bool Configuration::isTrue() const +{ + return getBool(); +} + +void Configuration::setTrue() +{ + setBool(true); +} + +void Configuration::setFalse() +{ + setBool(false); +} diff --git a/Scylla/Configuration.h b/Scylla/Configuration.h new file mode 100644 index 0000000..97b643f --- /dev/null +++ b/Scylla/Configuration.h @@ -0,0 +1,45 @@ +#pragma once + +#include + +class Configuration +{ +public: + + enum Type { + String, + Decimal, + Hexadecimal, + Boolean + }; + + static const size_t CONFIG_NAME_LENGTH = 100; + static const size_t CONFIG_STRING_LENGTH = 100; + + Configuration(const WCHAR* name = L"", Type type = String); + + const WCHAR* getName() const; + Type getType() const; + + DWORD_PTR getNumeric() const; + void setNumeric(DWORD_PTR value); + + const WCHAR* getString() const; + void setString(const WCHAR* str); + + bool getBool() const; + void setBool(bool flag); + + // Redundant (we have getBool and setBool), but easier on the eye + bool isTrue() const; + void setTrue(); + void setFalse(); + +private: + + WCHAR name[CONFIG_NAME_LENGTH]; + Type type; + + DWORD_PTR valueNumeric; + WCHAR valueString[CONFIG_STRING_LENGTH]; +}; diff --git a/Scylla/Scylla.cpp b/Scylla/Scylla.cpp new file mode 100644 index 0000000..6517a3c --- /dev/null +++ b/Scylla/Scylla.cpp @@ -0,0 +1,31 @@ +#include "Scylla.h" + +#include "NativeWinApi.h" +#include "SystemInformation.h" +#include "ProcessAccessHelp.h" + +ConfigurationHolder Scylla::config(L"Scylla.ini"); +PluginLoader Scylla::plugins; + +ProcessLister Scylla::processLister; + +const WCHAR Scylla::DEBUG_LOG_FILENAME[] = L"Scylla_debug.log"; + +FileLog Scylla::debugLog(DEBUG_LOG_FILENAME); +ListboxLog Scylla::windowLog; + +void Scylla::init() +{ + config.loadConfiguration(); + plugins.findAllPlugins(); + + NativeWinApi::initialize(); + SystemInformation::getSystemInformation(); + + if(config[DEBUG_PRIVILEGE].isTrue()) + { + processLister.setDebugPrivileges(); + } + + ProcessAccessHelp::getProcessModules(GetCurrentProcessId(), ProcessAccessHelp::ownModuleList); +} diff --git a/Scylla/Scylla.h b/Scylla/Scylla.h new file mode 100644 index 0000000..84ed093 --- /dev/null +++ b/Scylla/Scylla.h @@ -0,0 +1,31 @@ +#pragma once + +#include "ConfigurationHolder.h" +#include "PluginLoader.h" +#include "ProcessLister.h" +#include "Logger.h" + +#define APPNAME_S "Scylla" +#define APPVERSION_S "v0.5a" + +#define APPNAME TEXT(APPNAME_S) +#define APPVERSION TEXT(APPVERSION_S) + +class Scylla +{ +public: + + static void init(); + + static ConfigurationHolder config; + static PluginLoader plugins; + + static ProcessLister processLister; + + static FileLog debugLog; + static ListboxLog windowLog; + +private: + + static const WCHAR DEBUG_LOG_FILENAME[]; +}; diff --git a/Scylla/Scylla.vcxproj b/Scylla/Scylla.vcxproj index 0848e32..8b449d0 100644 --- a/Scylla/Scylla.vcxproj +++ b/Scylla/Scylla.vcxproj @@ -1,235 +1,236 @@  Debug Win32 Debug x64 Release Win32 Release x64 {710434C9-FC4B-4F1D-B318-E10ADC78499F} Win32Proj Scylla Application true Unicode Application true Unicode Application false true Unicode v100 Application false true Unicode true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true false $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false Level3 Disabled WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) $(SolutionDir)diStorm\include;$(SolutionDir)tinyxml;%(AdditionalIncludeDirectories) Windows true - $(SolutionDir)$(Platform)\$(Configuration)\diStorm.lib;$(SolutionDir)$(Platform)\$(Configuration)\tinyxml.lib;%(AdditionalDependencies) + $(SolutionDir)$(Platform)\$(Configuration)\diStorm.lib;$(SolutionDir)$(Platform)\$(Configuration)\tinyxml.lib;psapi.lib;imagehlp.lib;%(AdditionalDependencies) type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' Level3 Disabled WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) $(SolutionDir)diStorm\include;$(SolutionDir)tinyxml;%(AdditionalIncludeDirectories) Windows true - $(SolutionDir)$(Platform)\$(Configuration)\diStorm.lib;$(SolutionDir)$(Platform)\$(Configuration)\tinyxml.lib;%(AdditionalDependencies) + $(SolutionDir)$(Platform)\$(Configuration)\diStorm.lib;$(SolutionDir)$(Platform)\$(Configuration)\tinyxml.lib;psapi.lib;imagehlp.lib;%(AdditionalDependencies) type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' Level3 MaxSpeed true true WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreaded $(SolutionDir)diStorm\include;$(SolutionDir)tinyxml;%(AdditionalIncludeDirectories) true Windows false true true - $(SolutionDir)$(Platform)\$(Configuration)\diStorm.lib;$(SolutionDir)$(Platform)\$(Configuration)\tinyxml.lib;%(AdditionalDependencies) + $(SolutionDir)$(Platform)\$(Configuration)\diStorm.lib;$(SolutionDir)$(Platform)\$(Configuration)\tinyxml.lib;psapi.lib;imagehlp.lib;%(AdditionalDependencies) type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' Level3 MaxSpeed true true WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreaded $(SolutionDir)diStorm\include;$(SolutionDir)tinyxml;%(AdditionalIncludeDirectories) true Windows false true true - $(SolutionDir)$(Platform)\$(Configuration)\diStorm.lib;$(SolutionDir)$(Platform)\$(Configuration)\tinyxml.lib;%(AdditionalDependencies) + $(SolutionDir)$(Platform)\$(Configuration)\diStorm.lib;$(SolutionDir)$(Platform)\$(Configuration)\tinyxml.lib;psapi.lib;imagehlp.lib;%(AdditionalDependencies) type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' + - + \ No newline at end of file diff --git a/Scylla/Scylla.vcxproj.filters b/Scylla/Scylla.vcxproj.filters index 2837676..384c8e9 100644 --- a/Scylla/Scylla.vcxproj.filters +++ b/Scylla/Scylla.vcxproj.filters @@ -1,214 +1,217 @@  {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms {e037d0d5-35ad-4034-83db-746a56a4fee7} {6f76186f-b79c-41e2-8939-05d9de028aad} Quelldateien Quelldateien\GUI - - Quelldateien\GUI - Quelldateien Quelldateien\GUI Quelldateien\GUI Quelldateien Quelldateien Quelldateien Quelldateien Quelldateien Quelldateien Quelldateien Quelldateien Quelldateien Quelldateien Quelldateien\GUI Quelldateien Quelldateien Quelldateien\GUI Quelldateien\GUI Quelldateien\GUI Quelldateien Quelldateien Quelldateien Quelldateien + + Quelldateien + + + Quelldateien + Headerdateien Headerdateien\GUI - - Headerdateien\GUI - Headerdateien Headerdateien\GUI Headerdateien\GUI Headerdateien Headerdateien Headerdateien Headerdateien\GUI Headerdateien Headerdateien Headerdateien Headerdateien Headerdateien Headerdateien Headerdateien - - Headerdateien\GUI - Headerdateien\GUI Headerdateien Headerdateien Headerdateien\GUI Headerdateien\GUI Headerdateien\GUI Headerdateien\GUI Headerdateien Headerdateien\GUI Headerdateien Headerdateien Headerdateien + + Headerdateien + + + Headerdateien + Ressourcendateien Ressourcendateien Ressourcendateien Ressourcendateien Ressourcendateien \ No newline at end of file