Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate winapi;
- extern crate kernel32;
- use kernel32::AddVectoredExceptionHandler;
- extern "system" {
- pub fn RaiseException(dwExceptionCode: u32,
- dwExceptionFlags: u32,
- nNumberOfArguments: u32,
- lpArguments: *const u64);
- }
- //pub unsafe extern "system" fn MyExceptionHandler(First: ULONG, Handler: PVECTORED_EXCEPTION_HANDLER) -> PVOID
- //fn TraceCallback(ex: winapi::winnt::EXCEPTION_POINTERS) -> winapi::EXCEPTION_DISPOSITION
- //pub unsafe extern "system" fn TraceCallback(ex: *mut winapi::winnt::EXCEPTION_POINTERS) -> winapi::EXCEPTION_DISPOSITION
- pub unsafe extern "system" fn TraceCallback(ex: *mut winapi::winnt::EXCEPTION_POINTERS) -> i32
- {
- //let btf_flag = 0x300;
- //let trap_flag = 0x100;
- //return winapi::excpt::ExceptionContinueSearch;
- return 0;
- }
- fn main() {
- unsafe
- {
- AddVectoredExceptionHandler(1, TraceCallback);
- let STATUS_SINGLE_STEP = 0x80000004;
- let v = 0;
- let mut p : *const u64 = &v;
- RaiseException(STATUS_SINGLE_STEP,0,0, p);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement