You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Regex与Yara规则编写咨询:路径匹配正则表达式问题

嘿,我来帮你搞定这几个Yara规则里的正则问题!针对你提到的三个场景,我逐个拆解正确的写法,顺便解释细节,方便你理解复用:

场景1:匹配以C:\Program Files\或C:\Program Files\Microsoft Office\开头、以excel.exe结尾的路径

Yara使用PCRE兼容的正则,所以Windows路径里的反斜杠\需要转义成\\。这里的核心是处理可选的Microsoft Office子目录,同时匹配中间任意层级的目录:

^C:\\Program Files(?:\\Microsoft Office)?\\.*\\excel\.exe$

拆解下关键部分:

  • ^:锚定字符串开头,确保路径从指定前缀开始,避免匹配到路径中间的片段
  • (?:\\Microsoft Office)?:非捕获可选组,?表示这个子目录是可选的,既匹配带Office的路径,也匹配不带的
  • \\.*\\:匹配中间任意数量的目录层级(.*表示任意字符序列,直到遇到最后一个\)
  • excel\.exe$:锚定字符串结尾,转义.是因为正则里.代表任意字符,确保精准匹配文件名

对应的Yara规则示例:

rule Match_Target_Excel_Paths {
    strings:
        $valid_excel_path = /^C:\\Program Files(?:\\Microsoft Office)?\\.*\\excel\.exe$/ fullword
    condition:
        $valid_excel_path
}

fullword修饰符确保匹配的是完整的路径字符串,不会被其他无关字符截断。

场景2:匹配任意路径下的dnx.exe

这个需求很简单,只要确保文件名是dnx.exe,前面可以是任意路径(包括直接在根目录或当前目录的情况):

.*\\dnx\.exe$

如果要兼容没有盘符的相对路径,或者直接运行的dnx.exe,也可以简化成:

dnx\.exe$

对应的Yara规则示例:

rule Match_Any_Dnx_Path {
    strings:
        $dnx_path = /.*\\dnx\.exe$/ fullword
    condition:
        $dnx_path
}
场景3:匹配C:\Program Files\Microsoft Office\*\client\appvlp.exe(*为任意单个目录)

这里的*代表单个目录层级,所以用[^\\]+来匹配(表示不包含反斜杠的任意字符序列,刚好对应一个目录名):

^C:\\Program Files\\Microsoft Office\\[^\\]+\\client\\appvlp\.exe$

如果*允许是任意数量的目录层级(比如中间有多个子目录),就把[^\\]+换成.*:

^C:\\Program Files\\Microsoft Office\\.*\\client\\appvlp\.exe$

对应的Yara规则示例:

rule Match_Appvlp_Target_Path {
    strings:
        $appvlp_path = /^C:\\Program Files\\Microsoft Office\\[^\\]+\\client\\appvlp\.exe$/ fullword
    condition:
        $appvlp_path
}

额外小提示

  • Yara正则默认不区分大小写,如果需要严格区分,可以在正则后加/i修饰符(比如/^C:\\...$/i)
  • 如果路径里可能出现转义字符或者不同的分隔符,根据实际捕获的样本调整正则的宽松度

内容的提问来源于stack exchange,提问作者dipl0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:20:55