⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntoskrnlundoc.h

📁 尔罗斯著名黑客写的rootkit
💻 H
📖 第 1 页 / 共 2 页
字号:

//NTSYSAPI
//NTSTATUS
//NTAPI
//ZwQueryDirectoryObject (
//    IN HANDLE       DirectoryHandle,
//    OUT PVOID       Buffer,
//    IN ULONG        Length,
//    IN BOOLEAN      ReturnSingleEntry,
//    IN BOOLEAN      RestartScan,
//    IN OUT PULONG   Context,
//    OUT PULONG      ReturnLength OPTIONAL
//    );

//NtQueryDirectoryObject
typedef NTSTATUS (__stdcall *NTQUERYDIRECTORYOBJECT)(HANDLE DirectoryObjectHandle, PVOID ObjectInfoBuffer, ULONG ObjectInfoBufferLength, DIRECTORYINFOCLASS DirectoryInformationClass, BOOLEAN First, PULONG ObjectIndex, PULONG LengthReturned);

NTSYSAPI
NTSTATUS
NTAPI
ZwOpenDirectoryObject (
    OUT PHANDLE             DirectoryHandle,
    IN ACCESS_MASK          DesiredAccess,
    IN POBJECT_ATTRIBUTES   ObjectAttributes
    );

NTSYSAPI
NTSTATUS
NTAPI
ZwOpenSymbolicLinkObject (
    OUT PHANDLE             SymbolicLinkHandle,
    IN ACCESS_MASK          DesiredAccess,
    IN POBJECT_ATTRIBUTES   ObjectAttributes
    );

NTSYSAPI
NTSTATUS
NTAPI
ZwQuerySymbolicLinkObject (
    IN HANDLE               LinkHandle,
    IN OUT PUNICODE_STRING  LinkTarget,
    OUT PULONG              ReturnedLength OPTIONAL
    );

NTSYSAPI
NTSTATUS
NTAPI
PsLookupThreadByThreadId (
    IN ULONG ulThreadId,
    OUT PETHREAD* ppEThread
    );

NTSYSAPI
NTSTATUS
NTAPI
PsLookupProcessByProcessId (
    IN ULONG ulProcessId,
    OUT PEPROCESS* ppEProcess
    );

#ifndef __WIN2K
typedef struct _FILE_NAME_INFORMATION
{
  ULONG FileNameLength;
  WCHAR FileName[1];
} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;

NTSYSAPI
NTSTATUS
NTAPI
IoCreateFile(
    OUT PHANDLE FileHandle,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_ATTRIBUTES ObjectAttributes,
    OUT PIO_STATUS_BLOCK IoStatusBlock,
    IN PLARGE_INTEGER AllocationSize OPTIONAL,
    IN ULONG FileAttributes,
    IN ULONG ShareAccess,
    IN ULONG Disposition,
    IN ULONG CreateOptions,
    IN PVOID EaBuffer OPTIONAL,
    IN ULONG EaLength,
    IN CREATE_FILE_TYPE CreateFileType,
    IN PVOID ExtraCreateParameters OPTIONAL,
    IN ULONG Options
    ) ;
#endif //__WIN2K

typedef void*               HINSTANCE;
typedef unsigned char       BYTE;
typedef unsigned short      WORD;
typedef void*               PPS_IMPERSONATION_INFO;

typedef struct _TOP_LEVEL_IRP
{
  ULONG ulUnknown0;
  ULONG ulUnknown1;
} TOP_LEVEL_IRP, *PTOP_LEVEL_IRP;

typedef struct _KAPC_STATE           //Size: 0x18
{
  LIST_ENTRY ApcListHead[2]; //0x00
  struct _EPROCESS*  Process; //0x10
  BYTE       KernelApcInProgress; //0x14
  BYTE       KernelApcPending;    //0x15
  BYTE       UserApcPending;      //0x16
  BYTE       Reserved; //0x17
} KAPC_STATE, *PKAPC_STATE;

typedef struct APC_STATE_POINTER //size : 0x8
{
  PKAPC_STATE SavedApcState;   //0x00
  PKAPC_STATE ApcState;        //0x04
} APC_STATE_POINTER;

typedef struct _PEB
{           // Size: 0x1D8
  UCHAR InheritedAddressSpace;                                         /*000*/
  UCHAR ReadImageFileExecOptions;                                      /*001*/
  UCHAR BeingDebugged;                                                 /*002*/
  UCHAR SpareBool;                // Allocation size                   /*003*/
  HANDLE Mutant;                                                       /*004*/
  HINSTANCE ImageBaseAddress; // Instance                              /*008*/
  VOID *Ldr;          // Module list?                                  /*00C*/
  VOID *ProcessParameters;                                             /*010*/
  ULONG SubSystemData;                                                 /*014*/
  HANDLE ProcessHeap;                                                  /*018*/
  KSPIN_LOCK FastPebLock;                                              /*01C*/
  ULONG FastPebLockRoutine;                                            /*020*/
  ULONG FastPebUnlockRoutine;                                          /*024*/
  ULONG EnvironmentUpdateCount;                                        /*028*/
  ULONG KernelCallbackTable;                                           /*02C*/
  LARGE_INTEGER SystemReserved;                                        /*030*/
  ULONG FreeList;                                                      /*038*/
  ULONG TlsExpansionCounter;                                           /*03C*/
  ULONG TlsBitmap;                                                     /*040*/
  LARGE_INTEGER TlsBitmapBits;                                         /*044*/
  ULONG ReadOnlySharedMemoryBase;                                      /*04C*/
  ULONG ReadOnlySharedMemoryHeap;                                      /*050*/
  ULONG ReadOnlyStaticServerData;                                      /*054*/
  ULONG AnsiCodePageData;                                              /*058*/
  ULONG OemCodePageData;                                               /*05C*/
  ULONG UnicodeCaseTableData;                                          /*060*/
  ULONG NumberOfProcessors;                                            /*064*/
  LARGE_INTEGER NtGlobalFlag;     // Address of a local copy           /*068*/
  LARGE_INTEGER CriticalSectionTimeout;                                /*070*/
  ULONG HeapSegmentReserve;                                            /*078*/
  ULONG HeapSegmentCommit;                                             /*07C*/
  ULONG HeapDeCommitTotalFreeThreshold;                                /*080*/
  ULONG HeapDeCommitFreeBlockThreshold;                                /*084*/
  ULONG NumberOfHeaps;                                                 /*088*/
  ULONG MaximumNumberOfHeaps;                                          /*08C*/
  ULONG ProcessHeaps;                                                  /*090*/
  ULONG GdiSharedHandleTable;                                          /*094*/
  ULONG ProcessStarterHelper;                                          /*098*/
  ULONG GdiDCAttributeList;                                            /*09C*/
  KSPIN_LOCK LoaderLock;                                               /*0A0*/
  ULONG OSMajorVersion;                                                /*0A4*/
  ULONG OSMinorVersion;                                                /*0A8*/
  USHORT OSBuildNumber;                                                /*0AC*/
  USHORT OSCSDVersion;                                                 /*0AE*/
  ULONG OSPlatformId;                                                  /*0B0*/
  ULONG ImageSubsystem;                                                /*0B4*/
  ULONG ImageSubsystemMajorVersion;                                    /*0B8*/
  ULONG ImageSubsystemMinorVersion;                                    /*0BC*/
  ULONG ImageProcessAffinityMask;                                      /*0C0*/
  ULONG GdiHandleBuffer[0x22];                                         /*0C4*/
  ULONG PostProcessInitRoutine;                                        /*14C*/
  ULONG TlsExpansionBitmap;                                            /*150*/
  UCHAR TlsExpansionBitmapBits[0x80];                                  /*154*/
  ULONG SessionId;                                                     /*1D4*/
} PEB, *PPEB;


typedef struct _TEB
{           // Size: 0xF88
  NT_TIB NtTib;                                        /*000*/
  VOID*  EnvironmentPointer;                           /*01C*/
  CLIENT_ID ClientId;                                  /*020*/
  HANDLE ActiveRpcHandle;                              /*028*/
  VOID* ThreadLocalStoragePointer;                     /*02C*/
  PEB*  ProcessEnvironmentBlock;  // PEB               /*030*/
  ULONG LastErrorValue;                                /*034*/
  ULONG CountOfOwnedCriticalSections;                  /*038*/
  ULONG CsrClientThread;                               /*03C*/
  ULONG Win32ThreadInfo;                               /*040*/
  UCHAR Win32ClientInfo[0x7C];                         /*044*/
  ULONG WOW32Reserved;                                 /*0C0*/
  ULONG CurrentLocale;                                 /*0C4*/
  ULONG FpSoftwareStatusRegister;                      /*0C8*/
  UCHAR SystemReserved1[0xD8];                         /*0CC*/
  ULONG Spare1;                                        /*1A4*/
  ULONG ExceptionCode;                                 /*1A8*/
  UCHAR SpareBytes1[0x28];                             /*1AC*/
  UCHAR SystemReserved2[0x28];                         /*1D4*/
  UCHAR GdiTebBatch[0x4E0];                            /*1FC*/
  ULONG gdiRgn;                                        /*6DC*/
  ULONG gdiPen;                                        /*6E0*/
  ULONG gdiBrush;                                      /*6E4*/
  CLIENT_ID RealClientId;                              /*6E8*/
  ULONG GdiCachedProcessHandle;                        /*6F0*/
  ULONG GdiClientPID;                                  /*6F4*/
  ULONG GdiClientTID;                                  /*6F8*/
  ULONG GdiThreadLocalInfo;                            /*6FC*/
  UCHAR UserReserved[0x14];                            /*700*/
  UCHAR glDispatchTable[0x460];                        /*714*/
  UCHAR glReserved1[0x68];                             /*B74*/
  ULONG glReserved2;                                   /*BDC*/
  ULONG glSectionInfo;                                 /*BE0*/
  ULONG glSection;                                     /*BE4*/
  ULONG glTable;                                       /*BE8*/
  ULONG glCurrentRC;                                   /*BEC*/
  ULONG glContext;                                     /*BF0*/
  ULONG LastStatusValue;                               /*BF4*/
  LARGE_INTEGER StaticUnicodeString;                   /*BF8*/
  UCHAR StaticUnicodeBuffer[0x20C];                    /*C00*/
  ULONG DeallocationStack;                             /*E0C*/
  UCHAR TlsSlots[0x100];                               /*E10*/
  LARGE_INTEGER TlsLinks;                              /*F10*/
  ULONG Vdm;                                           /*F18*/
  ULONG ReservedForNtRpc;                              /*F1C*/
  LARGE_INTEGER DbgSsReserved;                         /*F20*/
  ULONG HardErrorsAreDisabled;                         /*F28*/
  UCHAR Instrumentation[0x40];                         /*F2C*/
  ULONG WinSockData;                                   /*F6C*/
  ULONG GdiBatchCount;                                 /*F70*/
  ULONG Spare2;                                        /*F74*/
  ULONG Spare3;                                        /*F78*/
  ULONG Spare4;                                        /*F7C*/
  ULONG ReservedForOle;                                /*F80*/
  ULONG WaitingOnLoaderLock;                           /*F84*/
} TEB, *PTEB;

typedef struct _KTHREAD // Size: 0x1B0
{
  DISPATCHER_HEADER  Header;             //00
  LIST_ENTRY         MutantListHead;     //10
  ULONG              InitialStack;       //18
  ULONG              StackLimit;         //1c
  TEB*               Teb;                //20
  VOID*              TlsArray;           //24
  ULONG              KernelStack;        //28
  BYTE               DebugActive;        //2c
  BYTE               State;              //2d
  WORD               Alerted;            //2e
  BYTE               Iopl;               //30
  BYTE               NpxState;           //31
  BYTE               Saturation;         //32
  BYTE               Priority;           //33
  KAPC_STATE         ApcState;           //34
  ULONG              ContextSwitches;    //4c
  ULONG              WaitStatus;         //50
  BYTE               WaitIrql;           //54
  BYTE               WaitMode;           //55
  BYTE               WaitNext;           //56
  BYTE               WaitReason;         //57
  ULONG              WaitBlockList;      //58
  LIST_ENTRY         WaitListEntry;      //5c
  ULONG              WaitTime;           //64
  BYTE               BasePriority;       //68
  BYTE               DecrementCount;     //69
  BYTE               PriorityDecrement;  //6a
  BYTE               Quantum;            //6b
  KWAIT_BLOCK        WaitBlock [4];      //6c
  ULONG              LegoData;           //cc
  ULONG              KernelApcDisable;   //d0
  ULONG              UserAffinity;       //d4
  BYTE               SystemAffinityActive;//d8
  BYTE               Pad [3];            //d9
  ULONG              ServiceTable;       //dc
  ULONG              Queue;              //e0
  ULONG              ApcQueueLock;       //e4
  KTIMER             Timer;              //e8
  LIST_ENTRY         QueueListEntry;     //110
  ULONG              Affinity;           //118
  BYTE               Preempted;          //11c
  BYTE               ProcessReadyQueue;  //11d
  BYTE               KernelStackResident;//11e
  BYTE               NextProcessor;      //11f
  ULONG              CallbackStack;      //120
  TEB*               Win32Thread;        //124
  ULONG              TrapFrame;          //128
  APC_STATE_POINTER  ApcStatePointer;    //12c
  BYTE               EnableStackSwap;    //134
  BYTE               LargeStack;         //135
  BYTE               ResourceIndex;      //136
  BYTE               PreviousMode;       //137
  ULONG              KernelTime;         //138
  ULONG              UserTime;           //13c
  KAPC_STATE         SavedApcState;      //140
  BYTE               Alertable;          //158
  BYTE               ApcStateIndex;      //159
  BYTE               ApcQueueable;       //15a
  BYTE               AutoAlignment;      //15b
  ULONG              StackBase;          //15c
  KAPC               SuspendApc;         //160
  KSEMAPHORE         SuspendSemaphore;   //190
  LIST_ENTRY         ThreadListEntry;    //1a4
  BYTE               FreezeCount;        //1ac
  BYTE               SuspendCount;       //1ad
  BYTE               IdealProcessor;     //1ae
  BYTE               DisableBoost;       //1af
} KTHREAD, * PKTHREAD;


typedef struct _ETHREAD                  //size 0x240
{
  KTHREAD            Tcb;                //0
  TIME               CreateTime;         //1b0
  union
  {
    LARGE_INTEGER    ExitTime;           //1b8
    LARGE_INTEGER    LpcReplyChain;
  };
  union
  {
    ULONG            ExitStatus;         //1c0
    ULONG            OfsChain;
  };
  LIST_ENTRY         PostBlockList;      //1c4
  LIST_ENTRY         TerminationPortList;//1cc
  KSPIN_LOCK         ActiveTimerListLock;//1d4
  LIST_ENTRY         ActiveTimerListHead;//1d8
  CLIENT_ID          Cid;                //1e0
  PLARGE_INTEGER     LpcReplySemaphore;  //1e8
  ULONG              LpcReplyMessage;    //1fc
  ULONG              LpcReplyMessageId;  //200
  ULONG              PerformanceCountLow;//204
  PPS_IMPERSONATION_INFO ImpersonationInfo;//208
  LIST_ENTRY         IrpList;            //20c
  TOP_LEVEL_IRP      TopLevelIrp;        //214
  ULONG              ReadClusterSize;    //21c
  UCHAR              ForwardClusterOnly; //220
  UCHAR              DisablePageFaultClustering;//221
  UCHAR              DeadThread;         //222
  UCHAR              HasTerminated;      //223
  ULONG              EventPair;          //224
  ACCESS_MASK        GrantedAccess;      //228
  ULONG              ThreadsProcess;     //22c
  ULONG              StartAddress;       //230
  union
  {
    ULONG            Win32StartAddress;  //234
    ULONG            LpcReceivedMessageId;
  };
  UCHAR              LpcExitThreadCalled;//238
  UCHAR              HardErrorsAreDisabled;//239
  UCHAR              LpcReceivedMsgIdValid;//23a
  UCHAR              ActiveImpersonationInfo;//23b
  ULONG              PerformanceCountHigh;//23c
} ETHREAD, *PETHREAD;

NTSYSAPI
NTSTATUS
NTAPI
ZwFsControlFile (
    IN HANDLE               FileHandle,
    IN HANDLE               Event OPTIONAL,
    IN PIO_APC_ROUTINE      ApcRoutine OPTIONAL,
    IN PVOID                ApcContext OPTIONAL,
    OUT PIO_STATUS_BLOCK    IoStatusBlock,
    IN ULONG                FsControlCode,
    IN PVOID                InputBuffer OPTIONAL,
    IN ULONG                InputBufferLength,
    OUT PVOID               OutputBuffer OPTIONAL,
    IN ULONG                OutputBufferLength
);

//#define ZwNotifyChangeDirectoryFile NtNotifyChangeDirectoryFile

NTSYSAPI
NTSTATUS
NTAPI
NtNotifyChangeDirectoryFile (
    IN HANDLE               FileHandle,
    IN HANDLE               Event OPTIONAL,
    IN PIO_APC_ROUTINE      ApcRoutine OPTIONAL,
    IN PVOID                ApcContext OPTIONAL,
    OUT PIO_STATUS_BLOCK    IoStatusBlock,
    OUT PVOID               Buffer,
    IN ULONG                Length,
    IN ULONG                CompletionFilter,
    IN BOOLEAN              WatchTree
);

NTSYSAPI
PDEVICE_OBJECT
NTAPI
IoGetBaseFileSystemDeviceObject (
    IN PFILE_OBJECT FileObject
);


NTSYSAPI
NTSTATUS
NTAPI
NtQueryDirectoryFile(
    IN HANDLE DirectoryFileHandle,
    IN HANDLE EventHandle,             // optional //
    IN PIO_APC_ROUTINE ApcRoutine,     // optional //
    IN PVOID ApcContext,               // optional //
    OUT PIO_STATUS_BLOCK IoStatusBlock,
    OUT PVOID Buffer,
    IN ULONG BufferLength,
    IN FILE_INFORMATION_CLASS DirectoryInfoClass,
    IN BOOLEAN ByOne,
    IN PUNICODE_STRING SearchTemplate, // optional //
    IN BOOLEAN Reset
    );

//#undef IoCallDriver
//NTSYSAPI
//NTSTATUS 
//NTAPI
//IoCallDriver(
//     IN PDEVICE_OBJECT  DeviceObject,
//     IN OUT PIRP  Irp
//     );

typedef struct _DIR_ITEM
{
  struct _DIR_ITEM*  Next;
  PVOID              Object;
} DIR_ITEM, *PDIR_ITEM;

typedef struct _DIRECTORY
{
  PDIR_ITEM  HashEntries[37];
  PDIR_ITEM  LastHashAccess;     //94h
  ULONG      LastHashResult;     //98h
} DIRECTORY, *PDIRECTORY;


typedef struct _OBJECT_NAME
{
  PDIRECTORY     Directory;          // 滂疱牝铕

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -