⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 invopfault.c

📁 Linux下的类似softice的调试工具
💻 C
字号:
/****************************************************************************** * * Copyright (c) 2003 Gerhard W. Gruber * * PROJECT: pICE * $Source: /cvsroot/pice/pice/module/invopfault.c,v $ * $Revision: 1.3 $ * $Date: 2004/02/17 23:07:36 $ * $Author: lightweave $ * $Name:  $ * * $Log: invopfault.c,v $ * Revision 1.3  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.2  2003/06/18 22:00:22  lightweave * DEBUG and DEBUG_SERIAL added * * *****************************************************************************/static char *ident = "$Header: /cvsroot/pice/pice/module/invopfault.c,v 1.3 2004/02/17 23:07:36 lightweave Exp $";/*++Copyright (c) 1998-2001 Klaus P. GerlicherModule Name:    invopfault.cAbstract:    handle general protection faults on x86Environment:    Kernel mode onlyAuthor:     Klaus P. GerlicherRevision History:    06-Mar-2001:	createdCopyright notice:  This file may be distributed under the terms of the GNU Public License.--*/////////////////////////////////////////////////////// INCLUDES////#include "remods.h"#include "precomp.h"////////////////////////////////////////////////////// DEFINES////#define INVALID_OPCODE_VECTOR (0x06)////////////////////////////////////////////////////// GLOBALS////ULONG OldInvalidOpcodeHandler = 0;static char tempInvOp[1024];////////////////////////////////////////////////////// FUNCTIONS//////************************************************************************* // HandleInvalidOpcodeFault() // //************************************************************************* void HandleInvalidOpcodeFault(EXCEPTION_FRAME* pFrame){    LPSTR pSymbolName;#ifdef ACTIVATE_SYMBOL_LOOKUP    if( FindSymbolByAddress(&pSymbolName,GetLinearAddress(pFrame->cs,pFrame->eip)) )    	PICE_sprintf(tempInvOp,"pICE: Breakpoint due to invalid opcode at %.4X:%.8X (%s)\n",pFrame->cs,pFrame->eip,pSymbolName);     else#endif // ACTIVATE_SYMBOL_LOOKUP    	PICE_sprintf(tempInvOp,"pICE: Breakpoint due to invalid opcode at %.4X:%.8X\n",pFrame->cs,pFrame->eip); 	Print(OUTPUT_WINDOW,tempInvOp); }//************************************************************************* // InstallInvalidOpcodeHook() // //************************************************************************* void InstallInvalidOpcodeHook(void){#ifdef ACTIVATE_INVALIDOPCODE_HOOK	ENTER_FUNC();	if(!OldInvalidOpcodeHandler)	{		HookInterruptVector(INVALID_OPCODE_VECTOR,(PVOID)&DebuggerInvalidOpcodeFault,(PVOID)&OldInvalidOpcodeHandler);	}    LEAVE_FUNC();#endif // ACTIVATE_INVALIDOPCODE_HOOK}//************************************************************************* // DeInstallInvalidOpcodeHook() // //************************************************************************* void DeInstallInvalidOpcodeHook(void){#ifdef ACTIVATE_INVALIDOPCODE_HOOK	ENTER_FUNC();	if(OldInvalidOpcodeHandler)	{		HookInterruptVector(INVALID_OPCODE_VECTOR,(PVOID)OldInvalidOpcodeHandler,NULL);	}    LEAVE_FUNC();#endif // ACTIVATE_INVALIDOPCODE_HOOK}// EOF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -