在某些内存区域中查找字节模式

时间:2009-12-27 21:42:12

标签: c++ memory pattern-matching

我想搜索特定字节模式的某些内存范围。因此,我的方法是构建一个函数

void * FindPattern (std::vector<byte> pattern, byte wildcard, 
    void * startAddress, void * endAddress);

使用Boyer-Moore-Horspool算法在存储器范围内找到模式。

wildcard字节保留一些特定字节,应该被视为通配符。 所以 - 例如 - 如果wildcard0xCC,则0xCC中的每个pattern都是通配符。

该函数应该返回内存范围的开始,第一次找到模式。

我现在的问题是:在最常见的库中是否已经完成了一些类似的功能,还是我必须自己实现这个功能?

2 个答案:

答案 0 :(得分:3)

BMH上的Wikipedia page有一个实现。我认为Boost xpressive也是基于BMH的(变体)。

答案 1 :(得分:1)

不,似乎甚至没有像'strstr'这样的函数,而是原始内存。更别说通配符了!