diff --git a/src/patcherex2/components/binary_analyzers/angr.py b/src/patcherex2/components/binary_analyzers/angr.py index 46f845b..c3ad336 100644 --- a/src/patcherex2/components/binary_analyzers/angr.py +++ b/src/patcherex2/components/binary_analyzers/angr.py @@ -14,6 +14,7 @@ def __init__(self, binary_path: str, **kwargs) -> None: self.binary_path = binary_path # self.use_pickle = kwargs.pop("use_pickle", False) # TODO: implement this self.angr_kwargs = kwargs.pop("angr_kwargs", {}) + self.angr_cfg_kwargs = kwargs.pop("angr_cfg_kwargs", {}) self._p = None self._cfg = None self._load_base = None @@ -48,9 +49,9 @@ def p(self) -> angr.Project: def cfg(self) -> angr.analyses.cfg.cfg_fast.CFGFast: if self._cfg is None: logger.info("Generating CFG with angr") - self._cfg = self.p.analyses.CFGFast( - normalize=True, data_references=True, force_complete_scan=False - ) + if "normalize" not in self.angr_cfg_kwargs: + self.angr_cfg_kwargs["normalize"] = True + self._cfg = self.p.analyses.CFGFast(**self.angr_cfg_kwargs) logger.info("Generated CFG with angr") return self._cfg diff --git a/src/patcherex2/targets/ihex_ppc_bare.py b/src/patcherex2/targets/ihex_ppc_bare.py index a32afe7..602d391 100644 --- a/src/patcherex2/targets/ihex_ppc_bare.py +++ b/src/patcherex2/targets/ihex_ppc_bare.py @@ -60,6 +60,12 @@ def get_binary_analyzer(self, binary_analyzer): "auto_load_libs": False, "load_debug_info": True, }, + angr_cfg_kwargs={ + "normalize": True, + "data_references": True, + "force_smart_scan": False, + "force_complete_scan": False, + }, ) raise NotImplementedError()