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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pgflt.c

?? 一個類似與Windows環(huán)境下的softice的源代碼
?? C
字號:
/****************************************************************************** * * Copyright (c) 2003 Gerhard W. Gruber * * PROJECT: pICE * $Source: /cvsroot/pice/pice/module/pgflt.c,v $ * $Revision: 1.5 $ * $Date: 2004/02/17 23:07:37 $ * $Author: lightweave $ * $Name:  $ * * $Log: pgflt.c,v $ * Revision 1.5  2004/02/17 23:07:37  lightweave * * Improved the DEBUG facillity and replaced the configuration handler with a * new code which now can read MS Windows INI style files. See CHANGES.txt for * more details. * Also added a macro which prevents compiling for kernels before 2.4.19. * * Revision 1.4  2003/06/18 22:00:22  lightweave * DEBUG and DEBUG_SERIAL added * * *****************************************************************************/static char *ident = "$Header: /cvsroot/pice/pice/module/pgflt.c,v 1.5 2004/02/17 23:07:37 lightweave Exp $";/*++Copyright (c) 1998-2001 Klaus P. GerlicherModule Name:    pgflt.cAbstract:        page fault handling on x86Environment:    Kernel mode onlyAuthor:     Klaus P. GerlicherRevision History:    25-Nov-1999:	created    15-Nov-2000:    general cleanup of source filesCopyright notice:  This file may be distributed under the terms of the GNU Public License.--*/////////////////////////////////////////////////////// INCLUDES////#include "remods.h"#include <asm/io.h>#include <asm/page.h>#include <asm/pgtable.h>#include <linux/fs.h>#include <linux/vmalloc.h>#include <asm/uaccess.h>#include <asm/delay.h>#include <linux/interrupt.h>#include "precomp.h"#include "compat.h"////////////////////////////////////////////////////// DEFINES////#define PAGE_FAULT_VECTOR (0x0E)#if LINUX_VERSION_CODE < 0x020400#define down_read down#define up_read up#endif // LINUX_VERSION_CODE ////////////////////////////////////////////////////// GLOBALS////ULONG ulOldPageFaultHandler=0;BOOLEAN bInPageFaultHandler = FALSE;ULONG (*pice_search_exception_table)(ULONG eip) = NULL;////////////////////////////////////////////////////// FUNCTIONS//////************************************************************************* // HandlePageFault() // // returns:// 0    =       let the system handle it// 1    =       call DebuggerShell()// 2    =       FATAL error inside debugger//************************************************************************* ULONG HandlePageFault(EXCEPTION_FRAME* pFrame){	struct task_struct *tsk;	struct mm_struct *mm;	struct vm_area_struct * vma;	unsigned long address;	int write;	// get the address touched	__asm__("movl %%cr2,%0":"=r" (address));	tsk = current;	DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "CR2 = %08lX error = %x (tsk = %p (%s) ulOldPageFaultHandler = %.8X)\n", address, pFrame->error_code, tsk, tsk->comm, ulOldPageFaultHandler);#if LINUX_VERSION_CODE < 0x020400#else	if ((address >= TASK_SIZE) && !(pFrame->error_code&5))	{		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "goto vmalloc_fault\n");		goto vmalloc_fault;	}#endif	mm = tsk->mm;	/*	 * If we're in an interrupt or have no user	 * context, we must not take the fault..	 */	if (in_interrupt() || mm == my_init_mm)	{		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "goto no_context\n");		goto no_context;	}	down_read(&mm->mmap_sem);	vma = find_vma(mm, address);	if (!vma)	{		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "goto bad_area\n");		goto bad_area;	}	if (vma->vm_start <= address)	{		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "goto good_area\n");		goto good_area;	}	if (!(vma->vm_flags & VM_GROWSDOWN))	{		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "vma doesn't grow down!\n");		goto bad_area;	}	if (pFrame->error_code & 4) {		/*		 * accessing the stack below %esp is always a bug.		 * The "+ 32" is there due to some instructions (like		 * pusha) doing post-decrement on the stack and that		 * doesn't show up until later..		 */		if (address + 32 < pFrame->ring3_esp)		{			DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "access outside of stack!\n");			goto bad_area;		}	}	if(COMPAT_expand_stack(vma, address))	{		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "stack not expansible!\n");		goto bad_area;	}/* * Ok, we have a good vm_area for this memory access, so * we can handle it.. */good_area:	write = 0;	switch (pFrame->error_code & 3) {		default:	/* 3: write, present */			/* fall through */		case 2:		/* write, not present */			if (!(vma->vm_flags & VM_WRITE))			{				DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "write, not present!\n");				goto bad_area;			}			write++;			break;		case 1:		/* read, present */			DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "read, present!\n");			goto bad_area;		case 0:		/* read, not present */			if (!(vma->vm_flags & (VM_READ | VM_EXEC)))			{				DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "read, not present!\n");				goto bad_area;			}	}	/*	 * If for any reason at all we couldn't handle the fault,	 * make sure we exit gracefully rather than endlessly redo	 * the fault.	 *///survive:	DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "survive\n");	// check if there could be a breakpoint installed in the page	// only if conditions are:	// - usermode caused the fault	// - it was a read	// - it was due to a not present page	if( (pFrame->error_code & 0xF) == 0xC)	{		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "checking if page has a virtual SW breakpoint\n");		if(PageSwapInReInstallSWBreakpoints(address))		{			DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "page has a virtual SW breakpoint\n");						// modify trace flag so we come back after page has been swapped in			pFrame->eflags |= TF_FLAG; // set trace flag (TF)			ulSingleStepCondition |= SINGLE_STEP_CONDITION_BREAKPOINT_REINSTALL;		}	}	up_read(&mm->mmap_sem);	return 0;/* * Something tried to access memory that isn't in our memory map.. * Fix it, but check if it's kernel or user first.. */bad_area:	up_read(&mm->mmap_sem);bad_area_nosemaphore:	/* User mode accesses just cause a SIGSEGV */	if (pFrame->error_code & 4) {		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "SIGSEGV!\n");		return 1;	}no_context:	if(pice_search_exception_table)	{		/* Are we prepared to handle this kernel fault?  */		if (pice_search_exception_table(pFrame->eip) != 0) {			return 0;		}	}/* * Oops. The kernel tried to access some bad page. We'll have to * terminate things with extreme prejudice. * * First we check if it was the bootup rw-test, though.. */	if (address < PAGE_SIZE)		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "Unable to handle kernel NULL pointer dereference");	else		DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "Unable to handle kernel paging request");	return 1;#if LINUX_VERSION_CODE < 0x020400#elsevmalloc_fault:	{		/*		 * Synchronize this task's top level page-table		 * with the 'reference' page table.		 */		int offset = __pgd_offset(address);		pgd_t *pgd, *pgd_k;		pmd_t *pmd, *pmd_k;		pgd = tsk->active_mm->pgd + offset;		pgd_k = init_mm.pgd + offset;		if (!pgd_present(*pgd)) {			if (!pgd_present(*pgd_k))			{				DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "goto bad_area_nosemaphore\n");				goto bad_area_nosemaphore;			}			return 0;		}		pmd = pmd_offset(pgd, address);		pmd_k = pmd_offset(pgd_k, address);		if (pmd_present(*pmd) || !pmd_present(*pmd_k))		{			DPRINT(PICE_DEBUG, DBT_PGFLT, DBL_INFO, "goto bad_area_nosemaphore\n");			goto bad_area_nosemaphore;		}		return 0;	}#endif }//************************************************************************* // InstallPageFaultHook() // //************************************************************************* void InstallPageFaultHook(void){#ifdef ACTIVATE_PAGEFAULT_HOOK	void DebuggerPageFault(void);	ENTER_FUNC();	if(!ulOldPageFaultHandler)	{		HookInterruptVector(PAGE_FAULT_VECTOR,(PVOID)&DebuggerPageFault,(PVOID)&ulOldPageFaultHandler);	}    LEAVE_FUNC();#endif // ACTIVATE_PAGEFAULT_HOOK}//************************************************************************* // DeinstallPageFaultHook() // //************************************************************************* void DeinstallPageFaultHook(void){#ifdef ACTIVATE_PAGEFAULT_HOOK	ENTER_FUNC();	if(ulOldPageFaultHandler)	{		HookInterruptVector(PAGE_FAULT_VECTOR,(PVOID)ulOldPageFaultHandler,NULL);	}    LEAVE_FUNC();#endif // ACTIVATE_PAGEFAULT_HOOK}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
a在线欧美一区| 国产一区二区三区最好精华液| 6080国产精品一区二区| av在线不卡免费看| 日韩中文字幕亚洲一区二区va在线| 久久精品人人做| 欧美成人国产一区二区| gogogo免费视频观看亚洲一| 国产精品一区二区在线观看网站| 秋霞午夜av一区二区三区| 夜色激情一区二区| 自拍av一区二区三区| 日本一区二区免费在线| 久久青草欧美一区二区三区| 欧美成人一级视频| 欧美成人一级视频| 欧美tickling网站挠脚心| 成人动漫精品一区二区| 成人综合婷婷国产精品久久免费| 亚洲一区二区美女| 亚洲小少妇裸体bbw| 亚洲精选视频免费看| 亚洲图片你懂的| 亚洲裸体xxx| 亚洲视频网在线直播| 中文字幕欧美一区| 亚洲精品中文在线影院| 亚洲精品国产精品乱码不99| 亚洲色图视频网| 亚洲影院免费观看| 亚洲国产色一区| 青青草原综合久久大伊人精品| 日本美女一区二区三区| 麻豆国产91在线播放| 国产精品99久久久久久有的能看| 国产成人精品免费看| 男男gaygay亚洲| 日本亚洲电影天堂| 国产真实乱对白精彩久久| 国产成人aaaa| 一本色道久久综合亚洲91| 在线观看亚洲精品视频| 成人高清在线视频| 日本韩国欧美一区| 欧美另类高清zo欧美| 久久综合999| 亚洲人一二三区| 久久99久久99精品免视看婷婷| 免费一级片91| gogo大胆日本视频一区| 欧美区在线观看| 久久精品在这里| 亚洲一区在线看| 国产美女一区二区三区| 91在线观看视频| 欧美电影免费观看完整版| 欧美国产精品专区| 日韩精品久久久久久| 国产91高潮流白浆在线麻豆| 色综合久久综合网| 日韩精品一区二区三区视频| 最新不卡av在线| 久久97超碰色| 91黄色小视频| 久久久国产精品午夜一区ai换脸| 亚洲精品高清在线| 岛国av在线一区| 91精品国产色综合久久 | 色综合久久久久综合体桃花网| 欧美色视频在线| 国产精品免费av| 一区二区三区毛片| 国产精品一区二区久久精品爱涩 | 国产精品家庭影院| 免费观看在线综合色| 国产福利一区二区三区视频| 在线观看视频一区二区| 国产三级精品三级在线专区| 亚洲国产精品一区二区久久| 不卡大黄网站免费看| 久久久久成人黄色影片| 另类综合日韩欧美亚洲| 欧美三日本三级三级在线播放| 成人免费在线播放视频| 日本美女视频一区二区| 欧美日韩久久久一区| 亚洲精品国产无天堂网2021| av亚洲精华国产精华| 国产农村妇女毛片精品久久麻豆| 久久 天天综合| 精品乱人伦小说| 蜜乳av一区二区三区| 欧美精品久久天天躁| 一区二区三区免费观看| 99热这里都是精品| 亚洲激情男女视频| 91国在线观看| 亚洲一区二区在线播放相泽 | 伊人婷婷欧美激情| 91免费版在线| 一区二区三区免费看视频| 91色|porny| 日本不卡1234视频| 欧美国产一区二区在线观看 | 亚洲成人免费影院| 精品国产亚洲在线| 91浏览器在线视频| 日本麻豆一区二区三区视频| 国产亚洲一本大道中文在线| 91啪亚洲精品| 国产一区二区中文字幕| 国产精品人人做人人爽人人添| 91久久精品国产91性色tv| 美女一区二区三区| 亚洲欧美日韩综合aⅴ视频| 欧美高清激情brazzers| 国产成人免费在线| 天天影视涩香欲综合网 | caoporm超碰国产精品| 奇米777欧美一区二区| 国产精品久久久久四虎| 91精品国产综合久久国产大片| 顶级嫩模精品视频在线看| 国产成人午夜精品5599| 亚洲最新视频在线观看| 久久久www成人免费无遮挡大片| 一本久道久久综合中文字幕| 国产精品18久久久久久久网站| 亚洲综合精品久久| 国产精品视频在线看| 日韩欧美国产电影| 欧美精品乱人伦久久久久久| 成人h动漫精品一区二| 精品综合免费视频观看| 香蕉成人伊视频在线观看| 17c精品麻豆一区二区免费| 国产亚洲一区二区在线观看| 日韩一区二区三区精品视频| 色综合久久久久综合体桃花网| 国产suv精品一区二区三区| 日本视频一区二区三区| 亚洲国产另类av| 一区二区三区蜜桃网| 亚洲视频精选在线| 亚洲视频狠狠干| 亚洲欧洲韩国日本视频| 国产精品女主播av| 日本一区二区三区高清不卡| 亚洲国产高清aⅴ视频| 精品国产乱码久久| 2021中文字幕一区亚洲| 久久久久久99精品| 国产亚洲欧美在线| 亚洲国产成人在线| 国产精品激情偷乱一区二区∴| 国产精品美女久久久久av爽李琼| 一区二区三区不卡视频| 一区二区三区四区精品在线视频| 一区二区中文字幕在线| 亚洲欧洲成人自拍| 一区二区三区精品| 性久久久久久久| 麻豆国产精品官网| 国产精品88av| 91亚洲国产成人精品一区二三| youjizz国产精品| 91偷拍与自偷拍精品| 日本高清无吗v一区| 欧美日韩国产精选| 亚洲精品一区二区三区福利| 国产肉丝袜一区二区| 中文字幕一区二区三区av| 亚洲一区二区成人在线观看| 日本午夜一区二区| 高清不卡一区二区| 色综合视频一区二区三区高清| 欧美日韩国产综合久久| 精品盗摄一区二区三区| 国产精品嫩草久久久久| 亚洲最大成人网4388xx| 麻豆国产精品一区二区三区 | 一级精品视频在线观看宜春院 | 精品国产乱码久久久久久牛牛 | 成人精品视频一区二区三区尤物| 99久久久无码国产精品| 欧美视频一区二区三区四区| 欧美大尺度电影在线| 中文字幕在线不卡| 日韩电影在线观看网站| 国产成人av影院| 欧美美女网站色| 国产精品嫩草99a| 日韩—二三区免费观看av| 夫妻av一区二区| 欧美人与z0zoxxxx视频| 国产精品美女久久久久av爽李琼| 午夜精品123| 成人av手机在线观看| 日韩视频免费观看高清在线视频| 综合婷婷亚洲小说|