提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本篇参照官网规则,将yara语法总结如本文部分
一、字符串规则
1.字符串之16进制字符串,用于定义原始字节序列
//通配符:可以用来代替某些未知的字节,并与人和内容匹配
rule WildcardExample
{
strings:
//使用'?'作为通配符,一个?代表一位
$hex_string = { 00 11 ?? 33 4? 55}
condition:
$hex_string
}
//跳转:可以匹配长度可以变化的字符串
rule JumpExample
{
strings:
//使用'[]'作为跳转,与任何长度为0~n字节的内容匹配
$hex_string1 = { 00 11 [n] 44 55 }
$hex_string2 = { 00 11 [0-n] 44 55 }
//实例,string3和string4完全相同
$hex_string3 = { 00 11 [0-2] 44 55 }
$hex_string4 = { 00 11 ?? ?? 44 55 }
condition:
$hex_string1 or $hex_string2
}
//也可以使用类似正则表达式的方法
rule AlternativeExample
{
strings:
$hex_string = { 00 11 ( 22 | 33 44 ) 55 }
/*
该表达式可以匹配一下内容:
00 11 22 55
或 00 11 33 44 55
*/
condition:
¥hex_string
}
//方法整合
rule AlternativeExample2
{
string2:
$hex_string = { 00 11 ( 33 44 | 55 | 66 ?? 88 ) 99 }
condition:
&hex_string
}
2 文本字符串:定义可读文本部分
/*
转义符号:
\" //双引号
\\ //反斜杠
\t //制表符
\n //换行符
\xdd //十六进制的任何字节
修饰符:
nocase: 不区分大小写
wide: 匹配2字节的宽字符
ascii: 匹配1字节的ascii字符
xor: 匹配异或后的字符串
fullword:匹配完整单词
private: 定义私有字符