【发布时间】:2009-12-27 21:42:11
【问题描述】:
我想在一些内存范围内搜索特定的字节模式。因此,我的做法是构建一个函数
void * FindPattern (std::vector<byte> pattern, byte wildcard,
void * startAddress, void * endAddress);
使用 Boyer-Moore-Horspool 算法在内存范围内查找模式。
wildcard 字节保留用于应被视为通配符的某些特定字节。
因此 - 例如 - 如果 wildcard 是 0xCC,则 pattern 中的每个 0xCC 都将是一个通配符。
该函数应返回内存范围的开始,即第一次找到该模式的位置。
我现在的问题是:在最常见的库中是否已经完成了一些类似的功能,还是我必须自己实现?
【问题讨论】:
-
这里的“通配符”是什么意思?在某些解释中,通配符可能意味着零个或多个匹配,在其他定义中,它可能意味着一个或多个匹配。请澄清你的定义。
-
wild-card 在这种情况下是完全匹配的。所以,如果模式是 0x1337f00d 并且通配符设置为 0x37,它应该匹配 0x13??f00d 和 ??是一个任意字节。
标签: c++ memory pattern-matching