mirror of https://github.com/x64dbg/TitanEngine
- added function EngineCheckStructAlignment (resolved issue #33)
This commit is contained in:
parent
e57ed84252
commit
3047edc22b
|
|
@ -13,6 +13,20 @@
|
||||||
|
|
||||||
// Global.Constant.Structure.Declaration:
|
// Global.Constant.Structure.Declaration:
|
||||||
// Engine.External:
|
// 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_READ 0
|
||||||
#define UE_ACCESS_WRITE 1
|
#define UE_ACCESS_WRITE 1
|
||||||
#define UE_ACCESS_ALL 2
|
#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 EngineDeleteCreatedDependencies();
|
||||||
__declspec(dllexport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack);
|
__declspec(dllexport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack);
|
||||||
__declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage);
|
__declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage);
|
||||||
|
__declspec(dllexport) bool TITCALL EngineCheckStructAlignment(DWORD StructureType, ULONG_PTR StructureSize);
|
||||||
// Global.Engine.Extension.Functions:
|
// Global.Engine.Extension.Functions:
|
||||||
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName);
|
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName);
|
||||||
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName);
|
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName);
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,20 @@
|
||||||
|
|
||||||
// Global.Constant.Structure.Declaration:
|
// Global.Constant.Structure.Declaration:
|
||||||
// Engine.External:
|
// 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_READ = 0;
|
||||||
const BYTE UE_ACCESS_WRITE = 1;
|
const BYTE UE_ACCESS_WRITE = 1;
|
||||||
const BYTE UE_ACCESS_ALL = 2;
|
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 EngineDeleteCreatedDependencies();
|
||||||
__declspec(dllimport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack);
|
__declspec(dllimport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack);
|
||||||
__declspec(dllimport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage);
|
__declspec(dllimport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage);
|
||||||
|
__declspec(dllexport) bool TITCALL EngineCheckStructAlignment(DWORD StructureType, ULONG_PTR StructureSize);
|
||||||
// Global.Engine.Extension.Functions:
|
// Global.Engine.Extension.Functions:
|
||||||
__declspec(dllimport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName);
|
__declspec(dllimport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName);
|
||||||
__declspec(dllimport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName);
|
__declspec(dllimport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName);
|
||||||
|
|
|
||||||
|
|
@ -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
|
enum eHideLevel : DWORD
|
||||||
{
|
{
|
||||||
UE_HIDE_PEBONLY = UE::UE_HIDE_PEBONLY,
|
UE_HIDE_PEBONLY = UE::UE_HIDE_PEBONLY,
|
||||||
|
|
@ -2740,6 +2757,10 @@ protected:
|
||||||
{
|
{
|
||||||
return UE::EngineAddUnpackerWindowLogMessage(szLogMessage);
|
return UE::EngineAddUnpackerWindowLogMessage(szLogMessage);
|
||||||
}
|
}
|
||||||
|
static bool EngineCheckStructAlignment(DWORD StructureType, ULONG_PTR StructureSize)
|
||||||
|
{
|
||||||
|
return UE::EngineCheckStructAlignment(StructureType, StructureSize);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class EngineA
|
class EngineA
|
||||||
|
|
@ -2773,6 +2794,7 @@ public:
|
||||||
using EngineX::DeleteCreatedDependencies;
|
using EngineX::DeleteCreatedDependencies;
|
||||||
using EngineX::CreateUnpackerWindow;
|
using EngineX::CreateUnpackerWindow;
|
||||||
using EngineX::AddUnpackerWindowLogMessage;
|
using EngineX::AddUnpackerWindowLogMessage;
|
||||||
|
using EngineX::EngineCheckStructAlignment;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ExtensionManager
|
class ExtensionManager
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include "Global.Mapping.h"
|
#include "Global.Mapping.h"
|
||||||
#include "Global.Engine.Hook.h"
|
#include "Global.Engine.Hook.h"
|
||||||
#include "Global.Engine.GUI.h"
|
#include "Global.Engine.GUI.h"
|
||||||
|
#include "Global.Engine.Extension.h"
|
||||||
|
|
||||||
// TitanEngine.Engine.functions:
|
// TitanEngine.Engine.functions:
|
||||||
__declspec(dllexport) void TITCALL SetEngineVariable(DWORD VariableId, bool VariableSet)
|
__declspec(dllexport) void TITCALL SetEngineVariable(DWORD VariableId, bool VariableSet)
|
||||||
|
|
@ -56,6 +57,7 @@ __declspec(dllexport) bool TITCALL EngineCreateMissingDependencies(char* szFileN
|
||||||
return(NULL);
|
return(NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__declspec(dllexport) bool TITCALL EngineCreateMissingDependenciesW(wchar_t* szFileName, wchar_t* szOutputFolder, bool LogCreatedFiles)
|
__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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
__declspec(dllexport) bool TITCALL EngineFakeMissingDependencies(HANDLE hProcess)
|
__declspec(dllexport) bool TITCALL EngineFakeMissingDependencies(HANDLE hProcess)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -236,6 +239,7 @@ __declspec(dllexport) bool TITCALL EngineFakeMissingDependencies(HANDLE hProcess
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
__declspec(dllexport) bool TITCALL EngineDeleteCreatedDependencies()
|
__declspec(dllexport) bool TITCALL EngineDeleteCreatedDependencies()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -292,9 +296,9 @@ __declspec(dllexport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpack
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage)
|
__declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage)
|
||||||
{
|
{
|
||||||
|
|
||||||
int cSelect;
|
int cSelect;
|
||||||
|
|
||||||
SendMessageA(EngineBoxHandle, LB_ADDSTRING, NULL, (LPARAM)szLogMessage);
|
SendMessageA(EngineBoxHandle, LB_ADDSTRING, NULL, (LPARAM)szLogMessage);
|
||||||
|
|
@ -302,3 +306,38 @@ __declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLog
|
||||||
cSelect--;
|
cSelect--;
|
||||||
SendMessageA(EngineBoxHandle, LB_SETCURSEL, (WPARAM)cSelect, NULL);
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -390,6 +390,7 @@ EngineCreateMissingDependencies
|
||||||
EngineCreateMissingDependenciesW
|
EngineCreateMissingDependenciesW
|
||||||
EngineCreateUnpackerWindow
|
EngineCreateUnpackerWindow
|
||||||
EngineAddUnpackerWindowLogMessage
|
EngineAddUnpackerWindowLogMessage
|
||||||
|
EngineCheckStructAlignment
|
||||||
ExtensionManagerIsPluginLoaded
|
ExtensionManagerIsPluginLoaded
|
||||||
ExtensionManagerIsPluginEnabled
|
ExtensionManagerIsPluginEnabled
|
||||||
ExtensionManagerDisablePlugin
|
ExtensionManagerDisablePlugin
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@
|
||||||
<Filter>Source Files\TitanEngine</Filter>
|
<Filter>Source Files\TitanEngine</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Global.Helper.cpp">
|
<ClCompile Include="Global.Helper.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files\TitanEngine</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -425,6 +425,7 @@ __declspec(dllexport) bool TITCALL EngineFakeMissingDependencies(HANDLE hProcess
|
||||||
__declspec(dllexport) bool TITCALL EngineDeleteCreatedDependencies();
|
__declspec(dllexport) bool TITCALL EngineDeleteCreatedDependencies();
|
||||||
__declspec(dllexport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack);
|
__declspec(dllexport) bool TITCALL EngineCreateUnpackerWindow(char* WindowUnpackerTitle, char* WindowUnpackerLongTitle, char* WindowUnpackerName, char* WindowUnpackerAuthor, void* StartUnpackingCallBack);
|
||||||
__declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage);
|
__declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLogMessage);
|
||||||
|
__declspec(dllexport) bool TITCALL EngineCheckStructAlignment(DWORD StructureType, ULONG_PTR StructureSize);
|
||||||
// Global.Engine.Extension.Functions:
|
// Global.Engine.Extension.Functions:
|
||||||
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName);
|
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName);
|
||||||
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName);
|
__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName);
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,21 @@
|
||||||
#pragma pack(push)
|
#pragma pack(push)
|
||||||
#pragma pack(1)
|
#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
|
typedef struct
|
||||||
{
|
{
|
||||||
ULONG_PTR BreakPointAddress;
|
ULONG_PTR BreakPointAddress;
|
||||||
|
|
@ -588,6 +603,12 @@ typedef struct
|
||||||
DWORD NumberOfRvaAndSizes;
|
DWORD NumberOfRvaAndSizes;
|
||||||
} PE64Struct, *PPE64Struct;
|
} PE64Struct, *PPE64Struct;
|
||||||
|
|
||||||
|
#ifdef _WIN64
|
||||||
|
typedef PE64Struct PEStruct;
|
||||||
|
#else
|
||||||
|
typedef PE32Struct PEStruct;
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
bool NewDll;
|
bool NewDll;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue