首页
社区
课程
招聘
[求助]cad异常问题,用arx处理
发表于: 2016-1-13 16:28 3243

[求助]cad异常问题,用arx处理

2016-1-13 16:28
3243
我在arx的On_kInitAppMsg()中成功添加了TopLevelExcepFilter这个UEH,并禁用SetUnhandledExceptionFilter:
old_TopLevelExcepFilter=SetUnhandledExceptionFilter(&TopLevelExcepFilter);
DisableSetUnhandledExceptionFilter();
MessageBox(0,_T("On_kInitAppMsg"),_T("安装UnhandledExceptionFilter成功"),MB_OK);

void DisableSetUnhandledExceptionFilter()
{
	void *addr = (void*)GetProcAddress(LoadLibrary(_T("kernel32.dll")),	"SetUnhandledExceptionFilter");
	if (addr) 
	{
		unsigned char code[16];
		int size = 0;
		code[size++] = 0x33;
		code[size++] = 0xC0;
		code[size++] = 0xC2;
		code[size++] = 0x04;
		code[size++] = 0x00;
		DWORD dwOldFlag, dwTempFlag;
		VirtualProtect(addr, size, PAGE_READWRITE, &dwOldFlag);
		WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);
		VirtualProtect(addr, size, dwOldFlag, &dwTempFlag);
	}
}


但我发现cad崩溃的时候并没有执行我的TopLevelExcepFilter(),还是先执行了cad崩溃的函数。
究竟为什么呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 12628
活跃值: (3127)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
http://bbs.pediy.com/showthread.php?t=173853
【原创】白话windows之四 异常处理机制(VEH、SEH、TopLevelEH...)

精华居然也有出错的时候:
LONG NTAPI TopLevelExcepFilter( PEXCEPTION_POINTERS pExcepInfo )
{
    TCHAR* pTitle = _T("*顶级* 异常处理器");
    _tprintf( _T("[EH.Exe] [TOP] in \n") );
    LONG nRet = ShowSelectMessageBox(pTitle);
    _tprintf( _T("[EH.Exe] [TOP] out \n") );;
    return nRet;
}
//注册
SetUnhandledExceptionFilter( &TopLevelExcepFilter );


应该不需要&才对。
2016-1-15 11:59
0
游客
登录 | 注册 方可回帖
返回
//