Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- typedef void(__cdecl* tUiShowList) (int a1, int a2, int a3, int a4);
- DWORD OFFuiShowList = 0x644240;
- tUiShowList UiShowList = NULL;
- void Func()
- {
- //do stuff here
- }
- void UI_ShowList(int a1, int a2, int a3, int a4)
- {
- __asm PUSHAD;
- Func();
- __asm POPAD;
- UiShowList(a1, a2, a3, a4);
- }
- void MakeJMP(BYTE *pAddress, DWORD dwJumpTo, DWORD dwLen)
- {
- DWORD dwOldProtect, dwBkup, dwRelAddr;
- VirtualProtect(pAddress, dwLen, PAGE_EXECUTE_READWRITE, &dwOldProtect);
- dwRelAddr = (DWORD)(dwJumpTo - (DWORD)pAddress) - 5;
- *pAddress = 0xE9;
- *((DWORD *)(pAddress + 0x1)) = dwRelAddr;
- for (DWORD x = 0x5; x < dwLen; x++) *(pAddress + x) = 0x90;
- VirtualProtect(pAddress, dwLen, dwOldProtect, &dwBkup);
- return;
- }
- void *DetourFunction(BYTE *src, const BYTE *dst, const int len)
- {
- BYTE *jmp = (BYTE*)malloc(len + 5);
- DWORD dwBack;
- VirtualProtect(src, len, PAGE_EXECUTE_READWRITE, &dwBack);
- memcpy(jmp, src, len);
- jmp += len;
- jmp[0] = 0xE9;
- *(DWORD*)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
- src[0] = 0xE9;
- *(DWORD*)(src + 1) = (DWORD)(dst - src) - 5;
- for (int i = 5; i<len; i++)
- src[i] = 0x90;
- VirtualProtect(src, len, dwBack, &dwBack);
- return (jmp - len);
- }
- BOOL WINAPI DllMain(HMODULE hMod, DWORD dwReason, LPVOID lpReserved)
- {
- if (dwReason == DLL_PROCESS_ATTACH)
- {
- UiShowList = (tUiShowList)DetourFunction((PBYTE)OFFuiShowList, (PBYTE)&UI_ShowList, 5);
- }
- else if (dwReason == DLL_PROCESS_DETACH)
- {
- //do nothing here lol
- }
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement