Advertisement
Guest User

MikelSV Core / interception

a guest
Jun 13th, 2015
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.82 KB | None | 0 0
  1.     void* intercept_it(void *func, void* mfunc){ // import table or any jmp.
  2.         if(!func || !mfunc) return 0;
  3.         void *ret;
  4.  
  5.         if(*(unsigned char*)func!=0xE9 /*|| *(unsigned char*)mfunc!=0xE9*/) return 0; // not jmp
  6.  
  7. #ifdef WIN32
  8.         unsigned long op;
  9.         VirtualProtect(func, 4, PAGE_READWRITE, &op); // PAGE_READWRITE
  10. #endif
  11.         unsigned int a=*(unsigned int*)((char*)func+1);
  12.         void* call=(char*)func+a;
  13.         unsigned int m=(char*)mfunc-(char*)func-5;
  14.  
  15.         *(unsigned int*)func = *(unsigned int*)func;
  16.         *(unsigned int*)&ret = *(unsigned int*)((char*)func+1);
  17.         //memcpy(&ret, ((char*)func+1), sizeof(void*));
  18.         *(unsigned int*)((char*)func+1) = *(unsigned int*)&m;
  19.         //memcpy(((char*)func+1), &m, sizeof(m));
  20.  
  21.         ret=(char*)ret+(unsigned int)func+5;
  22.  
  23. #ifdef WIN32
  24.         VirtualProtect(func, 4, op, &op);
  25. #endif
  26.         return ret;
  27.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement