亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 360antiarp.c

?? 別人逆的居然還有字數限制
?? C
?? 第 1 頁 / 共 3 頁
字號:
				(POBJECT_TYPE)PsThreadType, KernelMode);
			


			Kapc = (PKAPC)ExAllocatePool( NonPagedPool, 0x30 );
		
			KeInitializeApc( Kapc, ethread, 0, KillThreadApcRoutine, NULL, NULL, KernelMode, NULL );
			
			KeInsertQueueApc( Kapc, Kapc, NULL, 2);
									
			ObfDereferenceObject( ethread );				
		



}
BOOLEAN
	DeviceIoControlProc (PFILE_OBJECT FileObject, UINT n, PVOID InputBuffer, UINT InputBufferLength,
		PVOID OutputBuffer, UINT OutputBufferLength, UINT IoControlCode, PIO_STATUS_BLOCK IoStatusBlock,
		PDEVICE_OBJECT DeviceObject)
{
	KIRQL OldIrql;
	ULONG ul;
	
	IoStatusBlock->Status = STATUS_SUCCESS;
	IoStatusBlock->Information = 0;
	
	switch (IoControlCode) {
	case IOCTL_DISPATCH0:	/* 0x222000 */
		{
			_ul3 = 1;
		}
		break;
		
	case IOCTL_DISPATCH1:	/* 0x222004 */
		{
			_ul3 = 0;
		}
		break;
		
	case IOCTL_DISPATCH2:	/* 0x222008 */
		{
			if (InputBufferLength != 0xC) {
				IoStatusBlock->Status = STATUS_INVALID_DEVICE_REQUEST;
			} else {
				KeAcquireSpinLock (&_SpinLock, &OldIrql);
				_ul1 = *(PULONG)((ULONG)InputBuffer+0x8);
				memcpy (_ch, InputBuffer, 4);
				KeReleaseSpinLock (&_SpinLock, OldIrql);
			}
		}
		break;
		

	case IOCTL_DISPATCH_KILL:
		{ if (InputBufferLength == 0x4)
		{   ApcKillProcess(InputBuffer);}
		}

    case IOCTL_DISPATCH_SetMac:
	{
       memcpy(MacGateWay,InputBuffer,sizeof(MacGateWay));
	}

	case IOCTL_DISPATCH3:
		{
/* [!] so ugly, right?
			if (OutputBufferLength == 0x1004)
			{
				KeAcquireSpinLock (&_SpinLock, &OldIrql);
				ul = _ul9-_ul5;
				if (ul!=0) {
					memcpy ((PVOID)(_ulA+_ul5), (OutputBuffer+4), ul);
					*(PULONG)OutputBuffer = ul;
				}
				KeReleaseSpinLock (&_SpinLock, OldIrql);
				
				IoStatusBlock->Information = ul+4;
				_ul5 = _ul9;
				break;
			}
		}
*/
			// so i modify to this format, hope you like it
			
			if (OutputBufferLength != 0x1004) {
				IoStatusBlock->Status = STATUS_INVALID_DEVICE_REQUEST;
			} else {
				KeAcquireSpinLock (&_SpinLock, &OldIrql);
				ul = _ul9-_ul5;
				if (ul!=0) {
					memcpy ((PVOID)(_ulA+_ul5), (PVOID)((ULONG)OutputBuffer+4), ul);
					*(PULONG)OutputBuffer = ul;
				}
				KeReleaseSpinLock (&_SpinLock, OldIrql);
				
				IoStatusBlock->Information = ul+4;
				_ul5 = _ul9;
			}
		}
		break;
		
	default:
		{
			IoStatusBlock->Status = STATUS_INVALID_DEVICE_REQUEST;
		}
		break;
	}
	
	return TRUE;
}

///////////////////////////////////////////////////////////////////////////////

NTSTATUS
	DispatchProc (PDEVICE_OBJECT DeviceObject, PIRP Irp)
{
	PIO_STACK_LOCATION Sp;
	
	PVOID InputBuffer, OutputBuffer;
	UINT InputBufferLength, OutputBufferLength, IoControlCode;
	
	Sp = IoGetCurrentIrpStackLocation (Irp);
	Irp->IoStatus.Status = STATUS_SUCCESS;
	Irp->IoStatus.Information = 0;
	
	if (Sp->MajorFunction == IRP_MJ_DEVICE_CONTROL) {
		InputBuffer = OutputBuffer = Irp->AssociatedIrp.SystemBuffer;
		InputBufferLength = Sp->Parameters.DeviceIoControl.InputBufferLength;
		
		IoControlCode = Sp->Parameters.DeviceIoControl.IoControlCode;
		if ((IoControlCode & METHOD_NEITHER) == METHOD_NEITHER) {
			OutputBuffer = Irp->UserBuffer;
		}
		
		OutputBufferLength = Sp->Parameters.DeviceIoControl.OutputBufferLength;
		DeviceIoControlProc (Sp->FileObject, 1, InputBuffer, InputBufferLength,
			OutputBuffer, OutputBufferLength, IoControlCode, &Irp->IoStatus, DeviceObject);
	}
	
	IoCompleteRequest (Irp, IO_NO_INCREMENT);
	return STATUS_SUCCESS;
}
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegistryString)
{
	NTSTATUS status = STATUS_SUCCESS;
	UNICODE_STRING ustrLinkName;
	UNICODE_STRING ustrDevName;    
	PDEVICE_OBJECT pDevObj;
	
if (*InitSafeBootMode > 0)
{
    //系統處于 Safe Mode.
}


	dprintf("[360AntiARP] DriverEntry: %S\n",pRegistryString->Buffer);

    // Create dispatch points for device control, create, close.
	pDriverObj->MajorFunction[IRP_MJ_CREATE] = DispatchCreate;
	pDriverObj->MajorFunction[IRP_MJ_CLOSE] = DispatchClose;
	pDriverObj->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchProc;
	pDriverObj->DriverUnload = DriverUnload;
	//

	RtlInitUnicodeString(&ustrDevName, DEVICE_NAME);
	
	status = IoCreateDevice(pDriverObj, 
				0,
				&ustrDevName, 
				FILE_DEVICE_UNKNOWN,
				0,
				FALSE,
				&pDevObj);

	dprintf("[360AntiARP] Device Name %S",ustrDevName.Buffer);

	if(!NT_SUCCESS(status))
	{
		dprintf("[360AntiARP] IoCreateDevice = 0x%x\n", status);
		return status;
	}

	
	RtlInitUnicodeString(&ustrLinkName, LINK_NAME);

	status = IoCreateSymbolicLink(&ustrLinkName, &ustrDevName);  
	if(!NT_SUCCESS(status))
	{
		dprintf("[360AntiARP] IoCreateSymbolicLink = 0x%x\n", status);
		IoDeleteDevice(pDevObj);  
		return status;
	}
	
	dprintf("[360AntiARP] SymbolicLink:%S",ustrLinkName.Buffer);

	RtlInitUnicodeString(&ustrDevName, DEVICE_NAME1002);
	
	status = IoCreateDevice(pDriverObj, 
				0,
				&ustrDevName, 
				FILE_DEVICE_UNKNOWN,
				0,
				FALSE,
				&pDevObj);

	dprintf("[360AntiARP] Device Name %S",ustrDevName.Buffer);

	if(!NT_SUCCESS(status))
	{
		dprintf("[360AntiARP] IoCreateDevice = 0x%x\n", status);
		return status;
	}

	
	RtlInitUnicodeString(&ustrLinkName, LINK_NAME1002);

	status = IoCreateSymbolicLink(&ustrLinkName, &ustrDevName);  
	if(!NT_SUCCESS(status))
	{
		dprintf("[360AntiARP] IoCreateSymbolicLink = 0x%x\n", status);
		IoDeleteDevice(pDevObj);  
		return status;
	}
	
	dprintf("[360AntiARP] SymbolicLink:%S",ustrLinkName.Buffer);

status = PsSetLoadImageNotifyRoutine(MyLoadImageNotifyProc);
HOOKIoConXXX();



	return STATUS_SUCCESS;
}


VOID DriverUnload(PDRIVER_OBJECT pDriverObj)
{	
	UNICODE_STRING strLink;
	RtlInitUnicodeString(&strLink, LINK_NAME);
	//
    // Delete the symbolic link
    //
	IoDeleteSymbolicLink(&strLink);
	//
    // Delete the device object
    //
	IoDeleteDevice(pDriverObj->DeviceObject);
	dprintf("[360AntiARP] Unloaded\n");

	//	UNICODE_STRING strLink;
	RtlInitUnicodeString(&strLink, LINK_NAME1002);
	//
    // Delete the symbolic link
    //
	IoDeleteSymbolicLink(&strLink);
	//
    // Delete the device object
    //
	IoDeleteDevice(pDriverObj->DeviceObject);
	dprintf("[360AntiARP] Unloaded\n");
}

NTSTATUS DispatchCreate(PDEVICE_OBJECT pDevObj, PIRP pIrp)
{
	pIrp->IoStatus.Status = STATUS_SUCCESS;
	pIrp->IoStatus.Information = 0;
	dprintf("[360AntiARP] IRP_MJ_CREATE\n");
	IoCompleteRequest(pIrp, IO_NO_INCREMENT);
	return STATUS_SUCCESS;
}

NTSTATUS DispatchClose(PDEVICE_OBJECT pDevObj, PIRP pIrp)
{
	pIrp->IoStatus.Status = STATUS_SUCCESS;
	pIrp->IoStatus.Information = 0;
	dprintf("[360AntiARP] IRP_MJ_CLOSE\n");
	IoCompleteRequest(pIrp, IO_NO_INCREMENT);
	return STATUS_SUCCESS;
}





VOID
DisableWriteProtect(
    VOID
    )
{
    __asm
    {
        push    eax
        mov     eax, cr0
        mov     OldCr0, eax
        and     eax, 0FFFEFFFFh
        mov     cr0, eax
        pop     eax
        cli
    }
}

__inline
VOID
EnableWriteProtect(
    VOID
    )   
{
    __asm
    {
        sti
        push    eax
        mov     eax, OldCr0
        mov     cr0, eax
        pop     eax
    }
}


BOOLEAN
	SeekTargetAPI (UCHAR * sFunc, UCHAR * sMod, PUNICODE_STRING ModPath, ULONG * arg1, ULONG * arg2)
{
	NTSTATUS status;
	PVOID BaseAddress;
	ULONG SectionBaseAddress;
	ULONG i;
	HANDLE SectionHandle;
	HANDLE Handle;
	ULONG ViewSize;
	IO_STATUS_BLOCK IoStatusBlock;
	OBJECT_ATTRIBUTES FileAttrib;
	
	ULONG p, p2, ul;
	
	InitializeObjectAttributes(&FileAttrib, ModPath, OBJ_CASE_INSENSITIVE, NULL, NULL);
	
	i = 0;
	BaseAddress = NULL;
	ViewSize = 0;
	
	status = ZwOpenFile (&Handle, FILE_EXECUTE|SYNCHRONIZE/*0x100020*/, 
					&FileAttrib, &IoStatusBlock, FILE_SHARE_READ,
					FILE_SYNCHRONOUS_IO_NONALERT /*0x20*/);
	if (NT_SUCCESS(status)) {
		
		status = ZwCreateSection (&SectionHandle, DIRECTORY_ALL_ACCESS|SECTION_EXTEND_SIZE /*0x0F001F*/, 
					&FileAttrib, NULL, PAGE_EXECUTE /*0x10*/, MEM_TOP_DOWN /*0x100000*/, Handle);
		if (NT_SUCCESS(status)) {
			status = ZwMapViewOfSection (SectionHandle, NtCurrentProcess(), &BaseAddress, 0, 0x3E8, 
						NULL, &ViewSize, 1, MEM_TOP_DOWN /*0x100000*/, PAGE_READWRITE /*0x4*/);
			
			if (NT_SUCCESS(status)) {
				ZwClose(Handle);
				
				SectionBaseAddress = *(PULONG)BaseAddress;
				p = *(PULONG)(SectionBaseAddress + *(PULONG)(SectionBaseAddress+0x3C)+0x80);
				
				if (p) {
					if (*(PULONG)(p+0x10)) {
						do {
							if (!_stricmp ((UCHAR *)(*(PULONG)(p+0xC)+SectionBaseAddress), sMod)) {
								*(((UCHAR *)&ModPath)+3) = 1;	// find flag
								break;
							}
							
							p += 0x14;
						} while (*(PULONG)(p+0x10));
					}
					
					if ( *(((UCHAR *)&ModPath)+3) == 0 ) return FALSE;	// no found, resource leak!!!
					
					p2 = *(PULONG)p + SectionBaseAddress;
					while (ul = *(PULONG)p2) {
						if (ul>=0x1000000)
							goto no_found_api;
						
						if (_stricmp ((UCHAR *)(ul + SectionBaseAddress + 2), sFunc) == 0)
							goto found_api;
						
						i++;
						p2 += 4;
					}
				}
			}
		}
	}

// for lazy, I will not write no found part clean up codes twice, but it still could run smoothly.
// of course, no test! hope so

no_found_api:
	if (BaseAddress) {
		ZwUnmapViewOfSection (NtCurrentProcess(), BaseAddress);
	}
					
	ZwClose(SectionHandle);
	return FALSE;
	
found_api:
	*arg1 = *(PULONG)(p+0x10);
	*arg2 = i;
	
	if (BaseAddress) {
		ZwUnmapViewOfSection (NtCurrentProcess(), BaseAddress);
	}
	
	ZwClose(SectionHandle);
	return TRUE;
}

///////////////////////////////////////////////////////////////////////////////
int DoCompare (ULONG u1, ULONG u2, UCHAR * buf)
{
	ULONG i = 0;
	int ret = 0;
	
	if (u2 == i) return ret;
	
	do {
		if (!memcmp ((PVOID)(u1+i), buf, 6)) {
			ret = 1;
			break;
		}
	
		i += 6;
	} while (u2);
	
	return ret;
}
///////////////////////////////////////////////////////////////////////////////
// TODO: HookProc2
// Hook: ARPRcvIndicationNew

NDIS_STATUS HookProc2				  (NDIS_HANDLE Handle,
                                       NDIS_HANDLE Context,
                                       PVOID Header,
                                       ULONG HeaderSize,
                                       PVOID Data,
                                       ULONG DataSize,
                                       ULONG TotalSize,
                                       ULONG Unknow1,
                                       ULONG Unknow2)
{
	UCHAR buffer[6];
	KIRQL OldIrql;
	
	UCHAR * p = (UCHAR *)Data;
	UCHAR * pHeader = (UCHAR *)Header;
	UCHAR * pHandle = (UCHAR *)Handle;
	
	USHORT us;
	ULONG ul;
	
	us = *(USHORT*)(pHeader+0xC);
	if (us!=0x608) {
		if (us >= 0x600) goto quit_hook2;
		if (pHandle[0x14]!=0x7) goto quit_hook2;
		if (pHeader[0x2]!=0xD5) goto quit_hook2;
	}
	
	if (DataSize < 0x1C) goto quit_hook2;
	us = *(USHORT*)p;
	if ((us != 0x100) && (us != 0x600)) goto quit_hook2;
	if (p[4]!=6 || *(USHORT*)(p+2)!=8 || p[5]!=4) goto quit_hook2;
	
	ul = *(ULONG *)(p+0xE);
	if (ul != _ul1) goto quit_hook2;
	
	p += 8;
	
	if (!memcmp (_ch, p, 6)) goto quit_hook2;
	memcpy (buffer, p, 6);
	
	if (KeGetCurrentIrql()<DISPATCH_LEVEL) {
		p = (UCHAR *)1;
		KeAcquireSpinLock (&_SpinLock, &OldIrql);
	} else {
		p = NULL;
	}
	
	if (memcmp ((PVOID)_ulC, buffer, 6) != 0) {
		if (!DoCompare (_ulA, _ul9, &buffer[0])) {
			if ((_ul9+6) > 0x1000) {
				_ul9 = 0;
			}
			
			memcpy (buffer, (PVOID)(_ul9+_ulA), 6);
			_ul9 += 6;
			memcpy (buffer, (PVOID)_ulC, 6);
		}
	}
	
	if (p==(UCHAR *)1)
		KeReleaseSpinLock (&_SpinLock, OldIrql);
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲乱码国产乱码精品精可以看 | 国产精品一二三四区| 视频一区视频二区中文| 美女看a上一区| 国产成人自拍网| 波多野结衣精品在线| 婷婷久久综合九色综合绿巨人 | 国产麻豆精品视频| 99视频一区二区| 欧美三级蜜桃2在线观看| 精品国产乱码久久久久久夜甘婷婷 | 国内精品免费在线观看| 97se亚洲国产综合自在线观| 欧美精品在线观看播放| 精品裸体舞一区二区三区| 亚洲国产精品v| 亚洲成人综合在线| 免费成人在线影院| 欧美日韩三级视频| 国产精品欧美久久久久无广告| 一区二区三区欧美视频| 极品美女销魂一区二区三区免费 | 678五月天丁香亚洲综合网| 精品电影一区二区三区| 亚洲黄色尤物视频| 激情av综合网| 7777女厕盗摄久久久| 国产精品久久久99| 奇米精品一区二区三区在线观看一 | 成人免费黄色大片| 日韩一区二区免费电影| 亚洲精品国产一区二区精华液 | 精品国产露脸精彩对白| 亚洲少妇30p| 99久久综合色| 久久久久国产精品厨房| 日韩高清在线一区| 99久久er热在这里只有精品66| 91精品国产免费久久综合| 欧美日韩国产乱码电影| 日本一区二区高清| 亚洲精品一二三区| 日本欧美肥老太交大片| 精品一区二区三区在线播放视频| 成人av网站在线观看| 久久久99久久| 久久99国产精品麻豆| 色综合久久天天| 中文子幕无线码一区tr| 国产一区二区三区在线观看免费| 91麻豆精品国产91久久久资源速度| 亚洲男人的天堂在线观看| 成人网在线免费视频| 久久久久久**毛片大全| 国产欧美日韩另类一区| caoporm超碰国产精品| 综合激情网...| 国产成人av一区| 日韩一级免费观看| 午夜欧美视频在线观看| 欧美日韩在线不卡| 精品久久久久久久久久久久久久久久久 | 亚洲成av人片一区二区梦乃| 成人国产电影网| 国产三级欧美三级日产三级99 | 国产视频亚洲色图| 豆国产96在线|亚洲| 国产欧美一区二区精品久导航| 国产一区在线看| 粉嫩嫩av羞羞动漫久久久| 一区二区三区不卡在线观看 | 国产福利精品一区| 久久九九久精品国产免费直播| 韩国三级在线一区| 欧美精品一区二区三区蜜桃| 免费在线观看一区| 精品免费一区二区三区| 国产九色sp调教91| 久久精品夜夜夜夜久久| 丝袜亚洲另类丝袜在线| 日韩精品一区二区三区中文不卡 | 91久久人澡人人添人人爽欧美| 一个色在线综合| 欧美一区三区二区| 国产一区二区看久久| 欧美日韩国产片| 亚洲欧洲av在线| 欧美日韩高清在线播放| 精品一区二区精品| 欧美在线观看视频在线| 亚洲午夜精品网| 欧美精品一区二区精品网| 成人午夜av影视| 一区二区三区四区视频精品免费 | 99精品偷自拍| 亚洲成a人在线观看| 日韩欧美国产综合| eeuss鲁一区二区三区| 天使萌一区二区三区免费观看| 国产亚洲精品福利| 高清成人在线观看| 久久精品72免费观看| 中文字幕在线视频一区| 9191久久久久久久久久久| 国产成人综合网| 偷拍一区二区三区四区| 国产人伦精品一区二区| 91麻豆国产香蕉久久精品| 麻豆91免费看| 亚洲免费看黄网站| 精品成人一区二区三区| 欧美影院一区二区三区| 丁香六月综合激情| 九九精品一区二区| 久久久久久久久久看片| 成人a免费在线看| 美女视频黄 久久| 亚洲第一综合色| 综合分类小说区另类春色亚洲小说欧美 | 成人美女在线视频| 经典三级一区二区| 日本午夜一区二区| 国产日韩欧美精品综合| 国产精品卡一卡二卡三| 久久亚洲综合色| 4438x成人网最大色成网站| 欧洲精品中文字幕| 99国产精品久久久| 成人免费高清在线| 国产99精品视频| 亚洲午夜免费电影| 麻豆一区二区三| 日韩成人av影视| 午夜天堂影视香蕉久久| 亚洲国产日韩精品| 亚洲国产欧美日韩另类综合| 中文字幕欧美一| 精品国产亚洲一区二区三区在线观看| 日韩一区二区在线观看视频| 欧美人狂配大交3d怪物一区| 欧美性大战久久久久久久蜜臀| 91麻豆成人久久精品二区三区| 成人国产精品免费| www.视频一区| 日本丶国产丶欧美色综合| 成人sese在线| 成人午夜精品一区二区三区| 麻豆精品一区二区三区| 亚洲超碰精品一区二区| 欧美韩国日本不卡| 亚洲天堂成人在线观看| 欧美午夜电影一区| 日韩午夜在线观看| 欧美aaaaa成人免费观看视频| 久久超碰97人人做人人爱| 夜夜精品视频一区二区| 亚洲男人电影天堂| 亚洲青青青在线视频| 视频一区二区不卡| 国产原创一区二区| 91老师片黄在线观看| 欧美精品tushy高清| 色综合视频一区二区三区高清| 色美美综合视频| 成人丝袜高跟foot| 欧美一区二区在线免费观看| 欧美va亚洲va在线观看蝴蝶网| 国产亚洲一区二区三区| 精品免费国产二区三区| 另类人妖一区二区av| 在线观看91精品国产麻豆| 亚洲va欧美va人人爽午夜| 欧美综合在线视频| 一区二区免费在线| 精品免费视频一区二区| 国产一区二区三区av电影| 中文字幕电影一区| 欧美色男人天堂| 国产一区二区三区免费播放| 国产精品久久久久久久久免费桃花 | 欧美午夜精品一区二区蜜桃| 亚洲人成影院在线观看| 91天堂素人约啪| 日韩精品视频网| 久久精品日韩一区二区三区| 99热在这里有精品免费| 青青草国产成人av片免费| 久久看人人爽人人| 欧美日韩一区视频| 成人精品国产免费网站| 亚洲一区二区三区四区中文字幕| 日韩欧美国产高清| 色88888久久久久久影院按摩| 人人超碰91尤物精品国产| 亚洲国产精品精华液2区45| 色妞www精品视频| 国v精品久久久网| 日韩不卡一区二区| 亚洲国产精品av| 日韩亚洲欧美高清|