Advertisement
Guest User

Untitled

a guest
Aug 15th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1.  
  2. #include <Windows.h>
  3.  
  4.  
  5. typedef void(__cdecl* tUiShowList) (int a1, int a2, int a3, int a4);
  6. DWORD OFFuiShowList = 0x644240;
  7.  
  8. tUiShowList UiShowList = NULL;
  9.  
  10.  
  11.  
  12.  
  13. void Func()
  14. {
  15. //do stuff here
  16. }
  17.  
  18. void UI_ShowList(int a1, int a2, int a3, int a4)
  19. {
  20. __asm PUSHAD;
  21. Func();
  22. __asm POPAD;
  23. UiShowList(a1, a2, a3, a4);
  24. }
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. void MakeJMP(BYTE *pAddress, DWORD dwJumpTo, DWORD dwLen)
  33. {
  34. DWORD dwOldProtect, dwBkup, dwRelAddr;
  35.  
  36. VirtualProtect(pAddress, dwLen, PAGE_EXECUTE_READWRITE, &dwOldProtect);
  37. dwRelAddr = (DWORD)(dwJumpTo - (DWORD)pAddress) - 5;
  38. *pAddress = 0xE9;
  39.  
  40. *((DWORD *)(pAddress + 0x1)) = dwRelAddr;
  41. for (DWORD x = 0x5; x < dwLen; x++) *(pAddress + x) = 0x90;
  42. VirtualProtect(pAddress, dwLen, dwOldProtect, &dwBkup);
  43.  
  44. return;
  45. }
  46.  
  47. void *DetourFunction(BYTE *src, const BYTE *dst, const int len)
  48. {
  49. BYTE *jmp = (BYTE*)malloc(len + 5);
  50. DWORD dwBack;
  51.  
  52. VirtualProtect(src, len, PAGE_EXECUTE_READWRITE, &dwBack);
  53. memcpy(jmp, src, len);
  54. jmp += len;
  55. jmp[0] = 0xE9;
  56. *(DWORD*)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
  57. src[0] = 0xE9;
  58. *(DWORD*)(src + 1) = (DWORD)(dst - src) - 5;
  59. for (int i = 5; i<len; i++)
  60. src[i] = 0x90;
  61. VirtualProtect(src, len, dwBack, &dwBack);
  62. return (jmp - len);
  63. }
  64.  
  65.  
  66.  
  67. BOOL WINAPI DllMain(HMODULE hMod, DWORD dwReason, LPVOID lpReserved)
  68. {
  69. if (dwReason == DLL_PROCESS_ATTACH)
  70. {
  71. UiShowList = (tUiShowList)DetourFunction((PBYTE)OFFuiShowList, (PBYTE)&UI_ShowList, 5);
  72. }
  73.  
  74. else if (dwReason == DLL_PROCESS_DETACH)
  75. {
  76. //do nothing here lol
  77. }
  78.  
  79. return TRUE;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement