from binaryninja import *
import base64
import copy
import json
def falcon_export(bv) :
filename = interaction.get_save_filename_input("Filename for Binja export")
segments = []
for segment in bv.segments :
segments.append({
'address': segment.start,
'bytes': base64.b64encode(bv.read(segment.start, segment.length))
})
functions = []
for function in bv.functions :
functions.append({
'name': function.name,
'address': function.start,
})
fh = open(filename, 'wb')
fh.write(json.dumps({
'functions': functions,
'segments': segments,
'arch': bv.arch.name,
'entry': bv.entry_point
}))
fh.close()
PluginCommand.register("Export for Falcon",
"Export disassembly information for Falcon",
falcon_export)