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

发布于 2024-08-16 11:44:39 字数 478 浏览 5 评论 0原文

我想在某些内存范围中搜索特定的字节模式。因此,我的方法是使用 Boyer-Moore-Horspool 算法构建一个函数

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

来查找内存范围中的模式。

wildcard 字节保留一些应被视为通配符的特定字节。 因此 - 例如 - 如果 wildcard0xCC,则 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

荭秂 2024-08-23 11:44:39

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.

菊凝晚露 2024-08-23 11:44:39

不,似乎除了原始内存之外,甚至没有像“strstr”这样的函数。更不用说通配符了!

No, it seems there isn't even a function like 'strstr' but for raw memory. Let alone wildcards!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文