Advertisement
yorath

wintypes

Jun 28th, 2013
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 18.04 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <stdint.h>
  4.  
  5. namespace NS_YYUNPACKER {
  6.  
  7. //#ifndef WIN32
  8.     #define IMAGE_DOS_SIGNATURE 0x4D5A
  9.     #define IMAGE_NT_SIGNATURE 0x50450000
  10.     #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
  11.     #define IMAGE_FILE_MACHINE_I386 0x014c
  12.     #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
  13.     #define IMAGE_SCN_MEM_EXECUTE 0x20000000
  14.     #define IMAGE_SCN_MEM_READ 0x40000000
  15.     #define IMAGE_SCN_MEM_WRITE 0x80000000
  16.     #define IMAGE_DIRECTORY_ENTRY_IMPORT          1   // Import Directory
  17.     #define IMAGE_DIRECTORY_ENTRY_BASERELOC       5   // Base Relocation Table
  18.     #define IMAGE_ORDINAL_FLAG 0x80000000
  19.     #define NULL 0
  20.  
  21.     #define IMAGE_REL_BASED_ABSOLUTE              0
  22.     #define IMAGE_REL_BASED_HIGH                  1
  23.     #define IMAGE_REL_BASED_LOW                   2
  24.     #define IMAGE_REL_BASED_HIGHLOW               3
  25.     #define IMAGE_REL_BASED_HIGHADJ               4
  26.     #define IMAGE_REL_BASED_MIPS_JMPADDR          5
  27.     #define IMAGE_REL_BASED_MIPS_JMPADDR16        9
  28.     #define IMAGE_REL_BASED_IA64_IMM64            9
  29.     #define IMAGE_REL_BASED_DIR64                 10
  30.  
  31.     #define PAGE_NOACCESS          0x01
  32.     #define PAGE_READONLY          0x02
  33.     #define PAGE_READWRITE         0x04
  34.     #define PAGE_WRITECOPY         0x08
  35.     #define PAGE_EXECUTE           0x10
  36.     #define PAGE_EXECUTE_READ      0x20
  37.     #define PAGE_EXECUTE_READWRITE 0x40
  38.     #define PAGE_EXECUTE_WRITECOPY 0x80
  39.     #define PAGE_GUARD            0x100
  40.     #define PAGE_NOCACHE          0x200
  41.     #define PAGE_WRITECOMBINE     0x400
  42.  
  43.     #define EXCEPTION_ACCESS_VIOLATION      0xC0000005L
  44.     #define EXCEPTION_STACK_OVERFLOW        0xC00000FDL
  45.  
  46.     typedef void *PVOID;
  47.     typedef PVOID HANDLE;
  48.     typedef unsigned short WORD;
  49.     typedef uint32_t DWORD;
  50.     typedef int32_t LONG;
  51.     typedef uint32_t ULONG;
  52.     typedef unsigned char BYTE;
  53.     typedef BYTE BOOLEAN;
  54.     typedef unsigned short USHORT;
  55.     typedef int64_t LONGLONG;
  56.     typedef LONG NTSTATUS;
  57.     typedef unsigned short WCHAR;
  58.     typedef WCHAR *NWPSTR, *LPWSTR, *PWSTR;
  59.  
  60. #ifdef WIN32
  61.     #if defined(_WIN64)
  62.         typedef __int64 INT_PTR, *PINT_PTR;
  63.         typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
  64.         typedef __int64 LONG_PTR, *PLONG_PTR;
  65.         typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
  66.         #define __int3264   __int64
  67.     #else
  68.         typedef _W64 int INT_PTR, *PINT_PTR;
  69.         typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
  70.         typedef _W64 long LONG_PTR, *PLONG_PTR;
  71.         typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
  72.         #define __int3264   __int32
  73.     #endif
  74. #else
  75.     typedef long LONG_PTR;
  76. #endif
  77.     typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
  78.  
  79.     #define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1)
  80.     #define LOWORD(l)           ((WORD)(((DWORD_PTR)(l)) & 0xffff))
  81.     #define HIWORD(l)           ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
  82.  
  83.     typedef union _LARGE_INTEGER {
  84.         struct {
  85.             DWORD LowPart;
  86.             LONG HighPart;
  87.         };
  88.         struct {
  89.             DWORD LowPart;
  90.             LONG HighPart;
  91.         };
  92.         LONGLONG QuadPart;
  93.     } LARGE_INTEGER;
  94.  
  95.     typedef struct _LIST_ENTRY {
  96.         struct _LIST_ENTRY *Flink;
  97.         struct _LIST_ENTRY *Blink;
  98.     } LIST_ENTRY, *PLIST_ENTRY;
  99.  
  100.     typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header
  101.         WORD   e_magic;                     // Magic number
  102.         WORD   e_cblp;                      // Bytes on last page of file
  103.         WORD   e_cp;                        // Pages in file
  104.         WORD   e_crlc;                      // Relocations
  105.         WORD   e_cparhdr;                   // Size of header in paragraphs
  106.         WORD   e_minalloc;                  // Minimum extra paragraphs needed
  107.         WORD   e_maxalloc;                  // Maximum extra paragraphs needed
  108.         WORD   e_ss;                        // Initial (relative) SS value
  109.         WORD   e_sp;                        // Initial SP value
  110.         WORD   e_csum;                      // Checksum
  111.         WORD   e_ip;                        // Initial IP value
  112.         WORD   e_cs;                        // Initial (relative) CS value
  113.         WORD   e_lfarlc;                    // File address of relocation table
  114.         WORD   e_ovno;                      // Overlay number
  115.         WORD   e_res[4];                    // Reserved words
  116.         WORD   e_oemid;                     // OEM identifier (for e_oeminfo)
  117.         WORD   e_oeminfo;                   // OEM information; e_oemid specific
  118.         WORD   e_res2[10];                  // Reserved words
  119.         LONG   e_lfanew;                    // File address of new exe header
  120.     } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
  121.  
  122.     typedef struct _IMAGE_FILE_HEADER {
  123.         WORD    Machine;
  124.         WORD    NumberOfSections;
  125.         DWORD   TimeDateStamp;
  126.         DWORD   PointerToSymbolTable;
  127.         DWORD   NumberOfSymbols;
  128.         WORD    SizeOfOptionalHeader;
  129.         WORD    Characteristics;
  130.     } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
  131.  
  132.     typedef struct _IMAGE_DATA_DIRECTORY {
  133.         DWORD   VirtualAddress;
  134.         DWORD   Size;
  135.     } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
  136.  
  137.     typedef struct _IMAGE_BASE_RELOCATION {
  138.         DWORD   VirtualAddress;
  139.         DWORD   SizeOfBlock;
  140.     } IMAGE_BASE_RELOCATION;
  141.     typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION;
  142.  
  143.     typedef struct _IMAGE_OPTIONAL_HEADER {
  144.         WORD    Magic;
  145.         BYTE    MajorLinkerVersion;
  146.         BYTE    MinorLinkerVersion;
  147.         DWORD   SizeOfCode;
  148.         DWORD   SizeOfInitializedData;
  149.         DWORD   SizeOfUninitializedData;
  150.         DWORD   AddressOfEntryPoint;
  151.         DWORD   BaseOfCode;
  152.         DWORD   BaseOfData;
  153.  
  154.         DWORD   ImageBase;
  155.         DWORD   SectionAlignment;
  156.         DWORD   FileAlignment;
  157.         WORD    MajorOperatingSystemVersion;
  158.         WORD    MinorOperatingSystemVersion;
  159.         WORD    MajorImageVersion;
  160.         WORD    MinorImageVersion;
  161.         WORD    MajorSubsystemVersion;
  162.         WORD    MinorSubsystemVersion;
  163.         DWORD   Win32VersionValue;
  164.         DWORD   SizeOfImage;
  165.         DWORD   SizeOfHeaders;
  166.         DWORD   CheckSum;
  167.         WORD    Subsystem;
  168.         WORD    DllCharacteristics;
  169.         DWORD   SizeOfStackReserve;
  170.         DWORD   SizeOfStackCommit;
  171.         DWORD   SizeOfHeapReserve;
  172.         DWORD   SizeOfHeapCommit;
  173.         DWORD   LoaderFlags;
  174.         DWORD   NumberOfRvaAndSizes;
  175.         IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
  176.     } IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
  177.  
  178.     typedef struct _IMAGE_NT_HEADERS {
  179.         DWORD Signature;
  180.         IMAGE_FILE_HEADER FileHeader;
  181.         IMAGE_OPTIONAL_HEADER OptionalHeader;
  182.     } IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;
  183.  
  184. #define IMAGE_SIZEOF_SHORT_NAME              8
  185.  
  186.     typedef struct _IMAGE_SECTION_HEADER {
  187.         BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];
  188.         union {
  189.             DWORD   PhysicalAddress;
  190.             DWORD   VirtualSize;
  191.         } Misc;
  192.         DWORD   VirtualAddress;
  193.         DWORD   SizeOfRawData;
  194.         DWORD   PointerToRawData;
  195.         DWORD   PointerToRelocations;
  196.         DWORD   PointerToLinenumbers;
  197.         WORD    NumberOfRelocations;
  198.         WORD    NumberOfLinenumbers;
  199.         DWORD   Characteristics;
  200.     } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
  201.  
  202.     typedef struct _IMAGE_THUNK_DATA {
  203.         union {
  204.             DWORD ForwarderString;      // PBYTE
  205.             DWORD Function;             // PDWORD
  206.             DWORD Ordinal;
  207.             DWORD AddressOfData;        // PIMAGE_IMPORT_BY_NAME
  208.         } u1;
  209.     } IMAGE_THUNK_DATA;
  210.     typedef IMAGE_THUNK_DATA * PIMAGE_THUNK_DATA;
  211.  
  212.     typedef struct _IMAGE_IMPORT_BY_NAME {
  213.         WORD    Hint;
  214.         BYTE    Name[1];
  215.     } IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
  216.  
  217.     typedef struct _IMAGE_IMPORT_DESCRIPTOR {
  218.         union {
  219.             DWORD   Characteristics;            // 0 for terminating null import descriptor
  220.             DWORD   OriginalFirstThunk;         // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
  221.         };
  222.         DWORD   TimeDateStamp;                  // 0 if not bound,
  223.         // -1 if bound, and real date\time stamp
  224.         //     in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
  225.         // O.W. date/time stamp of DLL bound to (Old BIND)
  226.  
  227.         DWORD   ForwarderChain;                 // -1 if no forwarders
  228.         DWORD   Name;
  229.         DWORD   FirstThunk;                     // RVA to IAT (if bound this IAT has actual addresses)
  230.     } IMAGE_IMPORT_DESCRIPTOR;
  231.     typedef IMAGE_IMPORT_DESCRIPTOR *PIMAGE_IMPORT_DESCRIPTOR;
  232.  
  233.     /*
  234.     * Exception disposition return values.
  235.     */
  236.     typedef enum _EXCEPTION_DISPOSITION {
  237.         ExceptionContinueExecution,
  238.         ExceptionContinueSearch,
  239.         ExceptionNestedException,
  240.         ExceptionCollidedUnwind
  241.     } EXCEPTION_DISPOSITION;
  242.  
  243.     #define EXCEPTION_MAXIMUM_PARAMETERS 15 // maximum number of exception parameters
  244.     typedef struct _EXCEPTION_RECORD {
  245.         DWORD    ExceptionCode;
  246.         DWORD ExceptionFlags;
  247.         struct _EXCEPTION_RECORD *ExceptionRecord;
  248.         PVOID ExceptionAddress;
  249.         DWORD NumberParameters;
  250.         ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
  251.     } EXCEPTION_RECORD;
  252.  
  253.     typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
  254.  
  255.     #define NTAPI __stdcall
  256. #ifndef WIN32
  257.     #define __stdcall
  258. #endif
  259.  
  260.     typedef
  261.         EXCEPTION_DISPOSITION
  262.         NTAPI
  263.         EXCEPTION_ROUTINE (
  264.         struct _EXCEPTION_RECORD *ExceptionRecord,
  265.         PVOID EstablisherFrame,
  266.         struct _CONTEXT *ContextRecord,
  267.         PVOID DispatcherContext
  268.         );
  269.  
  270.     typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE;
  271.  
  272.     typedef struct _EXCEPTION_REGISTRATION_RECORD {
  273.         struct _EXCEPTION_REGISTRATION_RECORD *Next;
  274.         PEXCEPTION_ROUTINE Handler;
  275.     } EXCEPTION_REGISTRATION_RECORD;
  276.  
  277.     typedef struct _NT_TIB {
  278.         struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
  279.         PVOID StackBase;
  280.         PVOID StackLimit;
  281.         PVOID SubSystemTib;
  282.         union {
  283.             PVOID FiberData;
  284.             DWORD Version;
  285.         };
  286.         PVOID ArbitraryUserPointer;
  287.         struct _NT_TIB *Self;
  288.     } NT_TIB;
  289.     typedef NT_TIB *PNT_TIB;
  290.  
  291.     typedef struct _UNICODE_STRING {
  292.         USHORT Length;
  293.         USHORT MaximumLength;
  294.         PWSTR  Buffer;
  295.     } UNICODE_STRING;
  296.     typedef UNICODE_STRING *PUNICODE_STRING;
  297.     typedef const UNICODE_STRING *PCUNICODE_STRING;
  298.  
  299.     typedef struct _PEB_LDR_DATA {
  300.         ULONG                   Length;
  301.         BOOLEAN                 Initialized;
  302.         PVOID                   SsHandle;
  303.         LIST_ENTRY              InLoadOrderModuleList;
  304.         LIST_ENTRY              InMemoryOrderModuleList;
  305.         LIST_ENTRY              InInitializationOrderModuleList;
  306.     } PEB_LDR_DATA, *PPEB_LDR_DATA;
  307.  
  308.     typedef struct _RTL_DRIVE_LETTER_CURDIR {
  309.         USHORT                  Flags;
  310.         USHORT                  Length;
  311.         ULONG                   TimeStamp;
  312.         UNICODE_STRING          DosPath;
  313.     } RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
  314.  
  315.     typedef struct _RTL_USER_PROCESS_PARAMETERS {
  316.         ULONG                   MaximumLength;
  317.         ULONG                   Length;
  318.         ULONG                   Flags;
  319.         ULONG                   DebugFlags;
  320.         PVOID                   ConsoleHandle;
  321.         ULONG                   ConsoleFlags;
  322.         HANDLE                  StdInputHandle;
  323.         HANDLE                  StdOutputHandle;
  324.         HANDLE                  StdErrorHandle;
  325.         UNICODE_STRING          CurrentDirectoryPath;
  326.         HANDLE                  CurrentDirectoryHandle;
  327.         UNICODE_STRING          DllPath;
  328.         UNICODE_STRING          ImagePathName;
  329.         UNICODE_STRING          CommandLine;
  330.         PVOID                   Environment;
  331.         ULONG                   StartingPositionLeft;
  332.         ULONG                   StartingPositionTop;
  333.         ULONG                   Width;
  334.         ULONG                   Height;
  335.         ULONG                   CharWidth;
  336.         ULONG                   CharHeight;
  337.         ULONG                   ConsoleTextAttributes;
  338.         ULONG                   WindowFlags;
  339.         ULONG                   ShowWindowFlags;
  340.         UNICODE_STRING          WindowTitle;
  341.         UNICODE_STRING          DesktopName;
  342.         UNICODE_STRING          ShellInfo;
  343.         UNICODE_STRING          RuntimeData;
  344.         RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
  345.     } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
  346.  
  347.     typedef void (*PPEBLOCKROUTINE)(PVOID PebLock);
  348.  
  349.     typedef struct _PEB_FREE_BLOCK {
  350.         _PEB_FREE_BLOCK *Next;
  351.         ULONG Size;
  352.     } PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
  353.  
  354.     typedef struct _PEB {
  355.         BOOLEAN                 InheritedAddressSpace;
  356.         BOOLEAN                 ReadImageFileExecOptions;
  357.         BOOLEAN                 BeingDebugged;
  358.         BOOLEAN                 Spare;
  359.         HANDLE                  Mutant;
  360.         PVOID                   ImageBaseAddress;
  361.         PPEB_LDR_DATA           LoaderData;
  362.         PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
  363.         PVOID                   SubSystemData;
  364.         PVOID                   ProcessHeap;
  365.         PVOID                   FastPebLock;
  366.         PPEBLOCKROUTINE         FastPebLockRoutine;
  367.         PPEBLOCKROUTINE         FastPebUnlockRoutine;
  368.         ULONG                   EnvironmentUpdateCount;
  369.         PVOID                   *KernelCallbackTable;
  370.         PVOID                   EventLogSection;
  371.         PVOID                   EventLog;
  372.         PPEB_FREE_BLOCK         FreeList;
  373.         ULONG                   TlsExpansionCounter;
  374.         PVOID                   TlsBitmap;
  375.         ULONG                   TlsBitmapBits[0x2];
  376.         PVOID                   ReadOnlySharedMemoryBase;
  377.         PVOID                   ReadOnlySharedMemoryHeap;
  378.         PVOID                   *ReadOnlyStaticServerData;
  379.         PVOID                   AnsiCodePageData;
  380.         PVOID                   OemCodePageData;
  381.         PVOID                   UnicodeCaseTableData;
  382.         ULONG                   NumberOfProcessors;
  383.         ULONG                   NtGlobalFlag;
  384.         BYTE                    Spare2[0x4];
  385.         LARGE_INTEGER           CriticalSectionTimeout;
  386.         ULONG                   HeapSegmentReserve;
  387.         ULONG                   HeapSegmentCommit;
  388.         ULONG                   HeapDeCommitTotalFreeThreshold;
  389.         ULONG                   HeapDeCommitFreeBlockThreshold;
  390.         ULONG                   NumberOfHeaps;
  391.         ULONG                   MaximumNumberOfHeaps;
  392.         PVOID                   **ProcessHeaps;
  393.         PVOID                   GdiSharedHandleTable;
  394.         PVOID                   ProcessStarterHelper;
  395.         PVOID                   GdiDCAttributeList;
  396.         PVOID                   LoaderLock;
  397.         ULONG                   OSMajorVersion;
  398.         ULONG                   OSMinorVersion;
  399.         ULONG                   OSBuildNumber;
  400.         ULONG                   OSPlatformId;
  401.         ULONG                   ImageSubSystem;
  402.         ULONG                   ImageSubSystemMajorVersion;
  403.         ULONG                   ImageSubSystemMinorVersion;
  404.         ULONG                   GdiHandleBuffer[0x22];
  405.         ULONG                   PostProcessInitRoutine;
  406.         ULONG                   TlsExpansionBitmap;
  407.         BYTE                    TlsExpansionBitmapBits[0x80];
  408.         ULONG                   SessionId;
  409.     } PEB, *PPEB;
  410.  
  411.     typedef struct {
  412.         DWORD UniqueProcess;
  413.         DWORD UniqueThread;
  414.     } CLIENT_ID;
  415.  
  416.  
  417.     typedef struct _NT_TEB {
  418.         NT_TIB          Tib;
  419.         PVOID           EnvironmentPointer;
  420.         CLIENT_ID       Cid;
  421.         PVOID           ActiveRpcInfo;
  422.         PVOID           ThreadLocalStoragePointer;
  423.         PPEB            Peb;
  424.         ULONG           LastErrorValue;
  425.         ULONG           CountOfOwnedCriticalSections;
  426.         PVOID           CsrClientThread;
  427.         PVOID           Win32ThreadInfo;
  428.         ULONG           Win32ClientInfo[0x1F];
  429.         PVOID           WOW32Reserved;
  430.         ULONG           CurrentLocale;
  431.         ULONG           FpSoftwareStatusRegister;
  432.         PVOID           SystemReserved1[0x36];
  433.         PVOID           Spare1;
  434.         ULONG           ExceptionCode;
  435.         ULONG           SpareBytes1[0x28];
  436.         PVOID           SystemReserved2[0xA];
  437.         ULONG           GdiRgn;
  438.         ULONG           GdiPen;
  439.         ULONG           GdiBrush;
  440.         CLIENT_ID       RealClientId;
  441.         PVOID           GdiCachedProcessHandle;
  442.         ULONG           GdiClientPID;
  443.         ULONG           GdiClientTID;
  444.         PVOID           GdiThreadLocaleInfo;
  445.         PVOID           UserReserved[5];
  446.         PVOID           GlDispatchTable[0x118];
  447.         ULONG           GlReserved1[0x1A];
  448.         PVOID           GlReserved2;
  449.         PVOID           GlSectionInfo;
  450.         PVOID           GlSection;
  451.         PVOID           GlTable;
  452.         PVOID           GlCurrentRC;
  453.         PVOID           GlContext;
  454.         NTSTATUS        LastStatusValue;
  455.         UNICODE_STRING  StaticUnicodeString;
  456.         WCHAR           StaticUnicodeBuffer[0x105];
  457.         PVOID           DeallocationStack;
  458.         PVOID           TlsSlots[0x40];
  459.         LIST_ENTRY      TlsLinks;
  460.         PVOID           Vdm;
  461.         PVOID           ReservedForNtRpc;
  462.         PVOID           DbgSsReserved[0x2];
  463.         ULONG           HardErrorDisabled;
  464.         PVOID           Instrumentation[0x10];
  465.         PVOID           WinSockData;
  466.         ULONG           GdiBatchCount;
  467.         ULONG           Spare2;
  468.         ULONG           Spare3;
  469.         ULONG           Spare4;
  470.         PVOID           ReservedForOle;
  471.         ULONG           WaitingOnLoaderLock;
  472.         PVOID           StackCommit;
  473.         PVOID           StackCommitMax;
  474.         PVOID           StackReserved;
  475.     } NT_TEB, *PNT_TEB;
  476.  
  477. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement