Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. extern crate winapi;
  2. extern crate kernel32;
  3.  
  4. use kernel32::AddVectoredExceptionHandler;
  5.  
  6. extern "system" {
  7. pub fn RaiseException(dwExceptionCode: u32,
  8. dwExceptionFlags: u32,
  9. nNumberOfArguments: u32,
  10. lpArguments: *const u64);
  11. }
  12.  
  13. //pub unsafe extern "system" fn MyExceptionHandler(First: ULONG, Handler: PVECTORED_EXCEPTION_HANDLER) -> PVOID
  14. //fn TraceCallback(ex: winapi::winnt::EXCEPTION_POINTERS) -> winapi::EXCEPTION_DISPOSITION
  15. //pub unsafe extern "system" fn TraceCallback(ex: *mut winapi::winnt::EXCEPTION_POINTERS) -> winapi::EXCEPTION_DISPOSITION
  16. pub unsafe extern "system" fn TraceCallback(ex: *mut winapi::winnt::EXCEPTION_POINTERS) -> i32
  17. {
  18. //let btf_flag = 0x300;
  19. //let trap_flag = 0x100;
  20.  
  21. //return winapi::excpt::ExceptionContinueSearch;
  22. return 0;
  23. }
  24.  
  25. fn main() {
  26. unsafe
  27. {
  28. AddVectoredExceptionHandler(1, TraceCallback);
  29. let STATUS_SINGLE_STEP = 0x80000004;
  30. let v = 0;
  31. let mut p : *const u64 = &v;
  32. RaiseException(STATUS_SINGLE_STEP,0,0, p);
  33. }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement