angr.angrdb.serializers.xrefs 源代码
# pylint:disable=unused-import
from __future__ import annotations
from angr.angrdb.models import DbXRefs
from angr.knowledge_plugins.xrefs import XRefManager
[文档]
class XRefsSerializer:
"""
Serialize/unserialize an XRefs object to/from a database session.
"""
[文档]
@staticmethod
def dump(session, db_kb, xrefs):
"""
:param session:
:param DbKnowledgeBase db_kb:
:param XRefManager xrefs:
:return:
"""
db_xrefs = db_kb.xrefs
blob = xrefs.serialize()
if db_xrefs is not None:
# update the existing xrefs
db_xrefs.blob = blob
else:
# create a new xrefs
db_xrefs = DbXRefs(kb=db_kb, blob=blob)
session.add(db_xrefs)
[文档]
@staticmethod
def load(session, db_kb, kb, cfg_model=None): # pylint:disable=unused-argument
"""
:param session:
:param DbKnowledgeBase db_kb:
:param KnowledgeBase kb:
:param CFGModel cfg_model:
:return:
"""
db_xrefs = db_kb.xrefs
if db_xrefs is None:
return None
return XRefManager.parse(db_xrefs.blob, cfg_model=cfg_model, kb=kb)