YaraSharp
1.0.0
C# Обертка вокруг библиотеки сопоставления рисунков Yara.
Используйте подписи с Loki или Yara.
Доступен пакет Nuget
// All API calls happens here
YSInstance YSInstance = new YSInstance ( ) ;
// Declare external variables (could be null)
Dictionary < string , object > externals = new Dictionary < string , object > ( )
{
{ "filename" , string . Empty } ,
{ "filepath" , string . Empty } ,
{ "extension" , string . Empty }
} ;
// Get list of YARA rules
List < string > ruleFilenames = Directory . GetFiles ( @"D:Testyara" , "*.yar" , SearchOption . AllDirectories ) . ToList ( ) ;
// Context is where yara is initialized
// From yr_initialize() to yr_finalize()
using ( YSContext context = new YSContext ( ) )
{
// Compiling rules
using ( YSCompiler compiler = instance . CompileFromFiles ( ruleFilenames , externals ) )
{
// Get compiled rules
YSRules rules = compiler . GetRules ( ) ;
// Get errors
YSReport errors = compiler . GetErrors ( ) ;
// Get warnings
YSReport warnings = compiler . GetWarnings ( ) ;
// Some file to test yara rules
string Filename = @"" ;
// Get matches
List < YSMatches > Matches = instance . ScanFile ( Filename , rules ,
new Dictionary < string , object > ( )
{
{ "filename" , Alphaleonis . Win32 . Filesystem . Path . GetFileName ( Filename ) } ,
{ "filepath" , Alphaleonis . Win32 . Filesystem . Path . GetFullPath ( Filename ) } ,
{ "extension" , Alphaleonis . Win32 . Filesystem . Path . GetExtension ( Filename ) }
} ,
0 ) ;
// Iterate over matches
foreach ( YSMatches Match in Matches )
{
//...
}
}
// Log errors
}Для использования асинхронного сканирования следует назвать методы уничтожения:
YaraSharp . CYaraSharp YSInstance = new CYaraSharp ( ) ;
YaraSharp . CContext YSContext = new YaraSharp . CContext ( ) ;
YaraSharp . CRules YSRules = YSInstance . CompileFromFiles ( RuleFilenames , null , out Errors ) ;
// Async here
YSRules . Destroy ( ) ;
YSContext . Destroy ( ) ; Документация API Libyara C для общего обзора о том, как использовать Libyara.
Soultion содержит 2 проекта:
Построить в VS 2017
Скомпилирован с Yara 3.8.1
Яра исправлена для поддержки путей Unicode
Вы можете использовать или изменить источники, как хотите
Особая спасибо Kallanreed