mirror of
https://github.com/mandiant/capa.git
synced 2025-12-12 15:49:46 -08:00
some more changes
This commit is contained in:
@@ -24,6 +24,7 @@ Derived from: https://github.com/mandiant/capa/blob/master/scripts/import-to-ida
|
||||
"""
|
||||
import os
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
import binaryninja
|
||||
import binaryninja.interaction
|
||||
@@ -45,22 +46,23 @@ def append_func_cmt(bv, va, cmt):
|
||||
|
||||
|
||||
def load_analysis(bv):
|
||||
shortname = os.path.splitext(os.path.basename(bv.file.filename))[0]
|
||||
dirname = os.path.dirname(bv.file.filename)
|
||||
shortname = Path(bv.file.filename).resolve().stem
|
||||
dirname = Path(bv.file.filename).resolve().parent
|
||||
binaryninja.log_info(f"dirname: {dirname}\nshortname: {shortname}\n")
|
||||
if os.access(os.path.join(dirname, shortname + ".js"), os.R_OK):
|
||||
path = os.path.join(dirname, shortname + ".js")
|
||||
elif os.access(os.path.join(dirname, shortname + ".json"), os.R_OK):
|
||||
path = os.path.join(dirname, shortname + ".json")
|
||||
js_path = path = dirname / (shortname + ".js")
|
||||
json_path = dirname / (shortname + ".json")
|
||||
if os.access(str(js_path), os.R_OK):
|
||||
path = js_path
|
||||
elif os.access(str(json_path), os.R_OK):
|
||||
path = json_path
|
||||
else:
|
||||
path = binaryninja.interaction.get_open_filename_input("capa report:", "JSON (*.js *.json);;All Files (*)")
|
||||
if not path or not os.access(path, os.R_OK):
|
||||
if not path or not os.access(str(path), os.R_OK):
|
||||
binaryninja.log_error("Invalid filename.")
|
||||
return 0
|
||||
binaryninja.log_info(f"Using capa file {path}")
|
||||
|
||||
with open(path, "rb") as f:
|
||||
doc = json.loads(f.read().decode("utf-8"))
|
||||
doc = json.loads(path.read_bytes().decode("utf-8"))
|
||||
|
||||
if "meta" not in doc or "rules" not in doc:
|
||||
binaryninja.log_error("doesn't appear to be a capa report")
|
||||
|
||||
Reference in New Issue
Block a user