您的位置:首页 > 编程语言

内核安全编程(一)读写驱动程序1.2

2013-11-16 23:53 169 查看

内核安全编程(一)读写驱动程序1.2

1.1介绍了内核驱动读写程序中驱动程序部分,接下来学习ring3是如何和ring0的这些驱动来交互的 :)
代码:
#include "iostream"
#include "windows.h"
int main()
{
HANDLE hFile=CreateFileA("\\\\.\\Driver_write0",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(INVALID_HANDLE_VALUE==hFile)
{
printf("CreateFile False:%d\n",GetLastError());
return 0;
}
DWORD dwRet=0;
int bRet=WriteFile(hFile,"I love U",8,&dwRet,NULL);
if(!bRet)
{
printf("WriteFile False:%d\n",GetLastError());
CloseHandle(hFile);
return 0;
}
//char Buffer[20];
//bRet=ReadFile(hFile,Buffer,20,&dwRet,NULL);
//if(!bRet)
//{
//	printf("ReadFile False:%d\n",GetLastError());
//	CloseHandle(hFile);
//	return 0;
//}
//printf("Read Buffer from Driver:%s",Buffer);

}
驱动程序通过CreateFile打开,这里的驱动名称要注意,应该是与创建驱动设备时调用IOCreateDrvice建立的设备名相同,只不过路径为"\\\\..\\"+驱动名。
当调用WriteFile时,会发送IRP_Write,驱动层通过Irp_AssocaitedIrp_SystemBuffer获取或者Irp_MdlAddress获取要写入的数据,然后调用RtlMemCopy将数据拷贝到前面申请的10个字节的空间中。IRP_Read一样。
分别通过写驱动和读驱动测试结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐