Create your own..
Then you will understand
This is a basic function i just coded up for you 
Code:
DWORD PatterScan(Byte Patter[], char Mask[], DWORD StartAdress)
{
DWORD Offset;
Byte A;
Byte B;
int i;
DWORD SizeOf = sizeof(Patter);
if (StartAdress == 0)
Offset = BaseAddr;
else
Offset = BaseAddr + StartAdress;
for(int x=BaseAddr; x < 0xFFFFFFFF; x++, Offset++)
{
if (i == SizeOf)
return (Offset-BaseAddr-i);
ReadByte(Offset, &A);
if(Mask[i] == '?')
B = A;
else
B = Patter[i];
if(A == B)
i++;
else
i = 0;
}
return 1;
}
All you would do is send it an array for chars, aka you string and then the mask. The mask is only used if value could change.
example:
Code:
BYTE fly1x[]={0xF7,0x41,0x44,0x00,0x02,0x00,0x20,0x75,0x34,0xF7,0x41,0x44,0x00,0x00,0x10,0x01,0x75};
char fly1y[]={'x' ,'x' ,'x' ,'?' ,'?' ,'?' ,'?' ,'x' ,'?' ,'x' ,'x' ,'x' ,'?' ,'?' ,'?' ,'?' ,'x'};
DWORD AdressX[100];
AdressX[0]=0;
int x=0;
do
{
x++;
AdressX[x] = wow.PatterScan(fly1x,fly1y, (AdressX[x-1]+1));
MessageBox::Show("Fly1 Offset x:" + AdressX[x]);
}while(AdressX[x] != 1);
But you would use all X. Hope this helps.. if not.. ill try again