Advertisement
buesingniklas

detour

Mar 15th, 2019
2,402
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. type OnLevelAddedPlayerFn = fn(*mut LevelC, *mut PlayerC) -> bool;
  2.  
  3. struct FunctionPtrAddress {
  4. addy: OnLevelAddedPlayerFn
  5. }
  6.  
  7. lazy_static! {
  8. static ref fn_ptrs: FunctionPtrAddress = FunctionPtrAddress {
  9. addy: unsafe {
  10. std::mem::transmute::<usize, OnLevelAddedPlayerFn>(0x10111790)
  11. }
  12. };
  13. }
  14.  
  15. static_detours! {
  16. struct CreateMoveDetour: fn(*mut LevelC, *mut PlayerC) -> bool;
  17. }
  18.  
  19.  
  20. pub fn init_hooks() {
  21.  
  22. let closure_for_on_level_added_player = |level, player| {
  23. ui::toast("Not original", "lol");
  24.  
  25. return (fn_ptrs.addy)(level, player);
  26. };
  27.  
  28. let mut hook = unsafe {
  29. CreateMoveDetour.initialize(on_level_added_player_hook, closure_for_on_level_added_player).unwrap()
  30. };
  31.  
  32. unsafe {
  33. hook.enable().unwrap();
  34. }
  35.  
  36. on_level_added_player_hook(std::ptr::null_mut(), std::ptr::null_mut());
  37. hook.call(std::ptr::null_mut(), std::ptr::null_mut());
  38. }
  39.  
  40. fn on_level_added_player_hook(level: *mut LevelC, player: *mut PlayerC) -> bool {
  41. ui::toast("Original", "lol");
  42.  
  43. return (fn_ptrs.addy)(level, player);
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement