zoukankan      html  css  js  c++  java
  • 手动设置SEH

    转载至   http://bbs.pediy.com/showthread.php?t=46690

    一般情况下我们在 VS2005以上都不能手动设置SEH异常处理函数

    因为有 SafeSEH  保护

    但是可以将保护的SEH验证给篡改掉  也就是将 系统的SEH函数JMP我们的异常函数地址

    如下:

    #include "stdafx.h"
    #include <Windows.h>
    
    int    __stdcall CatchProc(EXCEPTION_RECORD* pExcept,void* pErr,void* pContext,void* p_Dis)
    {
    	if (pExcept->ExceptionCode == EXCEPTION_BREAKPOINT)
    	{
    		printf("catched");
    		return 0;
    	}
    	printf("catched");
    	return 1;
    }
    
    
    bool __stdcall SetCatchProc(void*    pCProc)
    {
    	char* p_ExpProcEntry;
    	__asm
    	{
    		mov eax,fs:[0]
    		add eax,4
    		mov eax,dword ptr [eax]
    		mov p_ExpProcEntry,eax
    	}
    	DWORD p_oldProtect = 0;
    	if (VirtualProtect(p_ExpProcEntry,5,PAGE_EXECUTE_READWRITE,&p_oldProtect))
    	{
    		*(BYTE*)p_ExpProcEntry = 0xE9;
    		*(DWORD*)(p_ExpProcEntry+1)=(char*)pCProc-p_ExpProcEntry-5;
    		return true;
    	}
    	return false;
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    	SetCatchProc(CatchProc);
    	int i=0;
    	int sum = 5/i;
    	char p1[255];
    	gets(p1);
    	return 0;
    }


  • 相关阅读:
    迷宫寻宝(自编简单版)
    推荐一个免费翻译接口
    nyoj 82
    poj 3984
    Suffix Tree(后缀树)
    python turtle模块绘图
    python continue语句
    python break语句
    pycharm永久破解激活码
    python while死循环
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982395.html
Copyright © 2011-2022 走看看