From ea830c8f7b42cc7aebf5f714699011b3e5fae850 Mon Sep 17 00:00:00 2001 From: Jon Palmisciano Date: Thu, 3 Jun 2021 10:54:44 -0400 Subject: Function: Added `GetILVariables()` method --- binaryninjaapi.h | 1 + function.cpp | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/binaryninjaapi.h b/binaryninjaapi.h index efc7e1a6..76df58ce 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -3225,6 +3225,7 @@ __attribute__ ((format (printf, 1, 2))) bool GetStackVariableAtFrameOffset(Architecture* arch, uint64_t addr, int64_t offset, VariableNameAndType& var); std::map GetVariables(); + std::set GetILVariables(BNFunctionGraphType ilType); void CreateAutoVariable(const Variable& var, const Confidence>& type, const std::string& name, bool ignoreDisjointUses = false); void CreateUserVariable(const Variable& var, const Confidence>& type, const std::string& name, diff --git a/function.cpp b/function.cpp index 2c1b34ea..58968938 100644 --- a/function.cpp +++ b/function.cpp @@ -1107,6 +1107,23 @@ map Function::GetVariables() } +set Function::GetILVariables(BNFunctionGraphType ilType) +{ + size_t count; + auto* vars = BNGetFunctionILVariables(m_object, ilType, &count); + + set result; + for (size_t i = 0; i < count; i++) + { + Variable v(vars[i]); + result.insert(v); + } + + BNFreeVariableList(vars); + return result; +} + + void Function::CreateAutoVariable(const Variable& var, const Confidence>& type, const string& name, bool ignoreDisjointUses) { -- cgit v1.3.1