在某些内存区域中查找字节模式
我想在某些内存范围中搜索特定的字节模式。因此,我的方法是使用 Boyer-Moore-Horspool 算法构建一个函数
void * FindPattern (std::vector<byte> pattern, byte wildcard,
void * startAddress, void * endAddress);
来查找内存范围中的模式。
wildcard
字节保留一些应被视为通配符的特定字节。 因此 - 例如 - 如果 wildcard
是 0xCC
,则 pattern
中的每个 0xCC
都将是通配符。
该函数应返回内存范围的开头,即第一次找到模式的位置。
我现在的问题是:最常见的库中是否已经完成了一些类似的功能,或者我是否必须自己实现这个功能?
I want to search some memory range for a specific byte pattern. Therefore, my approach is to build a function
void * FindPattern (std::vector<byte> pattern, byte wildcard,
void * startAddress, void * endAddress);
using the Boyer-Moore-Horspool algorithm to find the pattern in the memory range.
The wildcard
byte stays for some specific byte which should be treated as a wildcard.
So - for example - if wildcard
is 0xCC
, every 0xCC
in pattern
will be a wildcard.
The function should return the start of the memory range, where the pattern was found the first time.
My question is now: is there some similar function already done in the most common libraries or do I have to implement this for my own?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
BMH 上的维基百科页面有一个实现。我认为 Boost xpressive 也是基于 BMH(的一个变体)。
The Wikipedia page on BMH has an implementation. I think that Boost xpressive is also based on (a variant of) BMH.
不,似乎除了原始内存之外,甚至没有像“strstr”这样的函数。更不用说通配符了!
No, it seems there isn't even a function like 'strstr' but for raw memory. Let alone wildcards!