angr.angrdb.serializers.cfg_model 源代码

# pylint:disable=unused-import
from __future__ import annotations
from angr.angrdb.models import DbCFGModel
from angr.knowledge_plugins.cfg.cfg_model import CFGModel


[文档] class CFGModelSerializer: """ Serialize/unserialize a CFGModel. """
[文档] @staticmethod def dump(session, db_kb, ident, cfg_model): """ :param session: :param DbKnowledgeBase db_kb: The database object for KnowledgeBase. :param str ident: Identifier of the CFG model. :param CFGModel cfg_model: The CFG model to dump. :return: None """ db_cfg_id = session.query(DbCFGModel.id).filter_by(ident=ident).scalar() if db_cfg_id is not None: # remove the existing CFG session.query(DbCFGModel).filter_by(id=db_cfg_id).delete() db_cfg = DbCFGModel( kb=db_kb, ident=ident, blob=cfg_model.serialize(), ) session.add(db_cfg)
[文档] @staticmethod def load(session, db_kb, ident, cfg_manager, loader=None): db_cfg: DbCFGModel = session.query(DbCFGModel).filter_by(kb=db_kb, ident=ident).scalar() if db_cfg is None: return None return CFGModel.parse(db_cfg.blob, cfg_manager=cfg_manager, loader=loader)