YARA字符串匹配

最近得知 一个开源的工程 YARA ,上网查了一下,获得一下资料

1、YARA——恶意软件模式匹配利器    http://sec.chinabyte.com/419/12863919.shtml


2、http://yara.readthedocs.io/en/v3.5.0/capi.html#c.yr_rules_scan_file


WINDOWS 使用VS2015进行编译


YARA是一款识别和分类恶意软件样本的开源扫描引擎,yara本身不提供杀毒软件的其他功能(比如自动更新、守护进程等),也没有维护自己的特征库,所以它只是个引擎而已。


也可用于文本处理,查找敏感信息;


优点:规则配置灵活,匹配速率高,跨平台


以下是WINDOS 的示例代码 C++


#include
#include
#include"include\yara.h"

using namespace std;

#pragma comment(lib, "libyara64.lib")

int callback_function(
	int message,
	void* message_data,
	void* user_data)
{
	cout << "message = " << message << endl;
	if (1 == message)
	{
		YR_RULE* temp = (YR_RULE*)message_data;
		if (temp)
		{
			for (size_t i = 0; i < MAX_THREADS; i++)
			{
				if (temp->strings->matches[i].count > 0)
				{
					struct _YR_MATCH* tempStru = temp->strings->matches[i].head;
					while (tempStru)
					{
						cout << tempStru->data << endl;
						tempStru = tempStru->next;
					}
				}
				else
				{
					break;
				}
			}
		}
		cout<<"identifier"<identifier<     condition:
    $text_string
}


=== 注意 ===


1、规则文件不可以是 UTF-8 编码,否则调用 yr_compiler_add_file 失败,返回错误码:1


2、规则中定义的变量必须全部引用, 否则调用 yr_compiler_add_file 失败,返回错误码:1


3、输出所有匹配,则condition 条件的变量使用 # 符号



你可能感兴趣的:(C/C++)