diff options
| author | Xusheng <xusheng@vector35.com> | 2021-01-14 17:56:04 +0800 |
|---|---|---|
| committer | Xusheng <xusheng@vector35.com> | 2021-01-18 10:38:26 +0800 |
| commit | 2dd9e2408b9fdadea180a07f6df82eaa18ba07a6 (patch) | |
| tree | fac902fe1a0b8acc807a209363c4b1e7d091dd57 | |
| parent | b47c5a64e466d2322a7072a3fd1d11aff5cfab43 (diff) | |
expose Function::IsVariableUserDefinded()
| -rw-r--r-- | binaryninjaapi.h | 1 | ||||
| -rw-r--r-- | binaryninjacore.h | 1 | ||||
| -rw-r--r-- | function.cpp | 6 | ||||
| -rw-r--r-- | python/function.py | 7 |
4 files changed, 15 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 5b3307a4..2d8c1e5f 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -3124,6 +3124,7 @@ __attribute__ ((format (printf, 1, 2))) bool ignoreDisjointUses = false); void DeleteAutoVariable(const Variable& var); void DeleteUserVariable(const Variable& var); + bool IsVariableUserDefinded(const Variable& var); Confidence<Ref<Type>> GetVariableType(const Variable& var); std::string GetVariableName(const Variable& var); diff --git a/binaryninjacore.h b/binaryninjacore.h index e90c4294..04dadf58 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -3278,6 +3278,7 @@ __attribute__ ((format (printf, 1, 2))) const char* name, bool ignoreDisjointUses); BINARYNINJACOREAPI void BNDeleteAutoVariable(BNFunction* func, const BNVariable* var); BINARYNINJACOREAPI void BNDeleteUserVariable(BNFunction* func, const BNVariable* var); + BINARYNINJACOREAPI bool BNIsVariableUserDefined(BNFunction* func, const BNVariable* var); BINARYNINJACOREAPI BNTypeWithConfidence BNGetVariableType(BNFunction* func, const BNVariable* var); BINARYNINJACOREAPI char* BNGetVariableName(BNFunction* func, const BNVariable* var); BINARYNINJACOREAPI uint64_t BNToVariableIdentifier(const BNVariable* var); diff --git a/function.cpp b/function.cpp index d7345248..ed50b4df 100644 --- a/function.cpp +++ b/function.cpp @@ -1082,6 +1082,12 @@ void Function::DeleteUserVariable(const Variable& var) } +bool Function::IsVariableUserDefinded(const Variable& var) +{ + return BNIsVariableUserDefined(m_object, &var); +} + + Confidence<Ref<Type>> Function::GetVariableType(const Variable& var) { BNTypeWithConfidence type = BNGetVariableType(m_object, &var); diff --git a/python/function.py b/python/function.py index 13d73435..a1f9163c 100644 --- a/python/function.py +++ b/python/function.py @@ -2607,6 +2607,13 @@ class Function(object): var_data.storage = var.storage core.BNDeleteUserVariable(self.handle, var_data) + def is_var_user_defined(self, var): + var_data = core.BNVariable() + var_data.type = var.source_type + var_data.index = var.index + var_data.storage = var.storage + return core.BNIsVariableUserDefined(self.handle, var_data) + def get_stack_var_at_frame_offset(self, offset, addr, arch=None): if arch is None: arch = self.arch |
