Predefined Structs & Unions

struct _MEMORY_BASIC_INFORMATION {
    void * BaseAddress;                                         // Offset: 0, Size: 4.
    void * AllocationBase;                                      // Offset: 4, Size: 4.
    unsigned int AllocationProtect;                             // Offset: 8, Size: 4.
    unsigned int RegionSize;                                    // Offset: 12, Size: 4.
    unsigned int State;                                         // Offset: 16, Size: 4.
    unsigned int Protect;                                       // Offset: 20, Size: 4.
    unsigned int Type;                                          // Offset: 24, Size: 4.
}; // Size: 28.
 
 
struct tagMODULEENTRY32 {
    unsigned int dwSize;                                        // Offset: 0, Size: 4.
    unsigned int th32ModuleID;                                  // Offset: 4, Size: 4.
    unsigned int th32ProcessID;                                 // Offset: 8, Size: 4.
    unsigned int GlblcntUsage;                                  // Offset: 12, Size: 4.
    unsigned int ProccntUsage;                                  // Offset: 16, Size: 4.
    unsigned char * modBaseAddr;                                // Offset: 20, Size: 4.
    unsigned int modBaseSize;                                   // Offset: 24, Size: 4.
    void * hModule;                                             // Offset: 28, Size: 4.
    char szModule[256];                                         // Offset: 32, Size: 256.
    char szExePath[260];                                        // Offset: 288, Size: 260.
}; // Size: 548.
 
 
struct tagHEAPLIST32 {
    unsigned int dwSize;                                        // Offset: 0, Size: 4.
    unsigned int th32ProcessID;                                 // Offset: 4, Size: 4.
    unsigned int th32HeapID;                                    // Offset: 8, Size: 4.
    unsigned int dwFlags;                                       // Offset: 12, Size: 4.
}; // Size: 16.
 
 
struct tagTHREADENTRY32 {
    unsigned int dwSize;                                        // Offset: 0, Size: 4.
    unsigned int cntUsage;                                      // Offset: 4, Size: 4.
    unsigned int th32ThreadID;                                  // Offset: 8, Size: 4.
    unsigned int th32OwnerProcessID;                            // Offset: 12, Size: 4.
    int tpBasePri;                                              // Offset: 16, Size: 4.
    int tpDeltaPri;                                             // Offset: 20, Size: 4.
    unsigned int dwFlags;                                       // Offset: 24, Size: 4.
}; // Size: 28.
 
 
struct tagPROCESSENTRY32 {
    unsigned int dwSize;                                        // Offset: 0, Size: 4.
    unsigned int cntUsage;                                      // Offset: 4, Size: 4.
    unsigned int th32ProcessID;                                 // Offset: 8, Size: 4.
    unsigned int th32DefaultHeapID;                             // Offset: 12, Size: 4.
    unsigned int th32ModuleID;                                  // Offset: 16, Size: 4.
    unsigned int cntThreads;                                    // Offset: 20, Size: 4.
    unsigned int th32ParentProcessID;                           // Offset: 24, Size: 4.
    int pcPriClassBase;                                         // Offset: 28, Size: 4.
    unsigned int dwFlags;                                       // Offset: 32, Size: 4.
    char szExeFile[260];                                        // Offset: 36, Size: 260.
}; // Size: 296.
 
 
struct tagHEAPENTRY32 {
    unsigned int dwSize;                                        // Offset: 0, Size: 4.
    void * hHandle;                                             // Offset: 4, Size: 4.
    unsigned int dwAddress;                                     // Offset: 8, Size: 4.
    unsigned int dwBlockSize;                                   // Offset: 12, Size: 4.
    unsigned int dwFlags;                                       // Offset: 16, Size: 4.
    unsigned int dwLockCount;                                   // Offset: 20, Size: 4.
    unsigned int dwResvd;                                       // Offset: 24, Size: 4.
    unsigned int th32ProcessID;                                 // Offset: 28, Size: 4.
    unsigned int th32HeapID;                                    // Offset: 32, Size: 4.
}; // Size: 36.
 
 
struct _FLOATING_SAVE_AREA {
    unsigned int ControlWord;                                   // Offset: 0, Size: 4.
    unsigned int StatusWord;                                    // Offset: 4, Size: 4.
    unsigned int TagWord;                                       // Offset: 8, Size: 4.
    unsigned int ErrorOffset;                                   // Offset: 12, Size: 4.
    unsigned int ErrorSelector;                                 // Offset: 16, Size: 4.
    unsigned int DataOffset;                                    // Offset: 20, Size: 4.
    unsigned int DataSelector;                                  // Offset: 24, Size: 4.
    unsigned char RegisterArea[80];                             // Offset: 28, Size: 80.
    unsigned int Cr0NpxState;                                   // Offset: 108, Size: 4.
}; // Size: 112.
 
 
struct _CONTEXT {
    unsigned int ContextFlags;                                  // Offset: 0, Size: 4.
    unsigned int Dr0;                                           // Offset: 4, Size: 4.
    unsigned int Dr1;                                           // Offset: 8, Size: 4.
    unsigned int Dr2;                                           // Offset: 12, Size: 4.
    unsigned int Dr3;                                           // Offset: 16, Size: 4.
    unsigned int Dr6;                                           // Offset: 20, Size: 4.
    unsigned int Dr7;                                           // Offset: 24, Size: 4.
    _FLOATING_SAVE_AREA FloatSave;                              // Offset: 28, Size: 112.
    unsigned int SegGs;                                         // Offset: 140, Size: 4.
    unsigned int SegFs;                                         // Offset: 144, Size: 4.
    unsigned int SegEs;                                         // Offset: 148, Size: 4.
    unsigned int SegDs;                                         // Offset: 152, Size: 4.
    unsigned int Edi;                                           // Offset: 156, Size: 4.
    unsigned int Esi;                                           // Offset: 160, Size: 4.
    unsigned int Ebx;                                           // Offset: 164, Size: 4.
    unsigned int Edx;                                           // Offset: 168, Size: 4.
    unsigned int Ecx;                                           // Offset: 172, Size: 4.
    unsigned int Eax;                                           // Offset: 176, Size: 4.
    unsigned int Ebp;                                           // Offset: 180, Size: 4.
    unsigned int Eip;                                           // Offset: 184, Size: 4.
    unsigned int SegCs;                                         // Offset: 188, Size: 4.
    unsigned int EFlags;                                        // Offset: 192, Size: 4.
    unsigned int Esp;                                           // Offset: 196, Size: 4.
    unsigned int SegSs;                                         // Offset: 200, Size: 4.
    unsigned char ExtendedRegisters[512];                       // Offset: 204, Size: 512.
}; // Size: 716.
 
 
struct _RECT {
    int left;                                                   // Offset: 0, Size: 4.
    int top;                                                    // Offset: 4, Size: 4.
    int right;                                                  // Offset: 8, Size: 4.
    int bottom;                                                 // Offset: 12, Size: 4.
}; // Size: 16.
 
 
struct tagPOINT {
    int x;                                                      // Offset: 0, Size: 4.
    int y;                                                      // Offset: 4, Size: 4.
}; // Size: 8.
 
 
struct tagCREATESTRUCT {
    void * lpCreateParams;                                      // Offset: 0, Size: 4.
    void * hInstance;                                           // Offset: 4, Size: 4.
    void * hMenu;                                               // Offset: 8, Size: 4.
    void * hwndParent;                                          // Offset: 12, Size: 4.
    int cy;                                                     // Offset: 16, Size: 4.
    int cx;                                                     // Offset: 20, Size: 4.
    int y;                                                      // Offset: 24, Size: 4.
    int x;                                                      // Offset: 28, Size: 4.
    int style;                                                  // Offset: 32, Size: 4.
    const char * lpszName;                                      // Offset: 36, Size: 4.
    const char * lpszClass;                                     // Offset: 40, Size: 4.
    unsigned int dwExStyle;                                     // Offset: 44, Size: 4.
}; // Size: 48.
 
 
struct tagPAINTSTRUCT {
    void * hdc;                                                 // Offset: 0, Size: 4.
    int fErase;                                                 // Offset: 4, Size: 4.
    _RECT rcPaint;                                              // Offset: 8, Size: 16.
    int fRestore;                                               // Offset: 24, Size: 4.
    int fIncUpdate;                                             // Offset: 28, Size: 4.
    unsigned char rgbReserved[32];                              // Offset: 32, Size: 32.
}; // Size: 64.
 
 
struct tagMENUINFO {
    unsigned int cbSize;                                        // Offset: 0, Size: 4.
    unsigned int fMask;                                         // Offset: 4, Size: 4.
    unsigned int dwStyle;                                       // Offset: 8, Size: 4.
    unsigned int cyMax;                                         // Offset: 12, Size: 4.
    void * hbrBack;                                             // Offset: 16, Size: 4.
    unsigned int dwContextHelpID;                               // Offset: 20, Size: 4.
    unsigned int dwMenuData;                                    // Offset: 24, Size: 4.
}; // Size: 28.
 
 
struct tagNMHDR {
    void * hwndFrom;                                            // Offset: 0, Size: 4.
    unsigned int idFrom;                                        // Offset: 4, Size: 4.
    unsigned int code;                                          // Offset: 8, Size: 4.
}; // Size: 12.
 
 
struct _UDACCEL {
    unsigned int nSec;                                          // Offset: 0, Size: 4.
    unsigned int nInc;                                          // Offset: 4, Size: 4.
}; // Size: 8.
 
 
struct _NM_UPDOWN {
    tagNMHDR hdr;                                               // Offset: 0, Size: 12.
    int iPos;                                                   // Offset: 12, Size: 4.
    int iDelta;                                                 // Offset: 16, Size: 4.
}; // Size: 20.
 
 
struct tagMOUSEINPUT {
    int dx;                                                     // Offset: 0, Size: 4.
    int dy;                                                     // Offset: 4, Size: 4.
    unsigned int mouseData;                                     // Offset: 8, Size: 4.
    unsigned int dwFlags;                                       // Offset: 12, Size: 4.
    unsigned int time;                                          // Offset: 16, Size: 4.
    unsigned int dwExtraInfo;                                   // Offset: 20, Size: 4.
}; // Size: 24.
 
 
struct tagKEYBDINPUT {
    unsigned short wVk;                                         // Offset: 0, Size: 2.
    unsigned short wScan;                                       // Offset: 2, Size: 2.
    unsigned int dwFlags;                                       // Offset: 4, Size: 4.
    unsigned int time;                                          // Offset: 8, Size: 4.
    unsigned int dwExtraInfo;                                   // Offset: 12, Size: 4.
}; // Size: 16.
 
 
struct tagHARDWAREINPUT {
    unsigned int uMsg;                                          // Offset: 0, Size: 4.
    unsigned short wParamL;                                     // Offset: 4, Size: 2.
    unsigned short wParamH;                                     // Offset: 6, Size: 2.
}; // Size: 8.
 
 
union INPUTTYPE {
    tagMOUSEINPUT mi;                                           // Offset: 0, Size: 24.
    tagKEYBDINPUT ki;                                           // Offset: 0, Size: 16.
    tagHARDWAREINPUT hi;                                        // Offset: 0, Size: 8.
}; // Size: 24.
 
 
struct tagINPUT {
    unsigned int type;                                          // Offset: 0, Size: 4.
    INPUTTYPE iType;                                            // Offset: 4, Size: 24.
}; // Size: 28.
 
 
struct _FILETIME {
    unsigned int dwLowDateTime;                                 // Offset: 0, Size: 4.
    unsigned int dwHighDateTime;                                // Offset: 4, Size: 4.
}; // Size: 8.
 
 
struct _WIN32_FIND_DATA {
    unsigned int dwFileAttributes;                              // Offset: 0, Size: 4.
    _FILETIME ftCreationTime;                                   // Offset: 4, Size: 8.
    _FILETIME ftLastAccessTime;                                 // Offset: 12, Size: 8.
    _FILETIME ftLastWriteTime;                                  // Offset: 20, Size: 8.
    unsigned int nFileSizeHigh;                                 // Offset: 28, Size: 4.
    unsigned int nFileSizeLow;                                  // Offset: 32, Size: 4.
    unsigned int dwReserved0;                                   // Offset: 36, Size: 4.
    unsigned int dwReserved1;                                   // Offset: 40, Size: 4.
    char cFileName[260];                                        // Offset: 44, Size: 260.
    char cAlternateFileName[14];                                // Offset: 304, Size: 14.
}; // Size: 318.
 
 
union MHS_ALLTYPES {
    signed char Char;                                           // Offset: 0, Size: 1.
    unsigned char Byte;                                         // Offset: 0, Size: 1.
    signed short Short;                                         // Offset: 0, Size: 2.
    unsigned short UShort;                                      // Offset: 0, Size: 2.
    signed int Int;                                             // Offset: 0, Size: 4.
    unsigned int UInt;                                          // Offset: 0, Size: 4.
    signed __int64 Int64;                                       // Offset: 0, Size: 8.
    unsigned __int64 UInt64;                                    // Offset: 0, Size: 8.
    float Float;                                                // Offset: 0, Size: 4.
    double Double;                                              // Offset: 0, Size: 8.
}; // Size: 8.
 
 
struct DATATYPEPARMS {
    unsigned int dwDataType;                                    // Offset: 0, Size: 4.
    unsigned int dwSubType;                                     // Offset: 4, Size: 4.
    int bEnableSame;                                            // Offset: 8, Size: 4.
    MHS_ALLTYPES atValue;                                       // Offset: 12, Size: 8.
    MHS_ALLTYPES atTo;                                          // Offset: 20, Size: 8.
}; // Size: 28.
 
 
struct POINTERPARMS {
    unsigned int dwSubType;                                     // Offset: 0, Size: 4.
    int bEnableSame;                                            // Offset: 4, Size: 4.
    int bStatic;                                                // Offset: 8, Size: 4.
    void * lpvSaveOffset;                                       // Offset: 12, Size: 4.
    MHS_ALLTYPES atValue;                                       // Offset: 16, Size: 8.
    MHS_ALLTYPES atTo;                                          // Offset: 24, Size: 8.
}; // Size: 32.
 
 
struct STRINGPARMS {
    const char * pcValue;                                       // Offset: 0, Size: 4.
    unsigned int dwLength;                                      // Offset: 4, Size: 4.
    int bUnicode;                                               // Offset: 8, Size: 4.
    int bOffsets;                                               // Offset: 12, Size: 4.
    unsigned char bOffFrom;                                     // Offset: 16, Size: 1.
    unsigned char bOffTo;                                       // Offset: 17, Size: 1.
}; // Size: 18.
 
 
struct SCRIPTPARMS {
    int iDataSize;                                              // Offset: 0, Size: 4.
    int iAlign;                                                 // Offset: 4, Size: 4.
    const char * pcCallback;                                    // Offset: 8, Size: 4.
    const char * pcDecoder;                                     // Offset: 12, Size: 4.
    const char * pcSetup;                                       // Offset: 16, Size: 4.
}; // Size: 20.
 
 
union TP {
    DATATYPEPARMS dtParms;                                      // Offset: 0, Size: 28.
    POINTERPARMS pParms;                                        // Offset: 0, Size: 32.
    STRINGPARMS sParms;                                         // Offset: 0, Size: 18.
    SCRIPTPARMS scParms;                                        // Offset: 0, Size: 20.
}; // Size: 32.
 
 
struct MHS_API_SEARCH_PARMS {
    unsigned int dwType;                                        // Offset: 0, Size: 4.
    void * lpvStart;                                            // Offset: 4, Size: 4.
    void * lpvEnd;                                              // Offset: 8, Size: 4.
    int bAligned;                                               // Offset: 12, Size: 4.
    TP TypeParms;                                               // Offset: 16, Size: 32.
}; // Size: 48.
 
 
struct MHS_API_SUB_SEARCH_PARMS {
    unsigned int dwSearchType;                                  // Offset: 0, Size: 4.
    MHS_ALLTYPES atValue;                                       // Offset: 4, Size: 8.
    MHS_ALLTYPES atTo;                                          // Offset: 12, Size: 8.
    const char * pcCallback;                                    // Offset: 20, Size: 4.
}; // Size: 24.
 
 
union PINFO_UNION {
    unsigned int dwUserData;                                    // Offset: 0, Size: 4.
    char * pcStringPointer;                                     // Offset: 0, Size: 4.
    void * lpvMiscData;                                         // Offset: 0, Size: 4.
}; // Size: 4.
 
 
struct tagPROC_INFO_MHS {
    void * hProcess;                                            // Offset: 0, Size: 4.
    void * hThread;                                             // Offset: 4, Size: 4.
    unsigned int dwProcessId;                                   // Offset: 8, Size: 4.
    unsigned int dwThreadId;                                    // Offset: 12, Size: 4.
    void * lpvReseved;                                          // Offset: 16, Size: 4.
    PINFO_UNION u;                                              // Offset: 20, Size: 4.
    void * lpvReadWriteAddress;                                 // Offset: 24, Size: 4.
    _CONTEXT * pcContext;                                       // Offset: 28, Size: 4.
    int bSetContext;                                            // Offset: 32, Size: 4.
}; // Size: 36.
 
 
struct WSAData {
    unsigned short wVersion;                                    // Offset: 0, Size: 2.
    unsigned short wHighVersion;                                // Offset: 2, Size: 2.
    char szDescription[257];                                    // Offset: 4, Size: 257.
    char szSystemStatus[129];                                   // Offset: 261, Size: 129.
    unsigned short iMaxSockets;                                 // Offset: 390, Size: 2.
    unsigned short iMaxUdpDg;                                   // Offset: 392, Size: 2.
    char * lpVendorInfo;                                        // Offset: 394, Size: 4.
}; // Size: 398.
 
 
struct z_stream_s {
    unsigned char * next_in;                                    // Offset: 0, Size: 4.
    unsigned int avail_in;                                      // Offset: 4, Size: 4.
    unsigned int total_in;                                      // Offset: 8, Size: 4.
    unsigned char * next_out;                                   // Offset: 12, Size: 4.
    unsigned int avail_out;                                     // Offset: 16, Size: 4.
    unsigned int total_out;                                     // Offset: 20, Size: 4.
    char * msg;                                                 // Offset: 24, Size: 4.
    void * state;                                               // Offset: 28, Size: 4.
    void * zalloc;                                              // Offset: 32, Size: 4.
    void * zfree;                                               // Offset: 36, Size: 4.
    void * opaque;                                              // Offset: 40, Size: 4.
    int data_type;                                              // Offset: 44, Size: 4.
    unsigned int adler;                                         // Offset: 48, Size: 4.
    unsigned int reserved;                                      // Offset: 52, Size: 4.
}; // Size: 56.
 
 
union EVAL_UNION {
    unsigned __int64 ui64Int64;                                 // Offset: 0, Size: 8.
    __int64 i64Int64;                                           // Offset: 0, Size: 8.
    double dDouble;                                             // Offset: 0, Size: 8.
}; // Size: 8.
 
 
struct EVAL_RET_TYPE {
    int iType;                                                  // Offset: 0, Size: 4.
    EVAL_UNION u;                                               // Offset: 4, Size: 8.
}; // Size: 12.
 
 
struct SCRIPT_ADD_BP {
    char * pcName;                                              // Offset: 0, Size: 4.
    int bHardware;                                              // Offset: 4, Size: 4.
    int iType;                                                  // Offset: 8, Size: 4.
    int bSet;                                                   // Offset: 12, Size: 4.
    unsigned __int64 aAddress;                                  // Offset: 16, Size: 8.
    unsigned int dwRange;                                       // Offset: 24, Size: 4.
    int iProlog;                                                // Offset: 28, Size: 4.
    int iCallback;                                              // Offset: 32, Size: 4.
    int iEpilog;                                                // Offset: 36, Size: 4.
    unsigned int dwNewParms[3];                                 // Offset: 40, Size: 12.
    int bUseCondition;                                          // Offset: 52, Size: 4.
    char * pcCondition;                                         // Offset: 56, Size: 4.
}; // Size: 60.
 
 
struct MODULEWITHADDRESS {
    unsigned __int64 aBaseAddress;                              // Offset: 0, Size: 8.
    char szModule[260];                                         // Offset: 8, Size: 260.
    char szExePath[260];                                        // Offset: 268, Size: 260.
}; // Size: 528.
 
 
struct HOOK_INFO {
    unsigned __int64 aAddress;                                  // Offset: 0, Size: 8.
    unsigned int dwSize;                                        // Offset: 8, Size: 4.
    int htType;                                                 // Offset: 12, Size: 4.
    char szApiName[32];                                         // Offset: 16, Size: 32.
    unsigned int dwApiOffset;                                   // Offset: 48, Size: 4.
    char szHookedModule[260];                                   // Offset: 52, Size: 260.
    unsigned __int64 aJmpAddress;                               // Offset: 312, Size: 8.
    char szHookerModule[260];                                   // Offset: 320, Size: 260.
    unsigned __int64 aHookerAddress;                            // Offset: 580, Size: 8.
    unsigned char * pbHookBytes;                                // Offset: 588, Size: 4.
    unsigned char * pbRealBytes;                                // Offset: 592, Size: 4.
}; // Size: 596.
 
 
union REMOTE_CALL_RETURN {
    unsigned char bByte;                                        // Offset: 0, Size: 1.
    char cChar;                                                 // Offset: 0, Size: 1.
    unsigned short wWord;                                       // Offset: 0, Size: 2.
    short sShort;                                               // Offset: 0, Size: 2.
    unsigned int dwDWord;                                       // Offset: 0, Size: 4.
    int lLong;                                                  // Offset: 0, Size: 4.
    unsigned __int64 ui64Int64;                                 // Offset: 0, Size: 8.
    __int64 i64Int64;                                           // Offset: 0, Size: 8.
    float fFloat;                                               // Offset: 0, Size: 4.
    double dDouble;                                             // Offset: 0, Size: 8.
}; // Size: 8.
 
 
struct LOCKPARMSINT {
    __int64 i64LockLow;                                         // Offset: 0, Size: 8.
    __int64 i64LockHigh;                                        // Offset: 8, Size: 8.
}; // Size: 16.
 
 
struct LOCKPARMSDOUBLE {
    double dLockLow;                                            // Offset: 0, Size: 8.
    double dLockHigh;                                           // Offset: 8, Size: 8.
}; // Size: 16.
 
 
union LOCKPARMS {
    LOCKPARMSINT irLock;                                        // Offset: 0, Size: 16.
    LOCKPARMSDOUBLE drLock;                                     // Offset: 0, Size: 16.
    __int64 i64Limit;                                           // Offset: 0, Size: 8.
    double dLimit;                                              // Offset: 0, Size: 8.
}; // Size: 16.
 
 
struct ADDADDRESS {
    unsigned __int64 aAddress;                                  // Offset: 0, Size: 8.
    int iType;                                                  // Offset: 8, Size: 4.
    int iLockType;                                              // Offset: 12, Size: 4.
    LOCKPARMS uLockParms;                                       // Offset: 16, Size: 16.
    unsigned int dwLockValueSize;                               // Offset: 32, Size: 4.
    unsigned char * pbLockedValue;                              // Offset: 36, Size: 4.
    char * pcDescr;                                             // Offset: 40, Size: 4.
    int iLockMethod;                                            // Offset: 44, Size: 4.
    char * pcAutoAssemble;                                      // Offset: 48, Size: 4.
    char * pcScript;                                            // Offset: 52, Size: 4.
    int iAddressType;                                           // Offset: 56, Size: 4.
    int bUseScriptForBaseAddress;                               // Offset: 60, Size: 4.
    int bUseScriptForFinalAddress;                              // Offset: 64, Size: 4.
    char * pcComplexAddress;                                    // Offset: 68, Size: 4.
    int iHotKeyKey;                                             // Offset: 72, Size: 4.
}; // Size: 76.
 
 
struct WINDOWPOS {
    void * hwnd;                                                // Offset: 0, Size: 4.
    void * hwndInsertAfter;                                     // Offset: 4, Size: 4.
    int x;                                                      // Offset: 8, Size: 4.
    int y;                                                      // Offset: 12, Size: 4.
    int cx;                                                     // Offset: 16, Size: 4.
    int cy;                                                     // Offset: 20, Size: 4.
    unsigned int flags;                                         // Offset: 24, Size: 4.
}; // Size: 28.
 
 
struct s_S_un0 {
    unsigned char s_b1;                                         // Offset: 0, Size: 1.
    unsigned char s_b2;                                         // Offset: 1, Size: 1.
    unsigned char s_b3;                                         // Offset: 2, Size: 1.
    unsigned char s_b4;                                         // Offset: 3, Size: 1.
}; // Size: 4.
 
 
struct s_S_un1 {
    unsigned short s_w1;                                        // Offset: 0, Size: 2.
    unsigned short s_w2;                                        // Offset: 2, Size: 2.
}; // Size: 4.
 
 
union u_S_un {
    s_S_un0 S_un_b;                                             // Offset: 0, Size: 4.
    s_S_un1 S_un_w;                                             // Offset: 0, Size: 4.
    unsigned int S_addr;                                        // Offset: 0, Size: 4.
}; // Size: 4.
 
 
struct in_addr {
    u_S_un S_un;                                                // Offset: 0, Size: 4.
}; // Size: 4.
 
 
struct sockaddr_in {
    short sin_family;                                           // Offset: 0, Size: 2.
    unsigned short sin_port;                                    // Offset: 2, Size: 2.
    in_addr sin_addr;                                           // Offset: 4, Size: 4.
    char sin_zero[8];                                           // Offset: 8, Size: 8.
}; // Size: 16.
 
 
struct hostent {
    char * h_name;                                              // Offset: 0, Size: 4.
    char ** h_aliases;                                          // Offset: 4, Size: 4.
    short h_addrtype;                                           // Offset: 8, Size: 2.
    short h_length;                                             // Offset: 10, Size: 2.
    char ** h_addr_list;                                        // Offset: 12, Size: 4.
}; // Size: 16.
 
 
struct servent {
    char * s_name;                                              // Offset: 0, Size: 4.
    char ** s_aliases;                                          // Offset: 4, Size: 4.
    short s_port;                                               // Offset: 8, Size: 2.
    char * s_proto;                                             // Offset: 10, Size: 4.
}; // Size: 14.
 
 
struct protoent {
    char * p_name;                                              // Offset: 0, Size: 4.
    char ** p_aliases;                                          // Offset: 4, Size: 4.
    short p_proto;                                              // Offset: 8, Size: 2.
}; // Size: 10.
 
 
struct timeval {
    int tv_sec;                                                 // Offset: 0, Size: 4.
    int tv_usec;                                                // Offset: 4, Size: 4.
}; // Size: 8.
 
 
struct fd_set {
    unsigned int fd_count;                                      // Offset: 0, Size: 4.
    unsigned int fd_array[64];                                  // Offset: 4, Size: 256.
}; // Size: 260.
 
 
struct linger {
    unsigned short l_onoff;                                     // Offset: 0, Size: 2.
    unsigned short l_linger;                                    // Offset: 2, Size: 2.
}; // Size: 4.
 
 
struct DIS_CMD {
    unsigned int dwMask;                                        // Offset: 0, Size: 4.
    unsigned int dwCode;                                        // Offset: 4, Size: 4.
    unsigned char ucLength;                                     // Offset: 8, Size: 1.
    unsigned char ucBits;                                       // Offset: 9, Size: 1.
    unsigned char ucArg1;                                       // Offset: 10, Size: 1.
    unsigned char ucArg2;                                       // Offset: 11, Size: 1.
    unsigned char ucArg3;                                       // Offset: 12, Size: 1.
    unsigned char ucType;                                       // Offset: 13, Size: 1.
    unsigned char ucDiffDecOpSize;                              // Offset: 14, Size: 1.
    unsigned char ucDepOdAddSize;                               // Offset: 15, Size: 1.
    char * ptcName;                                             // Offset: 16, Size: 4.
    void * lpvReserved;                                         // Offset: 20, Size: 4.
}; // Size: 24.
 
 
struct CODESTRING {
    unsigned int dwReserved;                                    // Offset: 0, Size: 4.
    unsigned int dwLength;                                      // Offset: 4, Size: 4.
    char * pcText;                                              // Offset: 8, Size: 4.
}; // Size: 12.
 
 
struct DIS_OP_DATA {
    int iDataType;                                              // Offset: 0, Size: 4.
    unsigned short wMemBegin;                                   // Offset: 4, Size: 2.
    unsigned short wMemEnd;                                     // Offset: 6, Size: 2.
    int bIsMemory;                                              // Offset: 8, Size: 4.
    int bIsRegister;                                            // Offset: 12, Size: 4.
    unsigned char bSize;                                        // Offset: 16, Size: 1.
    unsigned char bRegisterCount;                               // Offset: 17, Size: 1.
}; // Size: 18.
 
 
struct DIS_DISASM {
    unsigned int aEIP;                                          // Offset: 0, Size: 4.
    CODESTRING strDump;                                         // Offset: 4, Size: 12.
    CODESTRING strResult;                                       // Offset: 16, Size: 12.
    CODESTRING strComment;                                      // Offset: 28, Size: 12.
    int iCmdType;                                               // Offset: 40, Size: 4.
    int iMemType;                                               // Offset: 44, Size: 4.
    int iPrefixes;                                              // Offset: 48, Size: 4.
    int iIndexed;                                               // Offset: 52, Size: 4.
    unsigned int dwJmpConst;                                    // Offset: 56, Size: 4.
    unsigned int dwTable;                                       // Offset: 60, Size: 4.
    unsigned int dwAddrConst;                                   // Offset: 64, Size: 4.
    unsigned int dwImmConst;                                    // Offset: 68, Size: 4.
    int iArg1;                                                  // Offset: 72, Size: 4.
    int iArg2;                                                  // Offset: 76, Size: 4.
    int iArg3;                                                  // Offset: 80, Size: 4.
    int iZeroConst;                                             // Offset: 84, Size: 4.
    int iFixUpOffset;                                           // Offset: 88, Size: 4.
    int iFixUpSize;                                             // Offset: 92, Size: 4.
    int iError;                                                 // Offset: 96, Size: 4.
    int iWarnings;                                              // Offset: 100, Size: 4.
    DIS_CMD * lpcCmdData;                                       // Offset: 104, Size: 4.
    DIS_OP_DATA dodData[3];                                     // Offset: 108, Size: 54.
}; // Size: 162.
Copyright © 2006 Shawn (L. Spiro) Wilcoxen