首页
社区
课程
招聘
[讨论]若是我用驱动改注册表之类的怎么与应用程序交换?
发表于: 2009-12-4 07:55 3443

[讨论]若是我用驱动改注册表之类的怎么与应用程序交换?

2009-12-4 07:55
3443
不知何时我这里的ifmo键不能新建值[可以建项][[[不知是eset还是360,或者是别的原因导致的,因为我没去把这些开机不启动]]]],我用驱动写个注册表看了下,竞然可以写入进去,,若是用应用程序来控制,我只想出用createfile 或者读设备这个来控制,然后在他产生的irp的涵数里写入驱动代码。

#include <ntddk.h>

#define imforeg L"\\Registry\\Machine\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options"
//  Registry\Machine 
VOID SetReg();
VOID MyUnload(PDRIVER_OBJECT mydriver);

NTSTATUS DriverEntry(IN PDRIVER_OBJECT mydriver,IN PUNICODE_STRING mrregpath)
{

    mydriver->DriverUnload=MyUnload;
	SetReg();
	return STATUS_SUCCESS;

}


VOID SetReg()
{
	OBJECT_ATTRIBUTES objectattributes,subobjectattributes;
	UNICODE_STRING imfo,valuename;
	HANDLE hreg,subhreg;
	NTSTATUS status;
	ULONG rretrun;
	PWSTR pointstr;
	RtlInitUnicodeString(&imfo,imforeg);
	InitializeObjectAttributes(&objectattributes,&imfo,OBJ_CASE_INSENSITIVE,NULL,NULL);
	status=ZwOpenKey(&hreg,KEY_ALL_ACCESS,&objectattributes);
	if (NT_SUCCESS(status))
	{
		KdPrint(("Open Success\n"));
	}
	RtlInitUnicodeString(&imfo,L"cmd.exe");
	InitializeObjectAttributes(&subobjectattributes,&imfo,OBJ_CASE_INSENSITIVE,hreg,NULL);
	status=ZwCreateKey(&subhreg,KEY_ALL_ACCESS,&subobjectattributes,0,
		                                      NULL,REG_OPTION_NON_VOLATILE,&rretrun);
	if (NT_SUCCESS(status))
	{
		if(rretrun==REG_CREATED_NEW_KEY)
		{
			KdPrint(("create\n"));
		}else if(rretrun==REG_OPENED_EXISTING_KEY)
		{
			KdPrint(("Open\n"));
		}
	}
	RtlInitUnicodeString(&valuename,L"Debugger");
	pointstr=L"c:\\a.exe";
	ZwSetValueKey(subhreg,&valuename,0,REG_SZ,pointstr,wcslen(pointstr)*2+2);
	ZwClose(subhreg);
	ZwClose(hreg);
    
}


VOID MyUnload(PDRIVER_OBJECT mydriver)
{
	KdPrint(("Close\n"));
}


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//