资源简介
内存读写驱动的源码
用来读写内存,读写内核内存
代码片段和文件信息
/************************************************************************
* 文件名称:Driver.cpp
* 作 者:张帆
* 完成日期:2007-11-1
*************************************************************************/
#include “Driver.h“
#include “stdio.h“
#include “stdarg.h“
static ULONG address;
int counts=0;
int CopyNewCodeToGapSetJmp(char* SectionGapStartchar* newFunctionBufferULONG lengthint op_interruptint pfnOldFuntionPointerint dwFirstForJmp);
/************************************************************************
* 函数名称:DriverEntry
* 功能描述:初始化驱动程序,定位和申请硬件资源,创建内核对象
* 参数列表:
pDriverobject:从I/O管理器中传进来的驱动对象
pRegistryPath:驱动程序在注册表的中的路径
* 返回 值:返回初始化驱动状态
*************************************************************************/
char outputa[100];
#pragma PAGEDCODE
void debugprint(const char*format...)
{
va_list va;
va_start(vaformat);
vsprintf(outputaformatva);
va_end(va);
strcat(outputa“\n“);
DbgPrint(outputa);
}
/************************************************************************
* 函数名称:CreateDevice
* 功能描述:初始化设备对象
* 参数列表:
pDriverobject:从I/O管理器中传进来的驱动对象
* 返回 值:返回初始化状态
*************************************************************************/
/************************************************************************
* 函数名称:VMRWUnload
* 功能描述:负责驱动程序的卸载操作
* 参数列表:
pDriverobject:驱动对象
* 返回 值:返回状态
*************************************************************************/
VOID VMUnload (IN PDRIVER_object pDriverobject)
{
PDEVICE_object pNextObj;
KdPrint((“Enter DriverUnload\n“));
pNextObj = pDriverobject->Deviceobject;
while (pNextObj != NULL)
{
PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)
pNextObj->DeviceExtension;
//删除符号链接
UNICODE_STRING plinkName = pDevExt->ustrSymlinkName;
IoDeleteSymboliclink(&plinkName);
pNextObj = pNextObj->NextDevice;
IoDeleteDevice( pDevExt->pDevice );
}
}
/************************************************************************
* 函数名称:VMDispatchRoutine
* 功能描述:对读IRP进行处理
* 参数列表:
pDevObj:功能设备对象
pIrp:从IO请求包
* 返回 值:返回状态
*************************************************************************/
NTSTATUS vmread(
IN PDEVICE_object Deviceobject
IN PIRP pIrp
)
{
PIO_STACK_LOCATION irpStack;
NTSTATUS status;
PULONG inputBuffer;
ULONG inputLength;
PULONG outputBuffer;
ULONG outputLength;
status = STATUS_SUCCESS;
// 取出IOCTL请求代码
irpStack = IoGetCurrentIrpStackLocation(pIrp);
int sizeBytesToRead =irpStack->Parameters.Read.Length;
counts++;
if(0==(counts%5)){
RtlCopyMemory(pIrp->AssociatedIrp.SystemBuffer(void*)addresssizeBytesToRead );
counts = 0;
address=0;
}else{
address |= sizeBytesToRead<<((counts-1)*8);
debugprint(“address=%x“address);
sizeBytesToRead=0;
}
pIrp->IoStatus.Status = status;
pIrp->IoStatus.Information = sizeBytesToRead ;
IoCo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1041 2007-11-06 14:50 vmrw\Driver.h
文件 8737 2011-02-26 14:27 vmrw\Driver.cpp
文件 137 2007-11-08 17:00 vmrw\Sources
文件 265 2006-07-07 10:08 vmrw\makefile
....... 226 2011-02-24 23:56 vmrw\obj\_ob
文件 49981 2009-02-27 02:46 vmrw\objchk\i386\driver.obj
文件 68608 2011-02-26 12:11 vmrw\objchk\i386\HelloDDK.pdb
文件 3328 2011-02-24 23:59 vmrw\objchk\i386\rw.sys
文件 3584 2011-02-26 12:11 vmrw\objchk\i386\HelloDDK.sys
文件 8733 2011-02-26 12:11 vmrw\Driver.cpp.bak
..AD... 0 2011-02-24 23:56 vmrw\obj\i386
..AD... 0 2011-02-24 23:56 vmrw\objchk\i386
..AD... 0 2011-02-24 23:56 vmrw\obj
目录 0 2011-02-24 23:56 vmrw\objchk
目录 0 2011-02-18 22:04 vmrw
----------- --------- ---------- ----- ----
144640 15
- 上一篇:c语言源代码,文本编辑器
- 下一篇:纯C语言解析xm
l字符串
评论
共有 条评论