1
0
Fork 0
x64dbg/x64_dbg_dbg/_plugins.h

142 lines
2.6 KiB
C

#ifndef _PLUGINS_H
#define _PLUGINS_H
#ifndef PLUG_IMPEXP
#ifdef BUILD_DBG
#define PLUG_IMPEXP __declspec(dllexport)
#else
#define PLUG_IMPEXP __declspec(dllimport)
#endif //BUILD_DBG
#endif //PLUG_IMPEXP
#include "_plugin_types.h"
//structures
struct PLUG_INITSTRUCT
{
//provided by the debugger
int pluginHandle;
//provided by the pluginit function
int sdkVersion;
int pluginVersion;
char pluginName[256];
};
//callback structures
struct PLUG_CB_INITDEBUG
{
const char* szFileName;
};
struct PLUG_CB_STOPDEBUG
{
void* reserved;
};
struct PLUG_CB_CREATEPROCESS
{
CREATE_PROCESS_DEBUG_INFO* CreateProcessInfo;
IMAGEHLP_MODULE64* modInfo;
const char* DebugFileName;
};
struct PLUG_CB_EXITPROCESS
{
EXIT_PROCESS_DEBUG_INFO* ExitProcess;
};
struct PLUG_CB_CREATETHREAD
{
CREATE_THREAD_DEBUG_INFO* CreateThread;
};
struct PLUG_CB_EXITTHREAD
{
EXIT_THREAD_DEBUG_INFO* ExitThread;
};
struct PLUG_CB_SYSTEMBREAKPOINT
{
void* reserved;
};
struct PLUG_CB_LOADDLL
{
LOAD_DLL_DEBUG_INFO* LoadDll;
IMAGEHLP_MODULE64* modInfo;
const char* modname;
};
struct PLUG_CB_UNLOADDLL
{
UNLOAD_DLL_DEBUG_INFO* UnloadDll;
};
struct PLUG_CB_OUTPUTDEBUGSTRING
{
OUTPUT_DEBUG_STRING_INFO* DebugString;
};
struct PLUG_CB_EXCEPTION
{
EXCEPTION_DEBUG_INFO* Exception;
};
struct PLUG_CB_BREAKPOINT
{
void* reserved;
};
struct PLUG_CB_PAUSEDEBUG
{
void* reserved;
};
struct PLUG_CB_RESUMEDEBUG
{
void* reserved;
};
struct PLUG_CB_STEPPED
{
void* reserved;
};
//enums
enum CBTYPE
{
CB_INITDEBUG, //PLUG_CB_INITDEBUG
CB_STOPDEBUG, //PLUG_CB_STOPDEBUG
CB_CREATEPROCESS, //PLUG_CB_CREATEPROCESS
CB_EXITPROCESS, //PLUG_CB_EXITPROCESS
CB_CREATETHREAD, //PLUG_CB_CREATETHREAD
CB_EXITTHREAD, //PLUG_CB_EXITTHREAD
CB_SYSTEMBREAKPOINT, //PLUG_CB_SYSTEMBREAKPOINT
CB_LOADDLL, //PLUG_CB_LOADDLL
CB_UNLOADDLL, //PLUG_CB_UNLOADDLL
CB_OUTPUTDEBUGSTRING, //PLUG_CB_OUTPUTDEBUGSTRING
CB_EXCEPTION, //PLUG_CB_EXCEPTION
CB_BREAKPOINT, //PLUG_CB_BREAKPOINT
CB_PAUSEDEBUG, //PLUG_CB_PAUSEDEBUG
CB_RESUMEDEBUG, //PLUG_CB_RESUMEDEBUG
CB_STEPPED //PLUG_CB_STEPPED
};
//typedefs
typedef void (*CBPLUGIN)(CBTYPE cbType, void* callbackInfo);
//exports
#ifdef __cplusplus
extern "C"
{
#endif
PLUG_IMPEXP void _plugin_registercallback(int pluginHandle, CBTYPE cbType, CBPLUGIN cbPlugin);
PLUG_IMPEXP bool _plugin_unregistercallback(int pluginHandle, CBTYPE cbType);
#ifdef __cplusplus
}
#endif
#endif // _PLUGINS_H