bool bDataCompare(const unsigned char* pData, const unsigned char* bMask, const char* szMask) { for(;*szMask;++szMask,++pData,++bMask) if(*szMask=='x' && *pData!=*bMask ) return false; return (*szMask) == 0; } unsigned long dwFindPattern( unsigned char *bMask,char * szMask, unsigned long dw_Address = dwStartAddress, unsigned long dw_Len = dwLen ) { for(unsigned long i=0; i < dw_Len; i++) if( bDataCompare( (unsigned char*)( dw_Address+i ),bMask,szMask) ) return (unsigned long)(dw_Address+i); return 0; }