Windows內核對象、用戶對象、GDI對象
內核對象
介紹
內核對象是系統(tǒng)地址空間中的一個內存塊,由系統(tǒng)創(chuàng)建并維護。內核對象為內核所擁有,而不為進程所擁有,所以不同進程可以訪問同一個內核對象。
內核對象的創(chuàng)建函數(shù)匯總必須有安全描述符(PSECURITY_ATTRIBUTES),安全描述符描述了誰創(chuàng)建該內核對象,誰能夠訪問,誰無權訪問等信息。
結構
對象頭,對象體(OBJECT_HEADER+OBJECT)。所有類型的對象頭結構都是相同的,而結構體部分卻各不相同的。
指向對象的指針指向對象體OBJECT部分,若要訪問OBJECT_HEADER,需要減去0X18、
OBJECT_HEADER的結構如下:
typedef struct _OBJECT_HEADER
{
DWORD PointerCount; // 指針引用的數(shù)目
DWORD HandleCount; // 打開句柄的數(shù)目
POBJECT_TYPE ObjectType; //指向類型對象的指針
BYTE NameOffset; //對象名的偏移
BYTE HandleDBOffset; // HANDLE DB的偏移
BYTE QuotaChargesOffset; //QUOTA CHARGES的偏移
BYTE ObjectFlags; // 對象標志
union
{ // 對象標志中OB_FLAG_CREATE_INFO ? ObjectCreateInfo : QuotaBlock
PQUOTA_BLOCK QuotaBlock;
POBJECT_CREATE_INFO ObjectCreateInfo;
};
PSECURITY_DESCRIPTOR SecurityDescriptor;
}OBJECT_HEADER, *POBJECT_HEADER;
| 核心對象 | 產生方法 |
|---|---|
| 事件對象 | HANDLE CreateEvent(); |
| 文件對象 | HANDLE CreateFile(); |
| 文件映射對象 | HANDLE CreateFileMapping(); |
| I/O完成對象 | HANDLE CreateloCompletionPort(); |
| 作業(yè)對象 | HANDLE CreateJobObject(); |
| 信箱對象 | HANDLE CreateMailslot(); |
| 互斥對象 | HANDLE CreateMutex(); |
| 管道對象 | BOOL CreatePipe(); |
| 進程對象 | BOOL CreateProcess(); |
| 信號量對象 | HANDLE Create Semaphore(); |
| 線程對象 | HANDLE CreateThread(); |
| 等待及時將其對象 | HANDLE CreateWaitableTimer(); |
用戶對象
用戶創(chuàng)建的對象,用戶具有使用權。
| 用戶對象 | 產生方法 | 銷毀方法 |
|---|---|---|
| 快捷鍵(HACCEL) | CreateAcceleratorTable | DestroyAcceleratorTable |
| 插入標記(Caret) | CreateCaret | DestoryCaret |
| 光標(HCURSOR) | CreateCursor,LoadCursor,LoadImage | DestroyCursor |
| 鉤子(HHOOK) | SetWindowsHookEx | UnhookWIndowsHookEx |
| 圖標(HICON) | CreateIconIndirect,LoadIcon,LoadImage | DestroyIcon |
| 菜單(HMENU) | CreateMenu,CreatePopupMenu,<br />LoadMenu,LoadMenuIndirect | DeleteMenu |
| 窗體(HWND) | CreateWindow,CreateWindowEx,<br />CreateDialogParam,CreateMDIWindow | DestroyWindow |
| 延期窗口位置結構句柄(HDWP) | BeginDeferWindowPos | EndDeferWindowPos |
GDI對象
圖形對象,用戶創(chuàng)建,用戶具有使用權。
| GDI對象 | 產生方法 | 銷毀方法 |
|---|---|---|
| 位圖(HBITMAP) | CreateBitmap,CreateBitmapIndirect,<br />CreateCompatibleBitmap,CreateDIBitmap,<br />CreateDIBSection,CreateDiscardableBitmap | DeleteObject |
| 畫刷(HBRUSH) | CreateBrushIndirect,CreateDIBPatternBrush,<br />CreateDIBPatternBrushPt,CreateHatchBrush,<br />CreatePatternBrush,CreateSolidBrush | DeleteObject |
| 設備上下文(HDC) | CreateDC | DeleteDC,ReleaseDC |
| 字體(HFONT) | CreateFont,CreateFontIndirect | DeleteObject |
| 內存DC(HDC) | CreateCompatibleDC | DeleteDC |
| 調色板(HPALETTE) | CreatePalette | DeleteObject |
| 畫筆(HPEN) | CreatePen,CreatePenIndirect | DeleteObject |
| 區(qū)域(HRGN) | CombineRgn,CreateEllipticRgn,<br />CreateEllipticRgnIndirect,CreatePolygonRgn,<br />CreatePolyPolygonRgn,CreateRectRgn,<br />CreateRectRgnIndirect,CreateRoundRectRgn | DeleteObject |