YARA:第十二章-模块使用之Time、Console和String

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

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_只道当时是寻常

打赏不得超过工资的一半呦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值