#include
#pragma pack(push)
#pragma pack(1)
typedef struct _LSA_UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING;
typedef struct _RTL_USER_PROCESS_PARAMETERS {
BYTE Reserved1[16];
PVOID Reserved2[10];
UNICODE_STRING ImagePathName;
UNICODE_STRING CommandLine;
char Reserved[1024];
} RTL_USER_PROCESS_PARAMETERS;
typedef struct _RTL_USER_PROCESS_PARAMETERS_MEMMODULE {
BYTE Reserved1[16];
PVOID Reserved2[10];
UNICODE_STRING ImagePathName;
UNICODE_STRING CommandLine;
char Reserved[1024];
DWORD ExSign; // 0cFFFFACAC;
PVOID MemModule;
} RTL_USER_PROCESS_PARAMETERS_MEMMODULE;
typedef struct _PEB
{
BYTE Reserved1[2];
BYTE BeingDebugged;
BYTE Reserved2[1];
PVOID Reserved3[2];
void* /*PPEB_LDR_DATA*/ Ldr;
RTL_USER_PROCESS_PARAMETERS* ProcessParameters;
BYTE Reserved4[104];
PVOID Reserved5[52];
void* /*PPS_POST_PROCESS_INIT_ROUTINE*/ PostProcessInitRoutine;
BYTE Reserved6[128];
PVOID Reserved7[1];
ULONG SessionId;
} PEB32;
typedef struct
{
void *Buf;
DWORD Count;
} COMMANDLINE_ARGS;
#pragma pack(pop)
extern "C"
{
__inline void* GetThreadTIB();
__inline void* GetThreadTEB();
__inline void* GetThreadPEB();
}