diff --git a/SDK/C/TitanEngine.h b/SDK/C/TitanEngine.h
index 9cdc845..64e7263 100644
--- a/SDK/C/TitanEngine.h
+++ b/SDK/C/TitanEngine.h
@@ -13,6 +13,20 @@
// Global.Constant.Structure.Declaration:
// Engine.External:
+#define UE_STRUCT_PE32STRUCT 1
+#define UE_STRUCT_PE64STRUCT 2
+#define UE_STRUCT_PESTRUCT 3
+#define UE_STRUCT_IMPORTENUMDATA 4
+#define UE_STRUCT_THREAD_ITEM_DATA 5
+#define UE_STRUCT_LIBRARY_ITEM_DATA 6
+#define UE_STRUCT_LIBRARY_ITEM_DATAW 7
+#define UE_STRUCT_PROCESS_ITEM_DATA 8
+#define UE_STRUCT_HANDLERARRAY 9
+#define UE_STRUCT_PLUGININFORMATION 10
+#define UE_STRUCT_HOOK_ENTRY 11
+#define UE_STRUCT_FILE_STATUS_INFO 12
+#define UE_STRUCT_FILE_FIX_INFO 13
+
#define UE_ACCESS_READ 0
#define UE_ACCESS_WRITE 1
#define UE_ACCESS_ALL 2
@@ -920,6 +934,7 @@ __declspec(dllexport) bool TITCALL EngineFakeMissingDependencies(HANDLE hProcess
__declspec(dllexport) bool TITCALL EngineDeleteCreatedDependencies();
__declspec(dllexport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack);
__declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage);
+__declspec(dllexport) bool TITCALL EngineCheckStructAlignment(DWORD StructureType, ULONG_PTR StructureSize);
// Global.Engine.Extension.Functions:
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName);
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName);
diff --git a/SDK/CPP/TitanEngine.h b/SDK/CPP/TitanEngine.h
index 1c0c71d..ca4834d 100644
--- a/SDK/CPP/TitanEngine.h
+++ b/SDK/CPP/TitanEngine.h
@@ -13,6 +13,20 @@
// Global.Constant.Structure.Declaration:
// Engine.External:
+const BYTE UE_STRUCT_PE32STRUCT = 1;
+const BYTE UE_STRUCT_PE64STRUCT = 2;
+const BYTE UE_STRUCT_PESTRUCT = 3;
+const BYTE UE_STRUCT_IMPORTENUMDATA = 4;
+const BYTE UE_STRUCT_THREAD_ITEM_DATA = 5;
+const BYTE UE_STRUCT_LIBRARY_ITEM_DATA = 6;
+const BYTE UE_STRUCT_LIBRARY_ITEM_DATAW = 7;
+const BYTE UE_STRUCT_PROCESS_ITEM_DATA = 8;
+const BYTE UE_STRUCT_HANDLERARRAY = 9;
+const BYTE UE_STRUCT_PLUGININFORMATION = 10;
+const BYTE UE_STRUCT_HOOK_ENTRY = 11;
+const BYTE UE_STRUCT_FILE_STATUS_INFO = 12;
+const BYTE UE_STRUCT_FILE_FIX_INFO = 13;
+
const BYTE UE_ACCESS_READ = 0;
const BYTE UE_ACCESS_WRITE = 1;
const BYTE UE_ACCESS_ALL = 2;
@@ -914,6 +928,7 @@ __declspec(dllimport) bool TITCALL EngineFakeMissingDependencies(HANDLE hProcess
__declspec(dllimport) bool TITCALL EngineDeleteCreatedDependencies();
__declspec(dllimport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack);
__declspec(dllimport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage);
+__declspec(dllexport) bool TITCALL EngineCheckStructAlignment(DWORD StructureType, ULONG_PTR StructureSize);
// Global.Engine.Extension.Functions:
__declspec(dllimport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName);
__declspec(dllimport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName);
diff --git a/SDK/CPP/TitanEngine.hpp b/SDK/CPP/TitanEngine.hpp
index a8f8ecf..325d48a 100644
--- a/SDK/CPP/TitanEngine.hpp
+++ b/SDK/CPP/TitanEngine.hpp
@@ -23,6 +23,23 @@ namespace UE
// ----
+enum eStructType : DWORD
+{
+ UE_STRUCT_PE32STRUCT = UE::UE_STRUCT_PE32STRUCT,
+ UE_STRUCT_PE64STRUCT = UE::UE_STRUCT_PE64STRUCT,
+ UE_STRUCT_PESTRUCT = UE::UE_STRUCT_PESTRUCT,
+ UE_STRUCT_IMPORTENUMDATA = UE::UE_STRUCT_IMPORTENUMDATA,
+ UE_STRUCT_THREAD_ITEM_DATA = UE::UE_STRUCT_THREAD_ITEM_DATA,
+ UE_STRUCT_LIBRARY_ITEM_DATA = UE::UE_STRUCT_LIBRARY_ITEM_DATA,
+ UE_STRUCT_LIBRARY_ITEM_DATAW = UE::UE_STRUCT_LIBRARY_ITEM_DATAW,
+ UE_STRUCT_PROCESS_ITEM_DATA = UE::UE_STRUCT_PROCESS_ITEM_DATA,
+ UE_STRUCT_HANDLERARRAY = UE::UE_STRUCT_HANDLERARRAY,
+ UE_STRUCT_PLUGININFORMATION = UE::UE_STRUCT_PLUGININFORMATION,
+ UE_STRUCT_HOOK_ENTRY = UE::UE_STRUCT_HOOK_ENTRY,
+ UE_STRUCT_FILE_STATUS_INFO = UE::UE_STRUCT_FILE_STATUS_INFO,
+ UE_STRUCT_FILE_FIX_INFO = UE::UE_STRUCT_FILE_FIX_INFO
+};
+
enum eHideLevel : DWORD
{
UE_HIDE_PEBONLY = UE::UE_HIDE_PEBONLY,
@@ -2740,6 +2757,10 @@ protected:
{
return UE::EngineAddUnpackerWindowLogMessage(szLogMessage);
}
+ static bool EngineCheckStructAlignment(DWORD StructureType, ULONG_PTR StructureSize)
+ {
+ return UE::EngineCheckStructAlignment(StructureType, StructureSize);
+ }
};
class EngineA
@@ -2773,6 +2794,7 @@ public:
using EngineX::DeleteCreatedDependencies;
using EngineX::CreateUnpackerWindow;
using EngineX::AddUnpackerWindowLogMessage;
+ using EngineX::EngineCheckStructAlignment;
};
class ExtensionManager
diff --git a/TitanEngine/TitanEngine.Engine.cpp b/TitanEngine/TitanEngine.Engine.cpp
index c286054..e07ff33 100644
--- a/TitanEngine/TitanEngine.Engine.cpp
+++ b/TitanEngine/TitanEngine.Engine.cpp
@@ -4,6 +4,7 @@
#include "Global.Mapping.h"
#include "Global.Engine.Hook.h"
#include "Global.Engine.GUI.h"
+#include "Global.Engine.Extension.h"
// TitanEngine.Engine.functions:
__declspec(dllexport) void TITCALL SetEngineVariable(DWORD VariableId, bool VariableSet)
@@ -56,6 +57,7 @@ __declspec(dllexport) bool TITCALL EngineCreateMissingDependencies(char* szFileN
return(NULL);
}
}
+
__declspec(dllexport) bool TITCALL EngineCreateMissingDependenciesW(wchar_t* szFileName, wchar_t* szOutputFolder, bool LogCreatedFiles)
{
@@ -226,6 +228,7 @@ __declspec(dllexport) bool TITCALL EngineCreateMissingDependenciesW(wchar_t* szF
}
return false;
}
+
__declspec(dllexport) bool TITCALL EngineFakeMissingDependencies(HANDLE hProcess)
{
@@ -236,6 +239,7 @@ __declspec(dllexport) bool TITCALL EngineFakeMissingDependencies(HANDLE hProcess
}
return false;
}
+
__declspec(dllexport) bool TITCALL EngineDeleteCreatedDependencies()
{
@@ -292,9 +296,9 @@ __declspec(dllexport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpack
return false;
}
}
+
__declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage)
{
-
int cSelect;
SendMessageA(EngineBoxHandle, LB_ADDSTRING, NULL, (LPARAM)szLogMessage);
@@ -302,3 +306,38 @@ __declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLog
cSelect--;
SendMessageA(EngineBoxHandle, LB_SETCURSEL, (WPARAM)cSelect, NULL);
}
+
+__declspec(dllexport) bool TITCALL EngineCheckStructAlignment(DWORD StructureType, ULONG_PTR StructureSize)
+{
+ int blub=1;
+ switch(StructureType)
+ {
+ case UE_STRUCT_PE32STRUCT:
+ return (sizeof(PE32Struct)==StructureSize);
+ case UE_STRUCT_PE64STRUCT:
+ return (sizeof(PE64Struct)==StructureSize);
+ case UE_STRUCT_PESTRUCT:
+ return (sizeof(PEStruct)==StructureSize);
+ case UE_STRUCT_IMPORTENUMDATA:
+ return (sizeof(ImportEnumData)==StructureSize);
+ case UE_STRUCT_THREAD_ITEM_DATA:
+ return (sizeof(THREAD_ITEM_DATA)==StructureSize);
+ case UE_STRUCT_LIBRARY_ITEM_DATA:
+ return (sizeof(LIBRARY_ITEM_DATA)==StructureSize);
+ case UE_STRUCT_LIBRARY_ITEM_DATAW:
+ return (sizeof(LIBRARY_ITEM_DATAW)==StructureSize);
+ case UE_STRUCT_PROCESS_ITEM_DATA:
+ return (sizeof(PROCESS_ITEM_DATA)==StructureSize);
+ case UE_STRUCT_HANDLERARRAY:
+ return (sizeof(HandlerArray)==StructureSize);
+ case UE_STRUCT_PLUGININFORMATION:
+ return (sizeof(PluginInformation)==StructureSize);
+ case UE_STRUCT_HOOK_ENTRY:
+ return (sizeof(HOOK_ENTRY)==StructureSize);
+ case UE_STRUCT_FILE_STATUS_INFO:
+ return (sizeof(FILE_STATUS_INFO)==StructureSize);
+ case UE_STRUCT_FILE_FIX_INFO:
+ return (sizeof(FILE_FIX_INFO)==StructureSize);
+ }
+ return false;
+}
diff --git a/TitanEngine/TitanEngine.def b/TitanEngine/TitanEngine.def
index 8171706..e4db0d0 100644
--- a/TitanEngine/TitanEngine.def
+++ b/TitanEngine/TitanEngine.def
@@ -390,6 +390,7 @@ EngineCreateMissingDependencies
EngineCreateMissingDependenciesW
EngineCreateUnpackerWindow
EngineAddUnpackerWindowLogMessage
+EngineCheckStructAlignment
ExtensionManagerIsPluginLoaded
ExtensionManagerIsPluginEnabled
ExtensionManagerDisablePlugin
diff --git a/TitanEngine/TitanEngine.vcxproj.filters b/TitanEngine/TitanEngine.vcxproj.filters
index edd5f5b..a3564d6 100644
--- a/TitanEngine/TitanEngine.vcxproj.filters
+++ b/TitanEngine/TitanEngine.vcxproj.filters
@@ -208,7 +208,7 @@
Source Files\TitanEngine
- Source Files
+ Source Files\TitanEngine
diff --git a/TitanEngine/definitions.h b/TitanEngine/definitions.h
index 3b868df..ad33cba 100644
--- a/TitanEngine/definitions.h
+++ b/TitanEngine/definitions.h
@@ -425,6 +425,7 @@ __declspec(dllexport) bool TITCALL EngineFakeMissingDependencies(HANDLE hProcess
__declspec(dllexport) bool TITCALL EngineDeleteCreatedDependencies();
__declspec(dllexport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack);
__declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage);
+__declspec(dllexport) bool TITCALL EngineCheckStructAlignment(DWORD StructureType, ULONG_PTR StructureSize);
// Global.Engine.Extension.Functions:
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName);
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName);
diff --git a/TitanEngine/stdafx.h b/TitanEngine/stdafx.h
index ccf8f95..32dc48d 100644
--- a/TitanEngine/stdafx.h
+++ b/TitanEngine/stdafx.h
@@ -70,6 +70,21 @@
#pragma pack(push)
#pragma pack(1)
+//EngineCheckStructAlignment
+#define UE_STRUCT_PE32STRUCT 1
+#define UE_STRUCT_PE64STRUCT 2
+#define UE_STRUCT_PESTRUCT 3
+#define UE_STRUCT_IMPORTENUMDATA 4
+#define UE_STRUCT_THREAD_ITEM_DATA 5
+#define UE_STRUCT_LIBRARY_ITEM_DATA 6
+#define UE_STRUCT_LIBRARY_ITEM_DATAW 7
+#define UE_STRUCT_PROCESS_ITEM_DATA 8
+#define UE_STRUCT_HANDLERARRAY 9
+#define UE_STRUCT_PLUGININFORMATION 10
+#define UE_STRUCT_HOOK_ENTRY 11
+#define UE_STRUCT_FILE_STATUS_INFO 12
+#define UE_STRUCT_FILE_FIX_INFO 13
+
typedef struct
{
ULONG_PTR BreakPointAddress;
@@ -588,6 +603,12 @@ typedef struct
DWORD NumberOfRvaAndSizes;
} PE64Struct, *PPE64Struct;
+#ifdef _WIN64
+typedef PE64Struct PEStruct;
+#else
+typedef PE32Struct PEStruct;
+#endif
+
typedef struct
{
bool NewDll;