Time of Update: 2018-12-04
#include <ntddk.h>#define DEVICE_NAMEL"\\device\\NTModelDrv"#define LINK_NAMEL"\\dosDevices\\NTModelDrv"#define IOCTL_BASE 0x8000#define MY_CTL_CODE(i) \CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_BASE+i, METHOD_BUFFERED, FILE_ANY_ACCESS)#define IOCTL_
Time of Update: 2018-12-04
相信不少剛學HOOK的朋友,還在苦惱HOOK代碼寫起來麻煩,有的朋友甚至不會計算HOOK地址.Detours 解決了所有的問題了.Detours 是M$ 出的一個庫.:http://research.microsoft.com/en-us/projects/detours/ 最新版本是3.0. 下載後,需自行安裝 編譯.配置:1 將Detours安裝目錄中的src拷貝至VS安裝目錄/Microsoft Visual Studio 9.0/VC/bin2 開啟CMD控制台3 將/Microsof
Time of Update: 2018-12-04
裝置對象(DEVICE_OBJECT)-----------------主要成員一、裝置對象(DEVICE_OBJECT)kd> dt _device_objectntdll!_DEVICE_OBJECT +0x000 Type : Int2B +0x002 Size : Uint2B +0x004 ReferenceCount : Int4B +0x008 DriverObject : Ptr32
Time of Update: 2018-12-04
一、裝置對象(DEVICE_OBJECT)kd> dt _device_objectntdll!_DEVICE_OBJECT +0x000 Type : Int2B +0x002 Size : Uint2B +0x004 ReferenceCount : Int4B +0x008 DriverObject : Ptr32 _DRIVER_OBJECT ;該裝置所屬的驅動對象 +0x00c
Time of Update: 2018-12-04
DebugPrint格式說明符符號 格式說明符 類型%c, %lc ANSI字元 char%C, %wc 寬字元
Time of Update: 2018-12-04
k*命令顯示給定線程的呼叫堆疊,以及其他相關資訊~0
Time of Update: 2018-12-04
!gle 擴充顯示當前線程的最後一個錯誤碼。這個太好記了,getlasterror取首字母:0:002> !gle LastErrorValue: (Win32) 0 (0) - <Unable to get error code text> LastStatusValue: (NTSTATUS) 0 - STATUS_WAIT_0 0:002> !gleLastErrorValue: (Win32) 0 (0) - <Unable to get error
Time of Update: 2018-12-04
IntroductionOne of the most frequently done tasks in Windows Driver Model (WDM) drivers is sending input/output request packets (IRPs) from one driver to another driver. A driver either creates its own IRP and sends it to a lower driver, or the
Time of Update: 2018-12-04
下面是開發人員在使用 Windows NT 裝置驅動程式時應當避免的事項列表: 1. 一定不要在沒有標註 I/O 請求資料包 (IRP) 掛起 (IoMarkIrpPending) 的情況下通過調度常式返回 STATUS_PENDING。 2. 一定不要通過插斷服務常式 (ISR) 調用 KeSynchronizeExecution。 它會使系統死結。 3. 一定不要將 DeviceObject->Flags 設定為 DO_BUFFERED_IO 和 DO_DIRECT_IO。 它會擾亂系
Time of Update: 2018-12-04
StartIO常式------------IoStartPacket、IoStartNextPacket、IoCancelIrp實現代碼根據wdk代碼做的IoStartPacket、IoStartNextPacket、IoCancelIrp簡化版:VOID IoStartPacket( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PULONG Key OPTIONAL, IN PDRIVER_CANCEL
Time of Update: 2018-12-04
typedef struct _FILE_LIST_ENTRY {LIST_ENTRY Entry;PWSTR NameBuffer;} FILE_LIST_ENTRY, *PFILE_LIST_ENTRY; LIST_ENTRY listHead;PFILE_LIST_ENTRY
Time of Update: 2018-12-04
Short Message LPC機理分析處理序間通訊(IPC)是在多任務作業系統或連網的電腦之間啟動並執行程式和進程所用的通訊技術。有兩種類型的處理序間通訊。本地程序呼叫(LPC)和遠端程序呼叫(RPC)。出於未知的原因,微軟沒有公開 LPC 的介面。微軟為機器間的客戶機伺服器通訊提供了一套 RPC。Windows NT最佳化了RPC,將其轉為了LPC,只不過是客戶機伺服器全在同一台機器上罷了。 本文只討論Short-Message LPC通訊過程,引用一張流程圖可以全部包括,如下:
Time of Update: 2018-12-04
Windbg產生dump檔案的方法:程式崩潰(crash)的時候, 為了以後能夠調試分析問題, 可以使用WinDBG要把當時程式記憶體空間資料都儲存下來,產生的檔案稱為dump 檔案。 步驟:1) 開啟WinDBG並將之Attach 到crash的程式進程2) 輸入產生dump 檔案的命令WinDBG產生dump 檔案的命令是 .dump ,可以選擇不同的參數來產生不同類型的dump檔案。選項(1): /m命令列樣本:.dump /m C:\dumps\myapp.dmp註解:
Time of Update: 2018-12-04
http://bbs.pediy.com/showthread.php?t=167696你看看WDK src\storage\class\disk\disk.c裡的DiskDeviceControl,裡邊有磁碟裝置需要處理的所有IOCTL的過程PS:如果你測試的是XP系統,那麼不要看最新的WDK裡的DISK源碼,要看與XP匹配WDK的DISK源碼才好。代碼:__control_entrypoint(DeviceDriver)NTSTATUSDiskDeviceControl( PDEVIC
Time of Update: 2018-12-04
windbg調試命令6(!peb、!teb)PEB(Process Environment Block,進程環境塊)存放進程資訊,每個進程都有自己的PEB資訊。位於使用者地址空間。TEB(Thread Environment Block,線程環境塊)系統在此TEB中儲存頻繁使用的線程相關的資料。位於使用者地址空間,在比 PEB 所在地址低的地方。進程中的每個線程都有自己的一個TEB。調試的程式的時候,瞭解PEB和TEB往往對分析很有協助。 WinDBG中 !peb 和 !teb
Time of Update: 2018-12-04
在XP系統下調用PsSetLoadImageNotifyRoutine註冊LoadImage回調常式,就能夠在每個進程或者DLL載入的時候註冊的常式得到回調。看看PsSetLoadImageNotifyRoutine的代碼kd> u PsSetLoadImageNotifyRoutine L22nt!PsSetLoadImageNotifyRoutine:805c718c 8bff mov edi,edi805c718e 55
Time of Update: 2018-12-04
CString IOCPS::ErrorCode2Text(DWORD dw){ CString error=""; // Put your own common error text here (give more explaination etc..) switch(dw) { case WSAEFAULT: error="WSAEFAULT The buf parameter is not completely contained in
Time of Update: 2018-12-04
最進在寫服務端的代碼,裡面用到了FindWindow函數,卻找不到指定視窗,後來才知道服務中不與視窗打交道,要進行桌面視窗互動要用下面的方法來實現,記錄如下,以備後用int Find(){ HWND hWndQQ = NULL; HWINSTA hstaSave; LPCWSTR lpStation = L"WinSta0"; LPCWSTR lpDesk = L"default"; HWINSTA hstaUser; HDESK hdeskSave; HDESK
Time of Update: 2018-12-04
//全域的一個物件類型extern POBJECT_TYPE *IoDriverObjectType; 函數原型聲明NTSTATUSObReferenceObjectByName ( __in PUNICODE_STRING ObjectName, __in ULONG Attributes, __in_opt PACCESS_STATE AccessState, __in_opt ACCESS_MASK DesiredAccess, __in
Time of Update: 2018-12-04
在看了《寒江獨釣--Windows核心安全編程》一書,根據書中所講編寫#include <ntddk.h>#include <ntstrsafe.h>#define NTSTRSAFE_LIB#define CCP_MAX_COM_ID 32 //設定最大COM連接埠個數//儲存所有過濾裝置指標static PDEVICE_OBJECT s_fltobj[CCP_MAX_COM_ID]= { 0 };static PDEVICE_OBJECT s_nextobj[CCP_