void *FindMemory( void *begin, unsigned int look_size,
unsigned char *search, unsigned int len )
{
if begin == NULL || look_size == 0 || search == NULL || len == 0 )
return NULL;
//begin search
bool isFound = false;
for( unsigned int i = 0; i < look_size; i++ )
{
if( *(unsigned char *)(begin + i ) == search[0] )
{
for( unsigned int j = 1; j < len; j++ )
{
if( *(unsigned char *)(begin + i + j ) == search[j] )
isFound = true;
else
{
isFound = false;
break;
}
}
}
if( isFound == true )
return (void *)( begin + i );
}
return NULL;
}
//Takes the found addr \\\'memory\\\' and writes the \\\'patch\\\' of length \\\'patch_len\\\' with a filler if the
//patch is less then the original memory contents \\\'filler\\\'
int PatchMemory( void *memory, int orig_size, unsigned char *patch, int patch_len, unsigned char filler )
{
if( puid == 0 || memory == NULL || orig_size == 0 || patch == NULL || patch_len == 0 )
return -1;
if( orig_size < patch_size )
return -10;
for( unsigned int i = 0; i < patch_len )
{
*(unsigned char *)( memory + i ) = *(unsigned char *)(patch + i );
}
if( orig_size > patch_len )
{
orig_size -= patch_len;
for( unsigned int i = 0; i < orig_size; i++ )
{
*(unsigned char *)( memory + patch_len + i + 1 ) = filler;
}
}
return 0;
}