Go绑定yara静态编译无依赖恶意代码扫描工具

 1. yara环境搭建

 sudo apt-get install automake libtool make gcc pkg-config

wget https://github.91chifun.workers.dev/VirusTotal/yara/archive/refs/tags/v4.1.1.tar.gz

tar -zxvf v4.1.1.tar.gz  
 cd yara-4.1.1/
./bootstrap.sh 
./configure --disable-shared --enable-static --without-crypto
make && make install
cp /usr/local/lib/pkgconfig/yara.pc   /usr/lib64/pkgconfig 

export YARA_SRC=/opt/src/yara-4.1.1
export CGO_CFLAGS="-I${YARA_SRC}/libyara/include"
export CGO_LDFLAGS="-L${YARA_SRC}/libyara/.libs -lyara -lm"

go get github.com/hillu/go-yara/v4

 2. 编写测试文件 test.go

package main

import (
	yara "github.com/hillu/go-yara/v4"
	"io/ioutil"
	"os"
	"fmt"
)

func main() {
	rule := "rule test : tag1 { meta: author = \"Matt Blewitt\" strings: $a = \"abc\" fullword condition: $a }"
	c, err := yara.NewCompiler()
	if c == nil || err != nil {
		return
	}
	if err = c.AddString(rule, ""); err != nil {
		return
	}
	r, err := c.GetRules()
	if err != nil {
		return
	}
	s, err := yara.NewScanner(rules)
	if err != nil {
		return
	}
	tf, _ := ioutil.TempFile("", "TestScannerSimpleFileMatch")
	defer os.Remove(tf.Name())
	tf.Write([]byte(" abc "))
	tf.Close()
	var m yara.MatchRules
	if err := s.SetCallback(&m).ScanFile(tf.Name()); err != nil {
		return
	} else if len(m) != 1 {
		return
	}
	fmt.Printf("Matches: %+v", m)
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值