江南でjsunpack-n(五)を研究する


今日はその「プログラムプロジェクト管理」の試験に一日中元気も気持ちもなくjsunpackをしました.いいでしょう.やはり努力しなければなりません.
「大衆の顔にも春がある」を見て、笑いました!
===============================================================
今日はYARA文法の残りの部分を勉強しましょう.
6. Includes
cに似た#include
include"other.yar"include"./includes/other.yar"include"../includes/other.yar"include"/home/plusvic/yara/includes/other.yar"windowsでは、次のこともできます.
include "c:/yara/includes/other.yar"include "c:\\yara\\includes\\other.yar"
7. Using YARA from command-line
usage: yara [OPTION]... [RULEFILE]... FILE | PID

options:

-t <tag>                                        print rules tagged as <tag> and ignore the rest.
-i <identifier>                                 print rules named <identifier> and ignore the rest.
-n                                              print only not satisfied rules (negate).
-g                                              print tags.
-m                                              print metadata.
-s                                              print matching strings.
-l <number>                                     abort scanning after a <number> of rules matched.
-d <identifier>=<value>                         define external variable.
-r                                              recursively search directories.
-f                                              fast matching mode.
-v                                              show version information.

8. Using YARA from Python
プログラムなどに例をあげたりします.の見れば真似できる.
Ps:まずyara-python環境をインストールする
import yara//yaraを使う
rule:rules=yaraをコンパイルします.compile(filepath='/foo/bar/myrules')/rules rules=yaraをコンパイルする.compile('/foo/bar/myrules')/filepathを追加する必要はありません.デフォルトのfh=open('/foo/bar/myrules')/この形式でもいいですよ~rules=yara.compile(file=fh) fh.close()
これは直接コンパイルして書かれたruleです.
rules = yara.compile(source='rule dummy { condition: true }')
複数rule(filepaths and sources):
rules = yara.compile(filepaths={
'namespace1':'/my/path/rules1', 'namespace2':'/my/path/rules2' })
rules = yara.compile(sources={
'namespace1':'rule dummy { condition: true }', 'namespace2':'rule dummy { condition: false }'
})
コンパイル、検出されたソースファイルがincludeコマンドを使用するとエラーが表示されます
rules = yara.compile('/foo/bar/myrules', includes=False)
コンパイル時に外部変数に値を割り当てます(外部変数(externals parameter)を覚えていますか?)
rules = yara.compile( '/foo/rules',                                   externals= {                                       'var1': 'some string',                                       'var2': 4,                                       'var3': True })
match関数とそのcallback関数:
import yara def mycallback(data): print data yara.CALLBACK_CONTINUE
matches = rules.match('/foo/bar/myfile', callback=mycallback)
Ps:callbackはmatch関数が呼び出されるたびに自動的に呼び出される関数です.
The passed dictionary will be something like this:{'tags':['foo','bar'],'matches':True,'namespace':'default','rule':'my_rule','meta':{},'strngs':[(81,'$a','abc'),(141,'$b','def')]}YARAのやり方をまとめます.
(1)compile関数を用いて,1つのRuleを返すクラスインスタンスruleをコンパイルする.
(2)match関数を用いて,マッチして1つのMatchを返すクラスインスタンスmatch
(3)matchの内容を見て欲しい結果が得られる