注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

内核中设置程序自启动  

2012-03-12 19:21:27|  分类: window驱动学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
#include <ntddk.h>


#define AutoRunKeyName L"\\Registry\\Machine\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"


VOID DriverUnload(IN PDRIVER_OBJECT pDriverObject)
{

UNICODE_STRING symLinkName;
PDEVICE_OBJECT pDevObj;

pDevObj = pDriverObject->DeviceObject;
IoDeleteDevice(pDevObj);

RtlInitUnicodeString(&symLinkName,L"\\??\\HelloDDK");

IoDeleteSymbolicLink(&symLinkName);
DbgPrint("DriverUnload Successfully...\n");
}

NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj,IN PIRP pIrp)
{
pIrp->IoStatus.Status = STATUS_SUCCESS;
pIrp->IoStatus.Information = 0;

IoCompleteRequest(pIrp,IO_NO_INCREMENT);

DbgPrint("HelloDDKDispatchRoutine...\n");
return STATUS_SUCCESS;
}


VOID SetAutoRunReg()
{
UNICODE_STRING RegUnicodeString;
HANDLE hRegister;
OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS ntStatus;
UNICODE_STRING ValueName;
WCHAR* strValue = L"C:\\1.exe";

/*初始化UNICODE_STRING字符串*/
RtlInitUnicodeString(&RegUnicodeString,AutoRunKeyName);

InitializeObjectAttributes(&ObjectAttributes,&RegUnicodeString,OBJ_CASE_INSENSITIVE,NULL,NULL);

/*打开注册表*/
ntStatus = ZwOpenKey(&hRegister,
KEY_ALL_ACCESS,
&ObjectAttributes);

if (!NT_SUCCESS(ntStatus))
{
DbgPrint("Open RegKey Failed...\n");
return;
}
else
{
DbgPrint("Open RegKey Successfully...\n");
}

//初始化ValueName
RtlInitUnicodeString(&ValueName,L"MMAutoRun");

//设置REG_SZ子键
ntStatus = ZwSetValueKey(hRegister,
&ValueName,
0,
REG_SZ,
strValue,
wcslen(strValue)*2 + 2);

if (!NT_SUCCESS(ntStatus))
{
DbgPrint("Set AutoRegKey Failed...\n");
return ;
}
else
{
DbgPrint("Set AutoRegKey Successfully...\n");
}

ZwClose(hRegister);
}

NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,IN PUNICODE_STRING pRegistryPath)
{

NTSTATUS ntStatus;
PDEVICE_OBJECT pDevObj;
/*创建设备名称*/
UNICODE_STRING devName;
UNICODE_STRING symLinkName;
RtlInitUnicodeString(&devName,L"\\Device\\MyDDKDevice");

/*创建设备*/
ntStatus = IoCreateDevice(pDriverObject,
NULL,
&devName,
FILE_DEVICE_UNKNOWN,
0,
TRUE,
&pDevObj);


if (!NT_SUCCESS(ntStatus))
{
DbgPrint("Create Device Failed...\n");
return ntStatus;
}
else
{
DbgPrint("Create Device SuccessFully...\n");
}

pDevObj->Flags |= DO_BUFFERED_IO;

RtlInitUnicodeString(&symLinkName,L"\\??\\HelloDDK");
ntStatus = IoCreateSymbolicLink(&symLinkName,&devName);

if (!NT_SUCCESS(ntStatus))
{
DbgPrint("Create SymbolicLink Failed...\n");
IoDeleteDevice(pDevObj);
return ntStatus;
}
else
{
DbgPrint("Create SymbolicLink Successfully...\n");
}

pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloDDKDispatchRoutine;
pDriverObject->MajorFunction[IRP_MJ_CLOSE] = HelloDDKDispatchRoutine;
pDriverObject->MajorFunction[IRP_MJ_WRITE] = HelloDDKDispatchRoutine;
pDriverObject->MajorFunction[IRP_MJ_READ] = HelloDDKDispatchRoutine;

pDriverObject->DriverUnload = DriverUnload;

SetAutoRunReg();

return STATUS_SUCCESS;
}


  评论这张
 
阅读(64)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017