• 大小: 40KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: C/C++
  • 标签:

资源简介

内存读写驱动的源码 用来读写内存,读写内核内存

资源截图

代码片段和文件信息

/************************************************************************
* 文件名称: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\_objects.mac

     文件      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


评论

共有 条评论

相关资源