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

📄 w2k_lib.h

📁 Undocumented WIndows 2000 Secrets 完整简体中文版!!NT架构windows(20000、xp)Kernel Hacking必备!!附cd iso与完整附录!
💻 H
📖 第 1 页 / 共 3 页
字号:

// w2k_lib.h
// 02-12-2001 Sven B. Schreiber
// sbs@orgon.com

#ifndef UNICODE
#define UNICODE     // ANSI not supported by this library
#endif

// =================================================================
// PROGRAM VERSION
// =================================================================

#define W2K_LIB_MODULE          w2k_lib

#define W2K_LIB_BUILD           1
#define W2K_LIB_VERSION_HIGH    1
#define W2K_LIB_VERSION_LOW     0

#define W2K_LIB_VERSION         ((W2K_LIB_VERSION_HIGH * 100) \
                                + W2K_LIB_VERSION_LOW)

////////////////////////////////////////////////////////////////////
#ifdef _W2K_LIB_DLL_
////////////////////////////////////////////////////////////////////

// =================================================================
// PROGRAM IDENTIFICATION
// =================================================================

#define MAIN_BUILD              W2K_LIB_BUILD
#define MAIN_VERSION_HIGH       W2K_LIB_VERSION_HIGH
#define MAIN_VERSION_LOW        W2K_LIB_VERSION_LOW

// -----------------------------------------------------------------

#define MAIN_DAY                12
#define MAIN_MONTH              02
#define MAIN_YEAR               2001

// -----------------------------------------------------------------

#define MAIN_PREFIX             SBS
#define MAIN_MODULE             W2K_LIB_MODULE
#define MAIN_NAME               SBS Windows 2000 Utility Library
#define MAIN_COMPANY            Sven B. Schreiber
#define MAIN_AUTHOR             Sven B. Schreiber
#define MAIN_EMAIL              sbs@orgon.com
#define MAIN_DLL

////////////////////////////////////////////////////////////////////
#endif // #ifdef _W2K_LIB_DLL_
////////////////////////////////////////////////////////////////////

// =================================================================
// HEADER FILES
// =================================================================

#include <proginfo.h>

////////////////////////////////////////////////////////////////////
#ifndef _RC_PASS_
////////////////////////////////////////////////////////////////////

// =================================================================
// MACROS
// =================================================================

#define ENTRY(_a)        ((DWORD) ((PBYTE) ((_a)+1) - (PBYTE) (_a)))
#define OFFSET(_s,_m)    ((DWORD) &(((_s *) 0)->_m))
#define MEMBER(_s,_m)    sizeof (((_s *) 0)->_m)
#define SKIP(_p,_d)      ((PVOID) (((PBYTE) (_p)) + (_d)))
#define BACK(_p,_d)      ((PVOID) (((PBYTE) (_p)) - (_d)))
#define BASE(_p,_s,_m)   ((_s *) BACK (_p, OFFSET (_s, _m)))

#define COUNT(_n,_1,_x)  ((_n) == 1 ? (_1) : (_x))
#define COUNTX(_n,_1,_x) (_n), COUNT(_n,_1,_x)

#define LCASE(_c)        ((WORD) CharLower ((PWORD) (_c)))
#define UCASE(_c)        ((WORD) CharUpper ((PWORD) (_c)))

#define W2K_VERSION1(_q) ((WORD) ((_q) >> 48))
#define W2K_VERSION2(_q) ((WORD) ((_q) >> 32))
#define W2K_VERSION3(_q) ((WORD) ((_q) >> 16))
#define W2K_VERSION4(_q) ((WORD)  (_q)       )

// =================================================================
// VARIOUS CONSTANTS
// =================================================================

#define N_STRING                    0x0100
#define N_CONSOLE                   0x1000
#define N_WRITE                     0x4000 // WriteFile() block size

#define N_NAME                      N_STRING
#define N_LEVEL                     N_STRING

#define N_DECIMAL16                 ( 5 + 1)
#define N_DECIMAL32                 (10 + 1)
#define N_HEX16                     ( 4 + 1)
#define N_HEX32                     ( 8 + 1)

#define N_VERSION                   (2 * N_DECIMAL32)   // a.bb
#define N_VERSION_EX                (4 * N_DECIMAL16)   // a.b.c.d
#define N_BUILD                     (3 * N_DECIMAL32)   // a.bb.c

#define HKEY_NULL                   ((HKEY ) -1)
#define VERSION_NULL                ((QWORD) -1)

#define INVALID_UNICODE             0x7F

// =================================================================
// TYPE SIZE DEFINITIONS
// =================================================================

#define ENUM_SERVICE_STATUS_        sizeof (ENUM_SERVICE_STATUS)

#define BYTE_                       sizeof (BYTE)
#define WORD_                       sizeof (WORD)
#define DWORD_                      sizeof (DWORD)
#define PVOID_                      sizeof (PVOID)
#define HANDLE_                     sizeof (HANDLE)
#define HMODULE_                    sizeof (HMODULE)

#define BYTE__                      (BYTE_  * 8)
#define WORD__                      (WORD_  * 8)
#define DWORD__                     (DWORD_ * 8)

// =================================================================
// REGISTRY R/W MODES
// =================================================================

#define W2K_MODE_DWORD              0xFFFFFFFF
#define W2K_MODE_TEXT               0xFFFFFFFE
#define W2K_MODE_BINARY(_m)         ((DWORD) (_m) < W2K_MODE_TEXT)

// =================================================================
// POOL NOTIFICATION IDS
// =================================================================

#define W2K_NOTIFY_UNDEFINED        0
#define W2K_NOTIFY_ENUMERATE        1
#define W2K_NOTIFY_ADD              2
#define W2K_NOTIFY_REMOVE           3
#define W2K_NOTIFY_DESTROY          4

// =================================================================
// LIST NODE TYPES
// =================================================================

#define W2K_NODE_ANY                0

// =================================================================
// SYSTEM IDS
// =================================================================

#define W2K_SYSTEM_WINNT3           3
#define W2K_SYSTEM_WINNT4           4
#define W2K_SYSTEM_WIN2000          5

// =================================================================
// POINTER TYPES
// =================================================================

typedef VOID                                    **PPVOID;
typedef WORD                                    **PPWORD;
typedef DWORD                                   **PPDWORD;
typedef DWORDLONG QWORD,    *PQWORD,            **PPQWORD;
typedef COLORREF            *PCOLORREF,         **PPCOLORREF;
typedef RGBQUAD             *PRGBQUAD,          **PPRGBQUAD;
typedef HBITMAP             *PHBITMAP,          **PPHBITMAP;
typedef HICON               *PHICON,            **PPHICON;
typedef HMODULE             *PHMODULE,          **PPHMODULE;
typedef HWND                *PHWND,             **PPHWND;
typedef SC_HANDLE           *PSC_HANDLE,        **PPSC_HANDLE;
typedef SERVICE_STATUS      *PSERVICE_STATUS,   **PPSERVICE_STATUS;

typedef ENUM_SERVICE_STATUS  * PENUM_SERVICE_STATUS,
                            **PPENUM_SERVICE_STATUS;

// =================================================================
// FUNCTION TYPES
// =================================================================

typedef BOOL (CALLBACK *W2K_WALK  ) (PVOID             pThis,
                                     PVOID             pData);

typedef BOOL (CALLBACK *W2K_NOTIFY) (struct _W2K_POOL *pwp,
                                     DWORD             dMode,
                                     PWORD             pwName,
                                     PVOID             pData);

// =================================================================
// STRUCTURES
// =================================================================

typedef struct _W2K_MEMORY
    {
    DWORD dTag;
    DWORD dSize;
    BYTE  abData [];
    }
    W2K_MEMORY, *PW2K_MEMORY, **PPW2K_MEMORY;

#define W2K_MEMORY_ sizeof (W2K_MEMORY)
#define W2K_MEMORY_TAG '>k2w' // w2k>

// -----------------------------------------------------------------

typedef struct _W2K_ENTRY
    {
    WORD  awName [N_NAME];
    PVOID pData;
    }
    W2K_ENTRY, *PW2K_ENTRY, **PPW2K_ENTRY;

#define W2K_ENTRY_ sizeof (W2K_ENTRY)

// -----------------------------------------------------------------

typedef struct _W2K_POOL
    {
    CRITICAL_SECTION cs;
    SYSTEMTIME       stCreate;
    SYSTEMTIME       stUpdate;
    SYSTEMTIME       stAdd;
    SYSTEMTIME       stRemove;
    DWORD            dCount;
    W2K_ENTRY        awe [];
    }
    W2K_POOL, *PW2K_POOL, **PPW2K_POOL;

#define W2K_POOL_ sizeof (W2K_POOL)

#define W2K_POOL__(_n) \
        (W2K_POOL_ + ((_n) * W2K_ENTRY_))

// -----------------------------------------------------------------

typedef struct _W2K_NODE
    {
    struct _W2K_NODE *pwnBack;
    struct _W2K_NODE *pwnNext;
    PVOID             pThis;
    DWORD             dType;
    }
    W2K_NODE, *PW2K_NODE, **PPW2K_NODE;

#define W2K_NODE_ sizeof (W2K_NODE)

// -----------------------------------------------------------------

typedef struct _W2K_VALUE
    {
    PWORD pwValue;
    DWORD dMode;
    union
        {
        DWORD dData;
        PWORD pwData;
        PVOID pData;
        };
    }
    W2K_VALUE, *PW2K_VALUE, **PPW2K_VALUE;

#define W2K_VALUE_ sizeof (W2K_VALUE)

// -----------------------------------------------------------------

typedef struct _W2K_PATH
    {
    HKEY  hk;
    HKEY  hkBase;
    PWORD pwParts;
    PWORD pwKey;
    PWORD pwValue;
    }
    W2K_PATH, *PW2K_PATH, **PPW2K_PATH;

#define W2K_PATH_ sizeof (W2K_PATH)

// -----------------------------------------------------------------

typedef struct _W2K_SYSTEM
    {
    DWORD dMajor;
    DWORD dMinor;
    DWORD dBuild;
    DWORD dSystem;
    WORD  awName    [N_NAME];
    WORD  awVersion [N_VERSION];
    WORD  awBuild   [N_BUILD];
    WORD  awLevel   [N_LEVEL];
    }
    W2K_SYSTEM, *PW2K_SYSTEM, **PPW2K_SYSTEM;

#define W2K_SYSTEM_ sizeof (W2K_SYSTEM)

// -----------------------------------------------------------------

typedef struct _W2K_SERVICES
    {
    DWORD               dEntries;     // number of entries in aess[]
    DWORD               dBytes;       // overall number of bytes
    DWORD               dDisplayName; // maximum display name length
    DWORD               dServiceName; // maximum service name length
    ENUM_SERVICE_STATUS aess [];      // service/driver status array
    }
    W2K_SERVICES, *PW2K_SERVICES, **PPW2K_SERVICES;

#define W2K_SERVICES_ sizeof (W2K_SERVICES)

#define W2K_SERVICES__(_n) \
        (W2K_SERVICES_ + ((_n) * ENUM_SERVICE_STATUS_))

// -----------------------------------------------------------------

typedef struct _W2K_PLACEMENT
    {
    DWORD dMode;
    INT   iLeft;
    INT   iTop;
    INT   iWidth;
    INT   iHeight;
    }
    W2K_PLACEMENT, *PW2K_PLACEMENT, **PPW2K_PLACEMENT;

#define W2K_PLACEMENT_ sizeof (W2K_PLACEMENT)

// -----------------------------------------------------------------

typedef struct _W2K_SETTINGS
    {
    LOGFONT       lf;
    COLORREF      crForeground;
    COLORREF      crBackground;
    W2K_PLACEMENT wp;
    }
    W2K_SETTINGS, *PW2K_SETTINGS, **PPW2K_SETTINGS;

#define W2K_SETTINGS_ sizeof (W2K_SETTINGS)

// =================================================================
// VERSION INFO STRUCTURES
// =================================================================

#define VS_HEADER(_n)   \
struct _VS_HEADER_##_n  \
    {                   \
    WORD wLength;       \
    WORD wValueLength;  \
    WORD wType;         \
    WORD awKey [_n];    \
    }

typedef VS_HEADER ( 0) VS_HEADER,    *PVS_HEADER;
typedef VS_HEADER ( 1) VS_HEADER_01, *PVS_HEADER_01;
typedef VS_HEADER ( 9) VS_HEADER_09, *PVS_HEADER_09;
typedef VS_HEADER (13) VS_HEADER_13, *PVS_HEADER_13;
typedef VS_HEADER (15) VS_HEADER_15, *PVS_HEADER_15;
typedef VS_HEADER (17) VS_HEADER_17, *PVS_HEADER_17;

// -----------------------------------------------------------------

typedef struct _VS_STRING
    {
    VS_HEADER_01     Header;    // key and value
    WORD             awData [];
    }
    VS_STRING, *PVS_STRING, **PPVS_STRING;

#define VS_STRING_ sizeof (VS_STRING)

// -----------------------------------------------------------------

typedef struct _VS_STRINGTABLE
    {
    VS_HEADER_09     Header;    // language and code page
    VS_STRING        String;
    }
    VS_STRINGTABLE, *PVS_STRINGTABLE, **PPVS_STRINGTABLE;

#define VS_STRINGTABLE_ sizeof (VS_STRINGTABLE)

// -----------------------------------------------------------------

typedef struct _VS_STRINGFILEINFO
    {
    VS_HEADER_15     Header;    // "StringFileInfo"
    VS_STRINGTABLE   StringTable;
    }
    VS_STRINGFILEINFO, *PVS_STRINGFILEINFO, **PPVS_STRINGFILEINFO;

#define VS_STRINGFILEINFO_ sizeof (VS_STRINGFILEINFO)

// -----------------------------------------------------------------

⌨️ 快捷键说明

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