Yara规则与C语言语法十分相像, 以下是一个简单的规则, 这个规则没有进行任何操作:
规则标识符
规则标识符是上面简单规则示例中跟在后的词, 比如单词”dummy”也可以是一个规则标识符, 标识符命名有如下要求:
- 是由英文字母或数字组成的字符串
- 可以使用下划线字符
- 第一个字符不能是数字
- 对大小写敏感
- 不能超出128个字符长度
Yara关键字
下面这些词不能用作规则标识符, 因为这些单词在yara语言里有特定用处
all, and, any, ascii, at, condition, contains entrypoint, false, filesize, fullword, for, global, in import, include, int8, nt16, int32, int8be, int16be int32be, matches, meta, nocase, not, or, of private, rule, strings, them, true, uint8, uint16 uint32, int8be, uint16be, uint32be, wide
通常yara规则有两部分: 字符串定义和条件
当发现有规则里定义的任意字符串, 规则就会生效. 如你所见, 你还可以在规则里添加注释.
十六进制字符串
通配符
十六进制字符串可以用通配符表示, 通配符符 用”表示
这个规则可以匹配下面的两个字符串
EF 44 01 D8 AA FB
EF 44 AA D8 AB FB
不定长通配符
不定长的字符串可以用下面这个方法表示
这个规则可以匹配下面的两个字符串
F4 23 01 02 03 04 62 B4
F4 23 AA BB CC DD EE FF 62 B4
当然无限长的字符串也是可以的.
这个规则可以匹配下面的两个字符串
F4 23 AA FF 62 B4
F4 23 AA AA AA AA AA…FF FF 62 B4
有条件的字符串
你可以创建一个字符串应对多种情况
这个规则可以匹配下面的两个字符串
BA 21 DA BC A5
BA 21 C6 A5
混合
当然, 你也可以将上面这几种方法结合起来.
这个规则可以匹配下面的三个字符串
BA 01 DA 01 02 03 04 A5
BA AA C6 A5
BA FF DA 01 02 A5
文本字符串
除开使用十六进制字符串, 我们也还可以使用文本字符串
你也可以像C语言那样使用如下的转义符:
” 双引
\ 反斜杠
t 水平制表符
n 换行符
xdd 以十六进制表示的任何字节
修饰符
不区分大小写的字符串
Yara规则默认对大小写敏感
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!