int main() { INIT(); #ifdef UNIX intercept_signal(SIGSEGV, (handler_3_t)signal_handler, false); #else SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)custom_top_handler); #endif print("starting good function\n"); twofoo(); print("starting bad function\n"); invalid_ret(1); /* zero page */ invalid_ret(0); /* NULL */ invalid_ret(0x00badbad); /* user mode */ invalid_ret(0x7fffffff); /* user mode */ invalid_ret(0x80000000); /* kernel addr */ invalid_ret(0xbadbad00); /* kernel addr */ invalid_ret(0xfffffffe); /* just bad */ invalid_ret(0xffffffff); /* just bad */ print("all done [not seen]\n"); }
int main() { INIT(); print("starting good function\n"); twofoo(); print("starting bad function\n"); #ifdef X64 # ifdef WINDOWS ring(1, 2, 3, 4, 5); # else ring(1, 2, 3, 4, 5, 6, 7); # endif #else ring(1); #endif print("all done [not seen]\n"); }