Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mcmd_dword mcmd_memory_scan(char *pattern, char *mask)
- {
- mcmd_dword i;
- mcmd_dword size;
- #if defined __WIN32__ || defined _WIN32 || defined WIN32
- mcmd_dword address;
- MODULEINFO info = { 0 };
- address = (mcmd_dword)GetModuleHandle(NULL);
- GetModuleInformation(GetCurrentProcess(), GetModuleHandle(NULL), &info, sizeof(MODULEINFO));
- size = (mcmd_dword)info.SizeOfImage;
- #else
- void *address;
- if((address = dlopen(NULL, 0)) == NULL)
- return 0;
- size = 0xFBEDA;
- #endif
- for(i = 0; i < size; i++)
- {
- printf("P1 %i\n", i);
- if(_mcmd_memory_compare((mcmd_byte *)(address + i), (mcmd_byte *)pattern, mask))
- return (mcmd_dword)(address + i);
- }
- return 0;
- }
- mcmd_inline int _mcmd_memory_compare(mcmd_byte *data, mcmd_byte *pattern, char *mask)
- {
- for(; *mask; ++mask, ++data, ++pattern)
- {
- printf("P2 0x%X 0x%X 0x%X", data, pattern, mask);
- if(*mask == 'x' && *data != *pattern)
- return 0;
- }
- return (*mask) == 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment