1. Time
Time模块允许用户在编写Yara规则时使用时间作为规则的一部分。
下面是Time模块支持的方法:
名称 | 类型 | 描述 |
time.now() | 方法 | 获取当前时间,此函数返回一个整形值,表示从1970年1月1日开始距离现在时间的秒数。 使用示例如下: pe.timestamp > time.now() |
2. Console
Console模块允许Yara在执行条件块时向终端(默认情况下是stdout)输出一些用户自定义日志信息。因此Console模块所支持的方法都在条件块中,因此模块中每个函数的返回均为true。
Console模块使用示例如下:
import "console"
rule example
{
condition:
console.log("Hello") and console.log("World!")
}
下面是Console模块支持的方法:
名称 | 类型 | 描述 |
console.log(string) | 方法 | 此方法将指定字符串发送到Console或者回调函数中(回调函数是通过libyara注册函数注册的回调接口)。 使用示例如下: console.log(hash.md5(0, filesize)) |
console.log(message, string) | 方法 | 此方法返回消息和字符串到Console或者回调函数中(回调函数是通过libyara注册函数注册的回调接口)。 使用示例如下: console.log("This is file md5:",hash.md5(0, filesize)) |
console.log(integer) | 方法 | 此方法将指定整型值发送到Console或者回调函数中(回调函数是通过libyara注册函数注册的回调接口)。 使用示例如下: console.log(time.now()) |
console.log(message, integer) | 方法 | 此方法返回消息和整型值到Console或者回调函数中(回调函数是通过libyara注册函数注册的回调接口)。 使用示例如下: console.log("This is time now:",time.now()) |
console.log(float) | 方法 | 此方法将指定浮点型值发送到Console或者回调函数中(回调函数是通过libyara注册函数注册的回调接口)。 使用示例如下: console.log(math.entropy(0, filesize)) |
console.log(message, float) | 方法 | 此方法返回消息和浮点型值到Console或者回调函数中(回调函数是通过libyara注册函数注册的回调接口)。 使用示例如下: console.log("This is file entropy:", math.entropy(0, filesize)) |
console.hex(integer) | 方法 | 此方法将指定整型值的十六进制发送到Console或者回调函数中(回调函数是通过libyara注册函数注册的回调接口)。 使用示例如下: console.log(uint32(0)) |
console.hex(message, integer) | 方法 | 此方法返回消息和整型值的十六进制发到Console或者回调函数中(回调函数是通过libyara注册函数注册的回调接口)。 使用示例如下: console.log("This is hex:",uint32(0)) |
3. String
String模块允许在Yara规则中使用此模块函数对一些给定字符串进行转化或计算。需要注意的是,String模块支持的字符串转化不是Yara规则中字符串块中所包含的字符串。
下面是String模块支持的方法:
名称 | 类型 | 描述 |
string.to_int(string) | 方法 | 此方法将给定的字符串转换为有符号整形。如果字符串以"0x"开头,则默认视为16进制。如果字符串以"0"开头,则默认视为8进制。此方法还支持字符串以"+"或"-"开头。 使用示例如下: string.to_int("1234") == 1234 string.to_int("-10") == -10 string.to_int("-010") == -8 |
string.to_int(string, base) | 方法 | 此方法将给定的字符串转换成有符号整形,此外,此函数需要用户给定待转换的字符串的进制类型。参数base标识进制类型,此参数值规定范围为0或者2到36之间。如果base参数为0,则此方法根据字符串格式自动匹配进制类型,如果字符串以"0x"开头,则默认视为16进制。如果字符串以"0"开头,则默认视为8进制。此方法还支持字符串以"+"或"-"开头。 使用示例如下: string.to_int("011", 8) == 9 string.to_int("-011", 0) == -9 |
string.length(string) | 方法 | 此方法规返回指定字符串的长度,字符串可以是任意序列,包括NULL字节。 使用示例如下: string.length("只道那时是寻常") == 21 string.length("zhidaonashishixunchang") == 22 |