存档

文章标签 ‘内核’
203 views

在内核驱动中得到 KeServiceDescriptorTableShadow

2010年5月21日

头文件:

//
// svcdesctbl.h
//

#pragma once

typedef struct _KSERVICE_TABLE_DESCRIPTOR {
	PULONG_PTR Base;	// Service Table Base
	PULONG Count;		// Service Counter Table Base, Used only in checked build
	ULONG Limit;
	PUCHAR Number;
} KSERVICE_TABLE_DESCRIPTOR, *PKSERVICE_TABLE_DESCRIPTOR;

#define NUMBER_SERVICE_TABLES 2
__declspec(dllimport) KSERVICE_TABLE_DESCRIPTOR
		KeServiceDescriptorTable[NUMBER_SERVICE_TABLES];

KSERVICE_TABLE_DESCRIPTOR * Get_KeServiceDescriptorTableShadow ();

阅读全文…

内核编程 , ,

265 views

关于 IoGetDeviceObjectPointer

2010年5月19日

先看 IoGetDeviceObjectPointer() 的内部实现:

  1. 用 ZwOpenFile() 打开设备文件的 handle
  2. 用 ObReferenceObjectByHandle() 来得到 file object
  3. 用 IoGetRelatedDeviceObject() 来得到 device object
  4. 用 ZwClose() 来关闭这个 handle

WRK 1.2 源代码如下:
阅读全文…

内核编程, 技术心得 ,

942 views

创建有导出函数的内核驱动程序

2010年2月27日

testsys.def

;testsys.def : Declares the module parameters for the DLL.

; LIBRARY      "testsys"

EXPORTS
    ; Explicit exports can go here
    SDK_ExportFunction1		@1
    SDK_ExportFunction2		@2

testsys.h

#ifndef _TESTSYS_H
#define _TESTSYS_H 1

extern void NTAPI SDK_ExportFunction1(ULONG nIndex) ;
extern void NTAPI SDK_ExportFunction2();

#endif

testsys.c

#include <ntddk.h>
#include "testsys.h"

void NTAPI SDK_ExportFunction1(ULONG nIndex)
{
    return ;
}

void NTAPI SDK_ExportFunction2()
{
    return ;
}

#pragma code_seg("INIT")
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
	return STATUS_SUCCESS ;
}
#pragma code_seg()

阅读全文…

内核编程 , , ,

272 views

中文版 ASM KMD tut

2008年4月5日

网上收集的关于用汇编语言编写 Windows 环境下的 KMD 驱动程序的教程, 由俄国人编写, 由罗云彬, 松松, 董岩翻译, 感谢所有这些人的辛勤劳动, 俺将这些散落在网络上的文章收集整理出来, 我想这些教程不止对使用汇编语言的人有帮助.

教程中文版的下载地址是 这里 KmdTutCn

附录:
选择那个汇编编译器, 如何编译 16 位 dos 和 32 位汇编程序
首先进入 masm32\bin目录,在dos下键入如下命令, 将分别编译 16 位和 32 位程序

  • 如果是16位dos汇编代码
    ml /Zm /c demo.asm
    link16 demo.obj
  • 如果是32位汇编代码
    ml /c /coff /I c:\masm32\include test.asm
    link /subsystem:windows test.obj

内核编程, 日常琐碎 , , , ,