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

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

?? bp.c

?? 一個類似與Windows環境下的softice的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** * * Copyright (c) 2003 Gerhard W. Gruber * * PROJECT: pICE * $Source: /cvsroot/pice/pice/module/bp.c,v $ * $Revision: 1.5 $ * $Date: 2004/02/17 23:07:36 $ * $Author: lightweave $ * $Name:  $ * * $Log: bp.c,v $ * Revision 1.5  2004/02/17 23:07:36  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:21  lightweave * DEBUG and DEBUG_SERIAL added * * *****************************************************************************/static char *ident = "$Header: /cvsroot/pice/pice/module/bp.c,v 1.5 2004/02/17 23:07:36 lightweave Exp $";/*++Copyright (c) 1998-2001 Klaus P. GerlicherModule Name:    bp.cAbstract:    setting, listing and removing breakpointsEnvironment:    LINUX 2.2.X    Kernel mode onlyAuthor:     Klaus P. GerlicherRevision History:    13-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 <linux/interrupt.h>#include "precomp.h"////////////////////////////////////////////////////// DEFINES////#define BREAKPOINT_VECTOR (0x03)#define	INT3_OPCODE	(0xCC)////////////////////////////////////////////////////// GLOBALS////ULONG ulOldBreakpointHandler=0;SW_BP aSwBreakpoints[64]={{0,0,0,0},};static char tempBp[256];//************************************************************************* // HandleHardwareBreakPoint() // //************************************************************************* ULONG HandleHardwareBreakPoint(EXCEPTION_FRAME* pFrame){   ULONG ulReason;   ENTER_FUNC();    // disable HW breakpoints    __asm__(        "movl %%dr6,%%eax\n"        "movl %%eax,%0\n"	"xorl %%eax,%%eax\n"	"movl %%eax,%%dr6 \n"	"movl %%eax,%%dr7\n"	:"=m" (ulReason)	:        :"eax"    );     DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"REASON_HARDWARE_BP: %x\n", (ulReason&0xF));    // HW breakpoint DR1 (skip: only used in init_module detection)    if(ulReason&0x2)    {        pFrame->eflags |= RF_FLAG; // set resume flag		TryToInstallVirtualSWBreakpoints();		LEAVE_FUNC();		return 0;    }    // HW breakpoint DR0    else if(ulReason&0x1)    {    	ULONG ulAddressCurrent;        // we came here while stepping through source code block        if(bStepThroughSource)        {            ULONG ulLineNumber;            LPSTR pSrc,pFileName;            DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO, "stepping through source! [2]\n");	    	ulAddressCurrent = GetLinearAddress(pFrame->cs,pFrame->eip);            // look up the corresponding source line            // if there isn't any or the source line number has changed            // we break back into the debugger			if(bShowSrc)		        pSrc = FindSourceLineForAddress(ulAddressCurrent,&ulLineNumber,NULL,NULL,&pFileName);			else				pSrc = NULL;            DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"line #%u pSrc=%x (old line #%u) [2]\n",ulLineNumber,(ULONG)pSrc,g_ulLineNumberStart);            // if we have found a source line there            if(pSrc && ulLineNumber==g_ulLineNumberStart)            {                DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"stepping through line #%u in file = %s! [2]\n",ulLineNumber,pFileName);                if(bStepInto)                    StepInto(pFrame,NULL);                else                    StepOver(pFrame,NULL);								return 0;            }            bStepThroughSource = FALSE;        }        bNotifyToExit = FALSE;     }	LEAVE_FUNC();	return 1;}//************************************************************************* // HandleSoftwareBreakPoint() // //************************************************************************* ULONG HandleSoftwareBreakPoint(EXCEPTION_FRAME* pFrame){	ULONG ulAddress;	LPSTR pFind;    ENTER_FUNC();    // make a flat address	ulAddress = GetLinearAddress(pFrame->cs,pFrame->eip - 1);    DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"INT3 @ %.8X\n",ulAddress);	// decide if this breakpoint has been set by PICE or is embedded    // if there's a breakpoint installed at current EIP remove it    if(DeInstallSWBreakpoint(ulAddress) )    {        PSW_BP p;	DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"INT3 @ %.8X removed\n", ulAddress);	// need to go back to start of INT3 instruction	pFrame->eip--;        // if it's permanent (must be Printk() ) skip the DebuggerShell() and        // do a callback        if( (p = IsPermanentSWBreakpoint(ulAddress)) )        {	   DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO, "permanent breakpoint\n");           	   OldFrame[GetProcessor()].cs	= pFrame->cs;	   OldFrame[GetProcessor()].eip = pFrame->eip;	   // if there's a callback for the breakpoint, call it	   if(p->Callback)	      (*p->Callback)(pFrame);	   // skip DebuggerShell()	   LEAVE_FUNC();	   return 0;        }        else        {            if(FindSymbolByAddress(&pFind,GetLinearAddress(pFrame->cs,pFrame->eip)))            {			    PICE_sprintf(tempBp,"pICE: SW Breakpoint at %s (%.4X:%.8X)\n",pFind,pFrame->cs,pFrame->eip);             }            else            {			    PICE_sprintf(tempBp,"pICE: SW Breakpoint at %.4X:%.8X\n",pFrame->cs,pFrame->eip);             }			SetForegroundColor(COLOR_HILITE);			Print(OUTPUT_WINDOW,tempBp); 			ResetColor();        }    }    else    {		// we don't want to catch the breakpoint		if(!bInt3Here)		{			LEAVE_FUNC();			// let system catch it			return 0;		}				// is this userland?        if(ulAddress < TASK_SIZE)                    {			// usermode debugger attached, so let it catch the breakpoint#if LINUX_VERSION_CODE < 0x020400                                                    			if(current->flags & PF_PTRACED)#else // LINUX_VERSION_CODE                                                                                 			if(current->ptrace & PT_PTRACED)           #endif // LINUX_VERSION_CODE                                                                                			{				LEAVE_FUNC();				// let system catch it				return 0;			}			if(FindSymbolByAddress(&pFind,GetLinearAddress(pFrame->cs,pFrame->eip - 1)))			{				PICE_sprintf(tempBp,"pICE: break due to embedded INT 3 at %s (%.4X:%.8X)\n",pFind,pFrame->cs,pFrame->eip - 1); 			}			else			{				PICE_sprintf(tempBp,"pICE: break due to embedded INT 3 at user-mode address %.4X:%.8X\n",pFrame->cs,pFrame->eip - 1); 			}			SetForegroundColor(COLOR_HILITE);			Print(OUTPUT_WINDOW,tempBp); 			ResetColor();        }		// we're in kernel-mode        else        {            if(FindSymbolByAddress(&pFind,GetLinearAddress(pFrame->cs,pFrame->eip - 1)))            {	    		PICE_sprintf(tempBp,"pICE: break due to embedded INT 3 at (%s) %.4X:%.8X\n",                             pFind,pFrame->cs,pFrame->eip - 1);             }            else            {	    		PICE_sprintf(tempBp,"pICE: break due to embedded INT 3 at kernel-mode address %.4X:%.8X\n",                             pFrame->cs,pFrame->eip - 1);             }			SetForegroundColor(COLOR_HILITE);			Print(OUTPUT_WINDOW,tempBp); 			ResetColor();        }    }	LEAVE_FUNC();	// let noone else see it	return 1;}//************************************************************************* // FindSwBp() // //************************************************************************* PSW_BP FindSwBp(ULONG ulAddress){    ULONG i;	ENTER_FUNC();    for(i=0;i<DIM(aSwBreakpoints);i++)    {        if(aSwBreakpoints[i].ulAddress == ulAddress && aSwBreakpoints[i].bUsed==TRUE && aSwBreakpoints[i].bVirtual==FALSE)	{	   DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"FindSwBp(): found index %u\n",i);	   return &aSwBreakpoints[i];	}    }    DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"not found\n");	LEAVE_FUNC();    return NULL;}//************************************************************************* // FindEmptySwBpSlot() // //************************************************************************* PSW_BP FindEmptySwBpSlot(void){    ULONG i;    for(i=0;i<(sizeof(aSwBreakpoints)/sizeof(SW_BP));i++)    {        if(aSwBreakpoints[i].bUsed == FALSE)        {            return &aSwBreakpoints[i];        }    }    return NULL;}//************************************************************************* // FindVirtualSwBp() // //************************************************************************* PSW_BP FindVirtualSwBp(LPSTR ModName,LPSTR szFunctionName){    ULONG i;    PSW_BP p;    for(i=0;i<(sizeof(aSwBreakpoints)/sizeof(SW_BP));i++)    {        p = &aSwBreakpoints[i];        if(p->bUsed == TRUE &&           p->bVirtual == TRUE &&           PICE_strcmpi(p->szModName,ModName)==0 &&           PICE_strcmpi(p->szFunctionName,szFunctionName)==0)        {            return p;        }    }    return NULL;}//************************************************************************* // PageSwapInReInstallSWBreakpoints() // //************************************************************************* BOOLEAN PageSwapInReInstallSWBreakpoints(ULONG ulAddress){   PSW_BP p;   ULONG i;   BOOLEAN rc = FALSE;   ENTER_FUNC();   p = aSwBreakpoints;   for(i=0;i<(sizeof(aSwBreakpoints)/sizeof(SW_BP));i++,p++)   {		if(PICE_strcmpi(p->szProcessName,current->comm) == 0 )		{			 DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"candidate process %s found\n", p->szProcessName);			 DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"bUsed %x bInstalled %x bVirtual %x\n", p->bUsed, p->bInstalled, p->bVirtual);			 DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO,"%lx == %lx?\n", ulAddress & PAGE_MASK, p->ulAddress & PAGE_MASK);			 if(p->bUsed == TRUE && p->bInstalled == FALSE && p->bVirtual == TRUE && 				((ulAddress & PAGE_MASK) == (p->ulAddress & PAGE_MASK)) )			 {				  DPRINT(PICE_DEBUG, DBT_BP, DBL_INFO, "candidate %x found\n",p->ulAddress);				  rc = TRUE;				  goto Quit;			 }		}   }   Quit:   LEAVE_FUNC();      return FALSE;}//************************************************************************* // ReInstallSWBreakpointsInPage() // //************************************************************************* void ReInstallSWBreakpointsInPage(ULONG ulAddress){   PSW_BP p;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美久久久久久久久久| 成人欧美一区二区三区小说| 欧美老肥妇做.爰bbww视频| 日本精品视频一区二区| 在线中文字幕一区二区| 在线中文字幕一区| 欧美日韩一卡二卡| 制服丝袜成人动漫| 日韩精品专区在线| 亚洲国产日产av| 7777女厕盗摄久久久| 欧美日韩三级一区| 91精品久久久久久久99蜜桃| 制服丝袜在线91| 26uuu国产日韩综合| 久久精品一区二区三区不卡牛牛| 久久精品亚洲国产奇米99| 国产精品私人自拍| 亚洲三级视频在线观看| 亚洲一二三四在线观看| 丝瓜av网站精品一区二区| 美腿丝袜一区二区三区| 国产激情精品久久久第一区二区| 成+人+亚洲+综合天堂| 色婷婷精品大视频在线蜜桃视频| 欧美视频自拍偷拍| 日韩精品一区二区三区中文不卡 | 91精品在线一区二区| 日韩视频一区在线观看| 国产色一区二区| 一区二区三区在线影院| 天堂在线一区二区| 国产精品一区二区三区四区| av一区二区三区| 欧美午夜精品一区二区三区| 日韩美一区二区三区| 欧美激情艳妇裸体舞| 亚洲国产一区二区三区| 国内精品伊人久久久久av一坑| 成人精品视频网站| 欧美日韩二区三区| 久久久九九九九| 亚洲图片自拍偷拍| 国产精品亚洲一区二区三区在线 | 成人99免费视频| 欧美丝袜自拍制服另类| 久久久久久久久久久黄色| 亚洲精品视频观看| 三级欧美在线一区| 国产91精品露脸国语对白| 欧美日韩精品免费| 中文字幕第一区综合| 日韩国产精品久久久| 波多野结衣视频一区| 日韩精品一区二区在线| 亚洲精品高清在线| 国产精品一区一区三区| 欧美日韩视频在线第一区| 国产精品美女www爽爽爽| 美国欧美日韩国产在线播放| 91影院在线免费观看| 精品电影一区二区| 国产九色精品成人porny| 欧美婷婷六月丁香综合色| 国产欧美日韩在线观看| 免费欧美高清视频| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产成人欧美日韩在线电影| 欧美另类高清zo欧美| 日韩毛片一二三区| 欧美日韩在线播| 91丨porny丨国产入口| 欧美大片顶级少妇| 亚洲国产成人av| 99久久精品免费精品国产| 2020国产精品自拍| 午夜欧美电影在线观看| 色吊一区二区三区| 国产精品乱码一区二三区小蝌蚪| 蜜臀a∨国产成人精品| 欧美日韩一区二区在线观看视频| 亚洲理论在线观看| jlzzjlzz欧美大全| 国产女人18毛片水真多成人如厕| 麻豆91在线播放| 欧美人妇做爰xxxⅹ性高电影| 亚洲精品一二三| av不卡一区二区三区| 国产精品久久一卡二卡| 国产成人在线视频网址| 久久久久国产精品免费免费搜索| 另类欧美日韩国产在线| 日韩一区二区三区视频在线| 亚洲第一主播视频| 欧美日韩国产首页在线观看| 亚洲午夜羞羞片| 欧美性xxxxxx少妇| 亚洲不卡一区二区三区| 91传媒视频在线播放| 亚洲一二三专区| 欧美日韩黄色影视| 丝袜诱惑亚洲看片| 日韩女优电影在线观看| 开心九九激情九九欧美日韩精美视频电影 | 日韩成人av影视| 69精品人人人人| 香蕉av福利精品导航| 欧美日本在线一区| 男人的天堂亚洲一区| 欧美成人伊人久久综合网| 久草中文综合在线| 久久久久国产精品麻豆| 成人激情av网| 亚洲视频在线观看一区| 欧美性生活影院| 日韩电影一区二区三区四区| 日韩一卡二卡三卡四卡| 精品中文字幕一区二区| 国产午夜亚洲精品理论片色戒| 国产成人午夜视频| 亚洲三级小视频| 欧美美女一区二区| 九九国产精品视频| 日本一区二区高清| 色噜噜狠狠色综合欧洲selulu| 亚洲已满18点击进入久久| 欧美国产丝袜视频| 高清beeg欧美| 一区二区三区美女视频| 欧美精品免费视频| 国产真实乱子伦精品视频| 国产精品国产三级国产普通话99 | 亚洲综合清纯丝袜自拍| 51精品视频一区二区三区| 精品综合久久久久久8888| 国产精品三级电影| 欧美少妇性性性| 国产在线看一区| 自拍偷拍亚洲综合| 欧美一级夜夜爽| 91麻豆精品国产91久久久使用方法 | 国产日产欧美精品一区二区三区| 不卡的av中国片| 五月婷婷欧美视频| 国产亚洲精品精华液| 在线观看精品一区| 韩国av一区二区三区四区| 亚洲柠檬福利资源导航| 日韩精品一区二区三区蜜臀| 成人免费黄色大片| 免费看日韩a级影片| 国产精品久久三区| 欧美精品tushy高清| 成人激情图片网| 蜜臀av一区二区在线观看 | 久久精品国产**网站演员| 亚洲日本一区二区三区| 精品国产乱码久久久久久免费| 91视频精品在这里| 国产美女娇喘av呻吟久久| 亚洲大型综合色站| 国产精品久久久久久久久免费桃花 | 欧美影视一区二区三区| 国产69精品久久777的优势| 视频一区免费在线观看| 欧美国产一区视频在线观看| 91精品中文字幕一区二区三区| 波多野结衣亚洲一区| 国产最新精品免费| 无码av免费一区二区三区试看 | 国产精品自拍在线| 日日夜夜免费精品| 一区二区在线电影| 亚洲国产成人午夜在线一区| 日韩亚洲欧美高清| 国产午夜精品一区二区三区视频 | 国产精品无圣光一区二区| 欧美成人猛片aaaaaaa| 欧美亚洲国产一区二区三区| 成人午夜伦理影院| 国产一区二区三区四| 午夜伦理一区二区| 亚洲最新视频在线播放| 国产精品精品国产色婷婷| 久久综合久久综合久久综合| 91精品国产福利在线观看| 在线免费亚洲电影| 色综合视频在线观看| 国产成人在线视频免费播放| 六月婷婷色综合| 蜜臀av国产精品久久久久| 日韩成人免费看| 石原莉奈在线亚洲二区| 婷婷丁香激情综合| 婷婷一区二区三区| 五月天一区二区三区| 日韩一区精品字幕| 日本欧美在线看| 久久狠狠亚洲综合| 国产综合一区二区|