编写匹配指定前缀字符串数量条件的Yara规则遇编译问题
YARA规则批量匹配前缀命名字符串的正确写法
你原来的写法无法编译,核心问题是YARA不支持用$var*这种通配符前缀来引用一组字符串变量,属于无效语法。要实现“$rrr存在且$var前缀的字符串匹配数超过2个”的需求,可用以下两种写法:
方法一:使用count of统计匹配数量
rule MatchMultipleVars { $rrr = "shell" $var1 = "cheese" $var2 = "beef" $var3 = "chicken" condition: $rrr and (count of ($var1, $var2, $var3) > 2) }
count of ($var1, $var2, $var3)会统计括号内字符串的匹配成功次数,当次数大于2(即3个字符串全部匹配)时,结合$rrr存在的条件,规则触发。- 后续新增
$var4、$var5等字符串时,只需将它们添加到count of的括号列表中即可。
方法二:使用for循环判断匹配数量
rule MatchMultipleVars { $rrr = "shell" $var1 = "cheese" $var2 = "beef" $var3 = "chicken" condition: $rrr and (for 3 of ($var1, $var2, $var3): it matches) }
for 3 of (...)表示括号内的字符串中至少有3个匹配成功,和count > 2的逻辑完全一致,写法更直观。
内容的提问来源于stack exchange,提问作者SpookKook
相关产品推荐
相关产品推荐

