diff --git a/RevokeMsgPatcher.Assistant/Matcher/FuzzyMatcher.cs b/RevokeMsgPatcher.Assistant/Matcher/FuzzyMatcher.cs
new file mode 100644
index 0000000..3ecf417
--- /dev/null
+++ b/RevokeMsgPatcher.Assistant/Matcher/FuzzyMatcher.cs
@@ -0,0 +1,105 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace RevokeMsgPatcher.Assistant.Matcher
+{
+ ///
+ /// 对16进制数据进行模糊查找
+ /// 通配符的方式
+ ///
+ public class FuzzyMatcher
+ {
+ public const byte wildcard = 0x3F; // 通配符
+
+ ///
+ /// 模糊匹配所有
+ ///
+ /// 被查找对象
+ /// 查找串
+ ///
+ public static int[] MatchAll(byte[] content, byte[] pattern)
+ {
+ byte[] head = GetHead(pattern);
+ int[] indexs = BoyerMooreMatcher.MatchAll(content, head);
+ // 头串和查找串相同则直接返回,不同则继续判断是否符合查询串
+ if (head.Length == pattern.Length)
+ {
+ return indexs;
+ }
+ else
+ {
+ List res = new List();
+ foreach (int index in indexs)
+ {
+ if (IsEqual(content, index, pattern))
+ {
+ res.Add(index);
+ }
+ }
+ if (res.Count > 0)
+ {
+ return res.ToArray();
+ }
+ else
+ {
+ return null;
+ }
+ }
+ }
+
+ ///
+ /// 获取头串
+ ///
+ /// 完整查找串
+ ///
+ private static byte[] GetHead(byte[] whole)
+ {
+ int len = whole.Length;
+ for (int i = 0; i < whole.Length; i++)
+ {
+ if (whole[i] == wildcard)
+ {
+ len = i;
+ break;
+ }
+ }
+ if (len == 0)
+ {
+ throw new Exception("不正确的通配符位置!");
+ }
+ return whole.Take(len).ToArray();
+ }
+
+ ///
+ /// 确认整个查找串是否匹配
+ ///
+ /// 被查找对象
+ /// 头串匹配位置
+ /// 完整查找串
+ ///
+ private static bool IsEqual(byte[] content, int start, byte[] whole)
+ {
+ int i = 0;
+ for (i = 0; i < whole.Length; i++)
+ {
+ if (whole[i] == wildcard)
+ {
+ continue;
+ }
+ if (content[start + i] != whole[i])
+ {
+ break;
+ }
+ }
+ if (i == whole.Length)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+}
diff --git a/RevokeMsgPatcher.Assistant/RevokeMsgPatcher.Assistant.csproj b/RevokeMsgPatcher.Assistant/RevokeMsgPatcher.Assistant.csproj
index 00c5ac4..a61f64c 100644
--- a/RevokeMsgPatcher.Assistant/RevokeMsgPatcher.Assistant.csproj
+++ b/RevokeMsgPatcher.Assistant/RevokeMsgPatcher.Assistant.csproj
@@ -69,6 +69,7 @@
+
@@ -97,12 +98,6 @@
-
-
- {977bf781-ced8-4389-9404-0fa08fdf21df}
- RevokeMsgPatcher
-
-
False
@@ -110,5 +105,11 @@
false
+
+
+ {977bf781-ced8-4389-9404-0fa08fdf21df}
+ RevokeMsgPatcher
+
+
\ No newline at end of file