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

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

?? strace.cpp

?? Strace: Webcrazy原來寫的很好的代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

		InterlockedIncrement(&StraceBufCount1);
		ExReleaseFastMutex(&StraceBuf1Mutex);
	}
	else{
		ExAcquireFastMutex(&StraceBuf2Mutex);
		StraceBuf2[StraceBufCount2].CallNumber = (WORD)CallNumber;
		KeQuerySystemTime(&(StraceBuf2[StraceBufCount2].Time));
		StraceBuf2[StraceBufCount2].ProcessId = (WORD)ProcessId;
		StraceBuf2[StraceBufCount2].ThreadId = (WORD)ThreadId;
                StraceBuf2[StraceBufCount2].ParameterTable = ParameterTable;
                GetProcessName(StraceBuf2[StraceBufCount2].ProcessName);

                if(CallNumber<SERVICEIDUSERFROM)
	  	   StraceBuf2[StraceBufCount2].ParameterNumbers=(*(char *)((int)keSDTParameter+CallNumber))/4;
                else 
		   StraceBuf2[StraceBufCount2].ParameterNumbers=(*(char *)((int)w32SDTParameter+CallNumber-SERVICEIDUSERFROM))/4;

                for(CallNumber=0;CallNumber<StraceBuf2[StraceBufCount2].ParameterNumbers;CallNumber++)
                   StraceBuf2[StraceBufCount2].Parameter[CallNumber]=*(DWORD *)(ParameterTable+CallNumber*sizeof(DWORD));

		InterlockedIncrement(&StraceBufCount2);
		ExReleaseFastMutex(&StraceBuf2Mutex);
	}

        KeLowerIrql(OldIrql);

}

void __declspec(naked) StraceMySystemService()
{
	__asm{
		pushad
		pushfd
		push fs
		mov bx,0x30
		mov fs,bx
		push ds
		push es

		sti
		call StraceInterceptSystemCall;
		cli

		pop es
		pop ds
		pop fs
		popfd
		popad

		jmp	OldSystemServiceISR;
	}
}


BOOL
StraceSetSystemServiceHook(BOOL bHook)
{
    PNT_IDT pidtBase = NULL;

    for ( char cpu=0; cpu<*KeNumberProcessors; ++cpu )
    {

       PKTHREAD pThread = KeGetCurrentThread();
       KeSetAffinityThread( pThread, 1<<cpu );

       pidtBase = GetIDTBase();

       if ( bHook )
           pidtBase[NT_SYSTEM_SERVICE_IDT].Hook( StraceMySystemService, &OldSystemServiceISR);
       else
           pidtBase[NT_SYSTEM_SERVICE_IDT].Hook( OldSystemServiceISR );   

    }

    PKTHREAD pThread = KeGetCurrentThread();
    KeSetAffinityThread( pThread, (1<<*KeNumberProcessors)-1 );

    return TRUE;
}

NTSTATUS StraceProcessDeviceControl(IN PVOID InputBuffer, IN ULONG InputBufferLength, 
                OUT PVOID OutbufBuffer, IN ULONG OutputBufferLength, IN ULONG IoControlCode, ULONG* pStatusInfo)
{
	*pStatusInfo = 0;
	BOOL bSuccess = FALSE;

	switch(IoControlCode)
	{

	case IOCTL_STRACE_GETNTSDT:
		PVOID keSDT;
                PVOID w32SDT;
		DWORD keSDTCount;
                DWORD w32SDTCount;
		LONG keSDTParameterBase;
		LONG w32SDTParameterBase;

		__try{
			__asm{
				 mov eax,0xFFDFF124
				 mov eax, [eax]
				 mov ebx, [eax+0xDC]
				 mov ecx,[ebx+0x08]
				 mov edx,[ebx]
                                 mov eax,[ebx+0x0c]
				 mov keSDT,edx
				 mov keSDTCount,ecx
                                 mov keSDTParameterBase,eax
                                 mov ecx,[ebx+0x18]
                                 mov edx,[ebx+0x10]
                                 mov eax,[ebx+0x1c]
                                 mov w32SDT,edx
                                 mov w32SDTCount,ecx
                                 mov w32SDTParameterBase,eax
			}
		        keSDTParameter = (char* ) ExAllocatePool( NonPagedPool, keSDTCount);
                        memcpy(keSDTParameter,(void *)keSDTParameterBase,keSDTCount);
		        w32SDTParameter = (char* ) ExAllocatePool( NonPagedPool, w32SDTCount);
                        memcpy(w32SDTParameter,(void *)w32SDTParameterBase,w32SDTCount);

			NTSDT * nt_sdt = (NTSDT * )OutbufBuffer;

			if( OutputBufferLength < sizeof(NTSDT)||keSDTCount>keSDTMaxCount||w32SDTCount>w32SDTMaxCount)
			{
				return STATUS_BUFFER_TOO_SMALL;
			}
			nt_sdt->keSDTCount = (WORD)keSDTCount;
			nt_sdt->w32SDTCount = (WORD)w32SDTCount;
			memcpy(nt_sdt->keSDTAddress,keSDT,keSDTCount*sizeof(DWORD));
			memcpy(nt_sdt->w32SDTAddress,w32SDT,w32SDTCount*sizeof(DWORD));
			*pStatusInfo = sizeof(NTSDT);
		}
		__except(1)
		{
			return STATUS_ACCESS_VIOLATION;
		}

		return STATUS_SUCCESS;

	case IOCTL_STRACE_GETBUF:
		STRACE_BUF_FIELD * StraceCurrentBuf;
		LONG StraceBufCount;
		STRACE_RESULT* strace_result;

		if(StraceBufCount1 == StraceBufMaxCount1)
		{
			StraceCurrentBuf = StraceBuf1;
			StraceBufCount  = StraceBufCount1;
		}
		else if(StraceBufCount2 == StraceBufMaxCount2){
			StraceCurrentBuf = StraceBuf2;
			StraceBufCount  = StraceBufCount2;
		}
		else{
			if(StraceCurrentBufId == STRACE_FIRST_BUF)
			{
				StraceCurrentBuf = StraceBuf1;
				StraceBufCount  = StraceBufCount1;
			}
			else{
				StraceCurrentBuf = StraceBuf2;
				StraceBufCount  = StraceBufCount2;
			}
		}


		if( OutputBufferLength < (StraceBufCount * sizeof(STRACE_BUF_FIELD) + sizeof(WORD)) )
		{
                      #ifdef DBG
			DbgPrint("STATUS_BUFFER_TOO_SMALL:%ld<%ld",OutputBufferLength,(StraceBufCount * sizeof(STRACE_BUF_FIELD) + sizeof(WORD)));
                        _asm int 3;
                      #endif
			return STATUS_BUFFER_TOO_SMALL;
		}

		strace_result = (STRACE_RESULT*)OutbufBuffer;
		strace_result->EntriesCount = (WORD)StraceBufCount;

		memset(strace_result->trace,0,StraceBufCount * sizeof(STRACE_BUF_FIELD));

		if(StraceCurrentBuf == StraceBuf1){
			ExAcquireFastMutex(&StraceBuf1Mutex);
			memcpy(strace_result->trace,StraceCurrentBuf,StraceBufCount * sizeof(STRACE_BUF_FIELD));
			*pStatusInfo = (StraceBufCount * sizeof(STRACE_BUF_FIELD)) + sizeof(WORD);
			ExReleaseFastMutex(&StraceBuf1Mutex);
		}
		else{
			ExAcquireFastMutex(&StraceBuf2Mutex);
			memcpy(strace_result->trace,StraceCurrentBuf,StraceBufCount * sizeof(STRACE_BUF_FIELD));
			*pStatusInfo = (StraceBufCount * sizeof(STRACE_BUF_FIELD))+sizeof(WORD);
			ExReleaseFastMutex(&StraceBuf2Mutex);
		}

		ExAcquireFastMutex(&StraceCountMutex);
		if(StraceCurrentBuf == StraceBuf1){
			StraceBufCount1 =0;
		}
		else{
			StraceBufCount2 =0;
		}
		ExReleaseFastMutex(&StraceCountMutex);

		return STATUS_SUCCESS;

	case IOCTL_STRACE_WAITFOR_TRACEOVERFLOW:
		NTSTATUS WaitStatus;
		LARGE_INTEGER  Timeout;
		DWORD Timeout_msec;

		Timeout_msec = *(DWORD*)InputBuffer;
		Timeout.QuadPart = Int32x32To64(1,-10000L*Timeout_msec);

		WaitStatus = KeWaitForSingleObject(
				&StraceBufOverflowEvent,
				UserRequest,
				KernelMode,
				TRUE,
				&Timeout);
		KeResetEvent(&StraceBufOverflowEvent);
		return WaitStatus;

        case IOCTL_STRACE_STOPSPY:
                SpyOn=FALSE;
                return STATUS_SUCCESS;

        case IOCTL_STRACE_STARTSPY:
                strace_filter =(STRACE_FILTER *)&filter;
                memcpy(strace_filter,InputBuffer,sizeof(filter));
                StracePID=strace_filter->StracePID;
                SpyOn=TRUE;
                //Clear log
		ExAcquireFastMutex(&StraceCountMutex);
		StraceBufCount1 =0;
		StraceBufCount2 =0;
		StraceCurrentBufId = STRACE_FIRST_BUF;
		ExReleaseFastMutex(&StraceCountMutex);

                return STATUS_SUCCESS;
                
	case IOCTL_STRACE_SETPROCESSFILER:

		PROCESS_FILTER* pfilter;
		pfilter = (PROCESS_FILTER* )InputBuffer;

		ExAcquireFastMutex(&StraceFilterMutex);

		if(ProcessFilterIdArray){
			ExFreePool(ProcessFilterIdArray);
		}
	
		ProcessFilterIdArray = (WORD* ) ExAllocatePool( NonPagedPool, (pfilter->EntriesCount +1)* sizeof(WORD) );
		ProcessFilterEntriesCount = pfilter->EntriesCount;

		memcpy(ProcessFilterIdArray ,pfilter->ProcessIdArray,ProcessFilterEntriesCount * sizeof(WORD));

		ExReleaseFastMutex(&StraceFilterMutex);

		return STATUS_SUCCESS;

	case IOCTL_STRACE_CLEARBUF:

		ExAcquireFastMutex(&StraceCountMutex);
		StraceBufCount1 =0;
		StraceBufCount2 =0;
		StraceCurrentBufId = STRACE_FIRST_BUF;
		ExReleaseFastMutex(&StraceCountMutex);
		return STATUS_SUCCESS;

	}
	return STATUS_INVALID_PARAMETER;
}


  ULONG GetProcessNameOffset()
  {
        PEPROCESS curproc;
        int i;
        
        curproc = PsGetCurrentProcess();

        //
        // Scan for 12KB, hopping the KPEB never grows that big!
        //
        for( i = 0; i < 3*PAGE_SIZE; i++ ) {

            if( !strncmp( SYSNAME, (PCHAR) curproc + i, strlen(SYSNAME) )) {

                return i;
            }
        }

        //
        // Name not found - oh, well
        //
        return 0;
    }

  void GetProcessName( PCHAR Name )
    {

        PEPROCESS curproc;
        char *nameptr;
        ULONG i;

        if( ProcessNameOffset ) {

            curproc = PsGetCurrentProcess();
            nameptr = (PCHAR) curproc + ProcessNameOffset;
            strncpy( Name, nameptr, 16 );

        } else {

            strcpy( Name, "???");
        }
    } 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜在线电影亚洲一区| 国产一区二区精品在线观看| 97精品电影院| 亚洲不卡在线观看| 亚洲精品乱码久久久久久久久| 国产视频一区在线观看 | 麻豆成人在线观看| 一区二区欧美国产| 亚洲自拍偷拍九九九| 亚洲素人一区二区| 亚洲视频一区二区在线观看| 亚洲欧美一区二区三区孕妇| 欧美激情在线一区二区三区| 亚洲自拍偷拍麻豆| 五月天丁香久久| 亚洲va欧美va天堂v国产综合| 亚洲第一福利视频在线| 一区二区不卡在线播放 | 欧美色爱综合网| 91久久线看在观草草青青| av一二三不卡影片| 成人免费va视频| 99久久久免费精品国产一区二区| 色综合天天综合网国产成人综合天| 欧美在线|欧美| 欧美不卡123| 国产午夜精品一区二区三区视频| 久久亚洲春色中文字幕久久久| 亚洲国产日韩综合久久精品| 一区二区三区国产精品| 久久电影网站中文字幕| 在线观看91视频| 7878成人国产在线观看| 久久婷婷一区二区三区| 亚洲精品中文字幕在线观看| 狠狠色综合色综合网络| 国产乱淫av一区二区三区| 寂寞少妇一区二区三区| 亚洲一级不卡视频| 成人免费观看视频| 久久综合色之久久综合| 久久69国产一区二区蜜臀| 欧美色图激情小说| 精品国产精品网麻豆系列| 99视频国产精品| k8久久久一区二区三区 | 国产欧美一区二区三区在线老狼| 毛片av一区二区| 久久网这里都是精品| 不卡电影免费在线播放一区| 日韩一区有码在线| 欧洲一区在线电影| 免费观看日韩电影| 国产精品伦理在线| av不卡免费电影| 国产日韩亚洲欧美综合| 国产精品羞羞答答xxdd| 国产欧美一区二区精品仙草咪| 日韩成人一区二区三区在线观看| 91网站黄www| 亚洲免费三区一区二区| 色诱亚洲精品久久久久久| 中文字幕亚洲区| 色婷婷亚洲婷婷| 另类欧美日韩国产在线| 欧美在线免费视屏| 亚洲成人7777| 久久综合国产精品| 成人免费观看视频| 亚洲欧美日韩中文播放| 91猫先生在线| 日韩av中文字幕一区二区三区| 91麻豆精品91久久久久久清纯| 天堂影院一区二区| 欧美大片在线观看| 国产98色在线|日韩| 亚洲在线视频一区| 日韩精品一区二区三区中文不卡 | 国产精品国产三级国产普通话三级| 9i在线看片成人免费| 婷婷综合五月天| 久久久久久久久久美女| 91麻豆6部合集magnet| 麻豆精品视频在线观看| 国产精品久久久久久久久动漫 | 欧美日韩一区二区在线视频| 风间由美一区二区三区在线观看| 久久久蜜桃精品| 欧美日韩大陆一区二区| 激情图区综合网| 午夜精品免费在线| 国产蜜臀av在线一区二区三区| 欧美日本国产一区| 91小视频免费看| 成人免费视频国产在线观看| 日韩va亚洲va欧美va久久| 亚洲日穴在线视频| 国产丝袜欧美中文另类| 亚洲国产精品激情在线观看| 日本精品一区二区三区四区的功能| 激情综合五月天| 蜜桃视频在线一区| 亚洲高清免费视频| 自拍偷在线精品自拍偷无码专区| 久久久久综合网| 久久久精品欧美丰满| 精品日韩av一区二区| 欧美电影一区二区| 欧美色综合网站| 欧美色网一区二区| 欧美日韩综合色| 在线观看日韩毛片| 色94色欧美sute亚洲线路一久 | 欧美性高清videossexo| 色8久久精品久久久久久蜜 | 洋洋av久久久久久久一区| 亚洲乱码精品一二三四区日韩在线| 国产精品你懂的在线| 亚洲欧洲精品天堂一级| 亚洲天天做日日做天天谢日日欢| 亚洲女与黑人做爰| 亚洲综合在线五月| 午夜免费久久看| 免费不卡在线视频| 国产精品一级在线| 99精品黄色片免费大全| 欧美视频在线一区| 精品剧情v国产在线观看在线| 久久综合久久鬼色| 最近中文字幕一区二区三区| 午夜成人在线视频| 国产精品性做久久久久久| 91亚洲男人天堂| 精品久久久久香蕉网| 国产精品国产馆在线真实露脸 | 中文字幕一区在线观看| 亚洲制服丝袜在线| 99这里只有久久精品视频| 欧美一级二级三级蜜桃| 亚洲一区成人在线| 一本一道久久a久久精品综合蜜臀| 欧美一区二区大片| 亚洲视频免费观看| 国产成人av网站| 久久精品亚洲麻豆av一区二区| 亚洲成人资源网| 在线视频你懂得一区二区三区| 国产欧美日韩不卡| 美女任你摸久久| 欧美一级xxx| 韩国三级电影一区二区| 久久亚洲一区二区三区四区| 免费成人你懂的| 亚洲精品一区在线观看| 国产乱码字幕精品高清av | 中文字幕在线观看不卡| 亚洲精品成人在线| 国产一区二区三区美女| 欧美一区二区视频在线观看2020| 中文字幕在线一区| 国产又粗又猛又爽又黄91精品| 欧美日韩国产大片| 亚洲宅男天堂在线观看无病毒| 99国产精品久久久久久久久久久| 久久青草欧美一区二区三区| 日本在线不卡视频一二三区| 欧美午夜电影一区| 亚洲3atv精品一区二区三区| 91视视频在线观看入口直接观看www| 国产三级精品三级| 成人午夜视频在线观看| 精品久久久久久久久久久久久久久| 久久精品国产精品亚洲精品 | 国产欧美精品一区二区色综合| 麻豆久久久久久久| 精品国产一区二区三区四区四| 韩国精品久久久| 中文字幕免费不卡在线| 成人av在线网站| 亚洲精品videosex极品| 欧美群妇大交群中文字幕| 日韩电影在线免费看| 久久亚洲私人国产精品va媚药| 国产在线视视频有精品| 中文字幕一区在线观看| 欧美在线|欧美| 国产一区日韩二区欧美三区| 亚洲视频一区在线| 欧美一级在线视频| 成人app软件下载大全免费| 亚洲国产一区二区a毛片| 日韩一区二区三区三四区视频在线观看 | 亚洲国产精品精华液2区45| 欧美自拍偷拍一区| 美女尤物国产一区| 中文字幕亚洲欧美在线不卡| 91精品免费在线观看| 99久久国产综合精品女不卡| 日本不卡一区二区三区| 国产精品成人免费在线|