zoukankan      html  css  js  c++  java
  • 带通配的BM Search (只使用了坏字符表)

    // -------------------------------------------------------------------------
    // 函数		: BM_SearchPackSign
    // 功能		: 
    // 返回值	        : PBYTE 
    // 参数		: PBYTE pBuf
    // 参数		: int nBufLen
    // 参数		: BYTE *pbySignBuf
    // 参数		: int nSignSize
    // 参数		: BYTE Mask
    // 附注		: 
    // -------------------------------------------------------------------------
    int KFileTypeAnalyze::BM_SearchPackSign(unsigned char* pBuf, int nBufLen, unsigned char* pbySignBuf, int nSignLen, unsigned char Mask)
    {
    	int		BM_count = 0;
    	int		BadCharater[256];		
    
    	for(int i = nSignLen-1; i>=0; i--)
    	{
    		if(pbySignBuf[i] == Mask)
    			break;
    		BM_count++;
    	}
    
    	for(int i=0; i<256; i++)
    	{
    		BadCharater[i] = BM_count;
    	}
    
    	for(int i=nSignLen-BM_count; i<nSignLen-1; i++)
    	{
    		BadCharater[pbySignBuf[i]] = nSignLen-i-1;
    	}
    
    	int p = 0;
    	int nSkip = 0;
    	while(p<=nBufLen-nSignLen)
    	{
    		for(int j=nSignLen-1; j>=0; j--)
    		{
    			if(pbySignBuf[j] == Mask)
    			{
    				if(j==0)
    					return p;
    				continue;
    			}
    
    			if(pbySignBuf[j] != pBuf[p+j])
    			{
    				if(nSignLen-j-1 < BM_count)
    				{
    					nSkip = BadCharater[pBuf[p+j]]-(nSignLen-j-1);
    					if(nSkip <= 0)
    						nSkip = 1;
    					p += nSkip;
    				}
    				else
    				{
    					p += 1;
    				}
    
    				break;
    			}
    
    			if(j==0)
    			{
    				return p;
    			}
    		}
    	}
    
    	return -1;
    }
    

      

  • 相关阅读:
    ubuntu安装Theano+cuda
    Deep Learning 学习笔记(9):主成分分析( PCA )与 白化( whitening )
    php 基础知识
    php 常用函数
    mysql 学习碎片
    Linux 学习碎片
    php 碎片笔记
    网络资源收集
    php 设计模式
    php 图片添加文字水印 以及 图片合成(微信快码传播)
  • 原文地址:https://www.cnblogs.com/whoiskevin/p/2577856.html
Copyright © 2011-2022 走看看