From c69b76dd1a7e1985f58f71c07dfc8b7b0657f57a Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Sat, 3 Aug 2019 22:40:47 -0400 Subject: Add data flow query options --- binaryninjaapi.h | 51 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 17 deletions(-) (limited to 'binaryninjaapi.h') diff --git a/binaryninjaapi.h b/binaryninjaapi.h index b4b9a602..ec512972 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -3625,21 +3625,29 @@ __attribute__ ((format (printf, 1, 2))) RegisterValue GetExprValue(size_t expr); RegisterValue GetExprValue(const LowLevelILInstruction& expr); - PossibleValueSet GetPossibleExprValues(size_t expr); - PossibleValueSet GetPossibleExprValues(const LowLevelILInstruction& expr); + PossibleValueSet GetPossibleExprValues(size_t expr, + const std::set& options = std::set()); + PossibleValueSet GetPossibleExprValues(const LowLevelILInstruction& expr, + const std::set& options = std::set()); RegisterValue GetRegisterValueAtInstruction(uint32_t reg, size_t instr); RegisterValue GetRegisterValueAfterInstruction(uint32_t reg, size_t instr); - PossibleValueSet GetPossibleRegisterValuesAtInstruction(uint32_t reg, size_t instr); - PossibleValueSet GetPossibleRegisterValuesAfterInstruction(uint32_t reg, size_t instr); + PossibleValueSet GetPossibleRegisterValuesAtInstruction(uint32_t reg, size_t instr, + const std::set& options = std::set()); + PossibleValueSet GetPossibleRegisterValuesAfterInstruction(uint32_t reg, size_t instr, + const std::set& options = std::set()); RegisterValue GetFlagValueAtInstruction(uint32_t flag, size_t instr); RegisterValue GetFlagValueAfterInstruction(uint32_t flag, size_t instr); - PossibleValueSet GetPossibleFlagValuesAtInstruction(uint32_t flag, size_t instr); - PossibleValueSet GetPossibleFlagValuesAfterInstruction(uint32_t flag, size_t instr); + PossibleValueSet GetPossibleFlagValuesAtInstruction(uint32_t flag, size_t instr, + const std::set& options = std::set()); + PossibleValueSet GetPossibleFlagValuesAfterInstruction(uint32_t flag, size_t instr, + const std::set& options = std::set()); RegisterValue GetStackContentsAtInstruction(int32_t offset, size_t len, size_t instr); RegisterValue GetStackContentsAfterInstruction(int32_t offset, size_t len, size_t instr); - PossibleValueSet GetPossibleStackContentsAtInstruction(int32_t offset, size_t len, size_t instr); - PossibleValueSet GetPossibleStackContentsAfterInstruction(int32_t offset, size_t len, size_t instr); + PossibleValueSet GetPossibleStackContentsAtInstruction(int32_t offset, size_t len, size_t instr, + const std::set& options = std::set()); + PossibleValueSet GetPossibleStackContentsAfterInstruction(int32_t offset, size_t len, size_t instr, + const std::set& options = std::set()); Ref GetMediumLevelIL() const; Ref GetMappedMediumLevelIL() const; @@ -3951,9 +3959,12 @@ __attribute__ ((format (printf, 1, 2))) RegisterValue GetSSAVarValue(const SSAVariable& var); RegisterValue GetExprValue(size_t expr); RegisterValue GetExprValue(const MediumLevelILInstruction& expr); - PossibleValueSet GetPossibleSSAVarValues(const SSAVariable& var, size_t instr); - PossibleValueSet GetPossibleExprValues(size_t expr); - PossibleValueSet GetPossibleExprValues(const MediumLevelILInstruction& expr); + PossibleValueSet GetPossibleSSAVarValues(const SSAVariable& var, size_t instr, + const std::set& options = std::set()); + PossibleValueSet GetPossibleExprValues(size_t expr, + const std::set& options = std::set()); + PossibleValueSet GetPossibleExprValues(const MediumLevelILInstruction& expr, + const std::set& options = std::set()); size_t GetSSAVarVersionAtInstruction(const Variable& var, size_t instr) const; size_t GetSSAMemoryVersionAtInstruction(size_t instr) const; @@ -3963,16 +3974,22 @@ __attribute__ ((format (printf, 1, 2))) RegisterValue GetRegisterValueAtInstruction(uint32_t reg, size_t instr); RegisterValue GetRegisterValueAfterInstruction(uint32_t reg, size_t instr); - PossibleValueSet GetPossibleRegisterValuesAtInstruction(uint32_t reg, size_t instr); - PossibleValueSet GetPossibleRegisterValuesAfterInstruction(uint32_t reg, size_t instr); + PossibleValueSet GetPossibleRegisterValuesAtInstruction(uint32_t reg, size_t instr, + const std::set& options = std::set()); + PossibleValueSet GetPossibleRegisterValuesAfterInstruction(uint32_t reg, size_t instr, + const std::set& options = std::set()); RegisterValue GetFlagValueAtInstruction(uint32_t flag, size_t instr); RegisterValue GetFlagValueAfterInstruction(uint32_t flag, size_t instr); - PossibleValueSet GetPossibleFlagValuesAtInstruction(uint32_t flag, size_t instr); - PossibleValueSet GetPossibleFlagValuesAfterInstruction(uint32_t flag, size_t instr); + PossibleValueSet GetPossibleFlagValuesAtInstruction(uint32_t flag, size_t instr, + const std::set& options = std::set()); + PossibleValueSet GetPossibleFlagValuesAfterInstruction(uint32_t flag, size_t instr, + const std::set& options = std::set()); RegisterValue GetStackContentsAtInstruction(int32_t offset, size_t len, size_t instr); RegisterValue GetStackContentsAfterInstruction(int32_t offset, size_t len, size_t instr); - PossibleValueSet GetPossibleStackContentsAtInstruction(int32_t offset, size_t len, size_t instr); - PossibleValueSet GetPossibleStackContentsAfterInstruction(int32_t offset, size_t len, size_t instr); + PossibleValueSet GetPossibleStackContentsAtInstruction(int32_t offset, size_t len, size_t instr, + const std::set& options = std::set()); + PossibleValueSet GetPossibleStackContentsAfterInstruction(int32_t offset, size_t len, size_t instr, + const std::set& options = std::set()); BNILBranchDependence GetBranchDependenceAtInstruction(size_t curInstr, size_t branchInstr) const; std::unordered_map GetAllBranchDependenceAtInstruction(size_t instr) const; -- cgit v1.3.1