Mellnik

Untitled

Jun 20th, 2014
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. mcmd_dword mcmd_memory_scan(char *pattern, char *mask)
  2. {
  3.     mcmd_dword  i;
  4.     mcmd_dword  size;
  5. #if defined __WIN32__ || defined _WIN32 || defined WIN32
  6.     mcmd_dword  address;
  7.     MODULEINFO  info = { 0 };
  8.  
  9.     address = (mcmd_dword)GetModuleHandle(NULL);
  10.     GetModuleInformation(GetCurrentProcess(), GetModuleHandle(NULL), &info, sizeof(MODULEINFO));
  11.     size = (mcmd_dword)info.SizeOfImage;
  12. #else
  13.     void *address;
  14.    
  15.     if((address = dlopen(NULL, 0)) == NULL)
  16.         return 0;
  17.  
  18.     size = 0xFBEDA;
  19. #endif
  20.  
  21.     for(i = 0; i < size; i++)
  22.     {
  23.         printf("P1 %i\n", i);
  24.         if(_mcmd_memory_compare((mcmd_byte *)(address + i), (mcmd_byte *)pattern, mask))
  25.             return (mcmd_dword)(address + i);
  26.     }
  27.     return 0;
  28. }
  29.  
  30. mcmd_inline int _mcmd_memory_compare(mcmd_byte *data, mcmd_byte *pattern, char *mask)
  31. {
  32.     for(; *mask; ++mask, ++data, ++pattern)
  33.     {
  34.         printf("P2 0x%X 0x%X 0x%X", data, pattern, mask);
  35.         if(*mask == 'x' && *data != *pattern)
  36.             return 0;
  37.     }
  38.     return (*mask) == 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment