Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- void CUtils::unprotect(unsigned long address, unsigned int size)
- {
- DWORD oldprot;
- VirtualProtect((LPVOID)address, size, PAGE_EXECUTE_READWRITE, &oldprot);
- }
- void CUtils::memSet(void *dst, int val, unsigned int size)
- {
- unprotect((ULONG)dst, size);
- memset(dst, val, size);
- }
- void CUtils::memCpy(void *dst, const void *src, unsigned int size)
- {
- unprotect((ULONG)dst, size);
- memcpy(dst, src, size);
- }
- void CUtils::strCpy(void *dst, const char *src, unsigned int size)
- {
- unprotect((ULONG)dst, size);
- strcpy((char*)dst, src);
- }
- #define MAX_JUMPCODE_SIZE 50
- template <class T, class U>
- void MemPutFast(U ptr, const T value)
- {
- *(T*)ptr = value;
- }
- BYTE* CreateJump(DWORD dwFrom, DWORD dwTo, BYTE* ByteArray)
- {
- ByteArray[0] = 0xE9;
- MemPutFast<DWORD>(&ByteArray[1], dwTo - (dwFrom + 5));
- return ByteArray;
- }
- BOOL CUtils::installHook(DWORD dwInstallAddress, DWORD dwHookHandler, int iJmpCodeSize)
- {
- BYTE JumpBytes[MAX_JUMPCODE_SIZE];
- CUtils::memSet(JumpBytes, 0x90, MAX_JUMPCODE_SIZE);
- if (CreateJump(dwInstallAddress, dwHookHandler, JumpBytes))
- {
- CUtils::memCpy((PVOID)dwInstallAddress, JumpBytes, iJmpCodeSize);
- return TRUE;
- }
- else
- return FALSE;
- }
- template < class T, class U >
- void CUtils::MemPut ( U ptr, const T value )
- {
- if ( *(T*)ptr != value )
- MemCpy ( (void*)ptr, &value, sizeof ( T ) );
- }
- template < class T, class U >
- void CUtils::MemAdd ( U ptr, const T value )
- {
- T current;
- memcpy ( ¤t, (void*)ptr, sizeof ( T ) );
- current += value;
- MemCpy ( (void*)ptr, ¤t, sizeof ( T ) );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement