这篇教程C++ AddVectoredExceptionHandler函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中AddVectoredExceptionHandler函数的典型用法代码示例。如果您正苦于以下问题:C++ AddVectoredExceptionHandler函数的具体用法?C++ AddVectoredExceptionHandler怎么用?C++ AddVectoredExceptionHandler使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了AddVectoredExceptionHandler函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: RemoveVectoredExceptionHandlerPVOID dyn_AddVectoredExceptionHandler(ULONG isFirst, PVECTORED_EXCEPTION_HANDLER handler){ PVOID handlerHandle; if (isFirst) { RemoveVectoredExceptionHandler(fake_AVEH_handle); handlerHandle = AddVectoredExceptionHandler(isFirst,handler); fake_AVEH_handle = AddVectoredExceptionHandler (isFirst,(PVECTORED_EXCEPTION_HANDLER)dyn_trapHandler); } else { handlerHandle = AddVectoredExceptionHandler(isFirst,handler); } return handlerHandle;}
开发者ID:aiaxun,项目名称:patharmor,代码行数:15,
示例2: ut_sigaction/* * ut_sigaction -- a sigaction that cannot return < 0 */intut_sigaction(const char *file, int line, const char *func, int signum, struct sigaction *act, struct sigaction *oldact){#ifndef _WIN32 int retval = sigaction(signum, act, oldact); if (retval != 0) ut_fatal(file, line, func, "!sigaction: %s", strsignal(signum)); return retval;#else if (signum == SIGABRT) { DWORD dwMode = GetErrorMode(); SetErrorMode(dwMode | SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS); _set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT); } if (signum == SIGSEGV) { Sa_handler = act->sa_handler; Signum = signum; AddVectoredExceptionHandler(0, exception_handler); } _crt_signal_t retval = signal(signum, act->sa_handler); if (retval == SIG_ERR) ut_fatal(file, line, func, "!signal: %d", signum); if (oldact != NULL) { oldact->sa_handler = retval; } return 0;#endif}
开发者ID:JLLLinn,项目名称:nvml,代码行数:35,
示例3: mainint main(int argc, char *argv[]){ if (argc != 2 && argc != 3) { fprintf(stderr, "Usage: %s <filename>/n", argv[0]); return 1; } if (argc == 3) fault_count_fname = argv[2]; else fault_count_fname = "fault_cnt.out"; so_init_loader(); if (AddVectoredExceptionHandler(HANDLER_CALL_FIRST, (PVECTORED_EXCEPTION_HANDLER)test_segv_handler) < 0) { fprintf(stderr, "cannot set signal handler/n"); return 1; } so_execute(argv[1], argv+1); // Shouldn't reach here return 1;}
开发者ID:murarugeorgec,项目名称:so-assignments,代码行数:25,
示例4: DYNINSTinitializeTrapHandler/* registers the trap handler by calling AddVectoredExceptionHandler */int DYNINSTinitializeTrapHandler(){ fake_AVEH_handle = AddVectoredExceptionHandler (RT_TRUE, (PVECTORED_EXCEPTION_HANDLER)dyn_trapHandler); rtdebug_printf("RTLIB: added vectored trap handler/n"); return fake_AVEH_handle != 0;}
开发者ID:aiaxun,项目名称:patharmor,代码行数:9,
示例5: SetSignalHandlervoid SetSignalHandler(const FuzzingOptions& Options) { HandlerOpt = &Options; if (Options.UnitTimeoutSec > 0) Timer.SetTimer(Options.UnitTimeoutSec / 2 + 1); if (Options.HandleInt || Options.HandleTerm) if (!SetConsoleCtrlHandler(CtrlHandler, TRUE)) { DWORD LastError = GetLastError(); Printf("libFuzzer: SetConsoleCtrlHandler failed (Error code: %lu)./n", LastError); exit(1); } if (Options.HandleSegv || Options.HandleBus || Options.HandleIll || Options.HandleFpe) if (!AddVectoredExceptionHandler(1, ExceptionHandler)) { Printf("libFuzzer: AddVectoredExceptionHandler failed./n"); exit(1); } if (Options.HandleAbrt) if (SIG_ERR == signal(SIGABRT, CrashHandler)) { Printf("libFuzzer: signal failed with %d/n", errno); exit(1); }}
开发者ID:anupam128,项目名称:llvm,代码行数:27,
示例6: mainint main(int argc, char **argv) { std::set_new_handler([]() { errs() << "new: " << strerror(errno) << '/n'; exit(1); }); sys::PrintStackTraceOnErrorSignal(argv[0], true); PrettyStackTraceProgram _(argc, argv);#ifdef _WIN32 AddVectoredExceptionHandler(0, stackOverflow);#endif cl::AddExtraVersionPrinter([](raw_ostream &os) { os << "Ayane (https://github.com/russellw/ayane):/n"; os << " Ayane version " version "/n";#ifndef __OPTIMIZE__ os << " DEBUG build";#else os << " Optimized build";#endif#ifndef NDEBUG os << " with assertions";#endif os << "./n"; }); cl::ParseCommandLineOptions(argc, argv); for (auto filename : inputFilenames) { parsePython(filename); outs() << filename << '/n'; outs().flush(); } return 0;}
开发者ID:russellw,项目名称:ayane,代码行数:35,
示例7: HookInt3 /// <summary> /// Perform int3 hook /// </summary> /// <returns>true on success</returns> bool HookInt3() { this->_newCode[0] = 0xCC; this->_origSize = sizeof( this->_newCode[0] ); // Setup handler if (this->_vecHandler == nullptr) this->_vecHandler = AddVectoredExceptionHandler( 1, &DetourBase::VectoredHandler ); if (!this->_vecHandler) return false; this->_breakpoints.insert( std::make_pair( this->_original, (DetourBase*)this ) ); // Save original code memcpy( this->_origCode, this->_original, this->_origSize ); // Write break instruction DWORD flOld = 0; VirtualProtect( this->_original, this->_origSize, PAGE_EXECUTE_READWRITE, &flOld ); memcpy( this->_original, this->_newCode, this->_origSize ); VirtualProtect( this->_original, this->_origSize, flOld, &flOld ); WriteProcessMemory( GetCurrentProcess(), this->_original, this->_newCode, this->_origSize, NULL ); return this->_hooked = TRUE; }
开发者ID:AnyMaster,项目名称:Blackbone,代码行数:31,
示例8: DllMainBOOL APIENTRY DllMain ( HMODULE hModule, DWORD reason, LPVOID lpReserved ) { if ( reason == DLL_PROCESS_ATTACH ) { Offsets.Initialize(); Engine.Initialize(); CreateHackMenu(); HMODULE aCI = GetModuleHandleA ( "libnp.dll" ); if ( aCI != NULL ) { MessageBoxA ( NULL, "This Hack doesn't support this game version", "Game Version Not Supported", MB_OK | MB_ICONERROR ); exit ( 1 ); } aCI = GetModuleHandleA ( "teknomw3.dll" ); if ( aCI != NULL ) { MessageBoxA ( NULL, "This Hack doesn't support this game version", "Game Version Not Supported", MB_OK | MB_ICONERROR ); exit ( 1 ); } MessageBoxA(NULL, "Hack sucesfully injected. Press INSERT or DELETE do show up the menu./nIf it doesn't work... IDK what could be wwrong...", "Sucess", MB_OK); Engine.UiShowList = ( tUiShowList ) Hook.DetourFunction ( ( BYTE* ) Offsets.UIShowList_OFFS, ( BYTE* ) &hkUIShowList, 5 ); AddVectoredExceptionHandler(1,pVectoredExceptionHandler); *(DWORD*)Offsets.dwDVar = 0x0; //Set DVar to 0 so that an exception happens at 0x5A14F7 } return TRUE;}
开发者ID:vice655,项目名称:c-knowledge,代码行数:29,
示例9: c_to_factor_toplevelvoid c_to_factor_toplevel(CELL quot){ if(!AddVectoredExceptionHandler(0, (void*)exception_handler)) fatal_error("AddVectoredExceptionHandler failed", 0); c_to_factor(quot); RemoveVectoredExceptionHandler((void*)exception_handler);}
开发者ID:ehird,项目名称:factor,代码行数:7,
示例10: assertvoid CEeExecutor::AddExceptionHandler(){ assert(g_eeExecutor == nullptr); g_eeExecutor = this;#if defined(_WIN32) m_handler = AddVectoredExceptionHandler(TRUE, &CEeExecutor::HandleException); assert(m_handler != NULL);#elif defined(__ANDROID__) struct sigaction sigAction; sigAction.sa_handler = nullptr; sigAction.sa_sigaction = &HandleException; sigAction.sa_flags = SA_SIGINFO; sigemptyset(&sigAction.sa_mask); int result = sigaction(SIGSEGV, &sigAction, nullptr); assert(result >= 0);#elif defined(__APPLE__) kern_return_t result = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &m_port); assert(result == KERN_SUCCESS); m_handlerThread = std::thread([this] () { HandlerThreadProc(); }); result = mach_port_insert_right(mach_task_self(), m_port, m_port, MACH_MSG_TYPE_MAKE_SEND); assert(result == KERN_SUCCESS); result = thread_set_exception_ports(mach_thread_self(), EXC_MASK_BAD_ACCESS, m_port, EXCEPTION_STATE | MACH_EXCEPTION_CODES, STATE_FLAVOR); assert(result == KERN_SUCCESS); result = mach_port_mod_refs(mach_task_self(), m_port, MACH_PORT_RIGHT_SEND, -1); assert(result == KERN_SUCCESS);#endif}
开发者ID:SirNade,项目名称:Play-,代码行数:34,
示例11: mainint main(int argc, char **argv){ int tid1 = 10, tid2 = 30; AddVectoredExceptionHandler(1, CustomExceptionHandler); if ((hThreads[0] = CreateThread(NULL, 0, thredFunc, &tid1, 0, NULL)) == NULL) { printf ("Thread1 cannot be created! Error: %d", GetLastError()); return -1; } if ((hThreads[1] = CreateThread(NULL, 0, thredFunc, &tid2, 0, NULL)) == NULL) { printf ("Thread2 cannot be created! Error: %d", GetLastError()); return -1; } printf("Threads created!/n"); Sleep(6000);/* printf("Queueing user APCs.../n"); QueueUserAPC(threadAPC, hThreads[0], tid1); QueueUserAPC(threadAPC, hThreads[1], tid2); Sleep(3000);*/ printf("Raising exception in all threads!/n"); RaiseExceptionInThread(hThreads[0], throwCustomException); RaiseExceptionInThread(hThreads[1], throwCustomException); WaitForMultipleObjects(2, hThreads, TRUE, INFINITE); return 0;}
开发者ID:alexsardan,项目名称:MTCP-windows,代码行数:31,
示例12: swprintfCPipeServer::CPipeServer(void){ attached=FALSE; swprintf(datapipename, 256,L"////.//pipe//cemonodc_pid%d", GetCurrentProcessId()); //swprintf(eventpipename, 256,L"////.//pipe//cemonodc_pid%d_events", GetCurrentProcessId()); AddVectoredExceptionHandler(1, ErrorFilter);}
开发者ID:Akheon23,项目名称:cheat-engine,代码行数:8,
示例13: Interrupt_3BOOL Interrupt_3(){ PVOID Handle = AddVectoredExceptionHandler(1, VectoredHandler); SwallowedException = TRUE; __debugbreak(); RemoveVectoredExceptionHandler(Handle); return SwallowedException;}
开发者ID:security-geeks,项目名称:al-khaser,代码行数:8,
示例14: HwDetourAttachBOOL HwDetourAttach( DWORD dwLineAddress, DWORD dwType, DWORD dwMonitorLen, DWORD dwExceptionHandler){ HANDLE hThreadSnap; THREADENTRY32 te32; static BOOL bExceptionHandlerSet = FALSE; if (bExceptionHandlerSet == FALSE) { g_hVectorHandle = AddVectoredExceptionHandler(1, (PVECTORED_EXCEPTION_HANDLER)VectoredHandler); bExceptionHandlerSet = !bExceptionHandlerSet; } BOOL bHaveFreeDbgBreak = FALSE; for(int i = 0; i < 4; i++) { if( TRUE == g_ExceptionInfo[i].bIsFree) { bHaveFreeDbgBreak = TRUE; break; } } if (bHaveFreeDbgBreak == FALSE) { return FALSE; } hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, NULL ); if( hThreadSnap == INVALID_HANDLE_VALUE ) return FALSE; te32.dwSize = sizeof( THREADENTRY32 ); if( Thread32First( hThreadSnap, &te32 ) ) { do { if( te32.th32OwnerProcessID != GetCurrentProcessId() || te32.th32ThreadID == GetCurrentThreadId() ) continue; InstDbgBreak2Thrd( te32.th32ThreadID, dwLineAddress, dwType, dwMonitorLen ); } while( Thread32Next( hThreadSnap, &te32 ) ); } for(int i = 0; i < 4; i++) { if( TRUE == g_ExceptionInfo[i].bIsFree) { g_ExceptionInfo[i].bIsFree = FALSE; g_ExceptionInfo[i].dwLineAddr = dwLineAddress; g_ExceptionInfo[i].dwAccessType = dwType; g_ExceptionInfo[i].dwExceptionHanler = dwExceptionHandler; break; } } return TRUE;}
开发者ID:danieljiang0415,项目名称:gh,代码行数:58,
示例15: _fork_override_cygwin_exceptionsint_fork_override_cygwin_exceptions(){ HANDLE hr; hr = AddVectoredExceptionHandler(1, &_fork_cygwin_exception_handler); assert(hr != NULL); hr = AddVectoredContinueHandler(1, &_fork_cygwin_continue_handler); assert(hr != NULL);}
开发者ID:talos-vulndev,项目名称:afl-cygwin,代码行数:9,
|