diff options
| author | Peter LaFosse <peter@vector35.com> | 2022-01-18 09:31:18 -0500 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2022-01-19 10:52:42 -0500 |
| commit | 28cdd331752203f771990844699463d47724e840 (patch) | |
| tree | 778a710d6e9ffba9345efcb74b3d11a48c739c2d | |
| parent | 5d66fab3c2b36a14f9efd119a818c48c0950394a (diff) | |
Add getters and setters for syscall number in type objects
| -rw-r--r-- | binaryninjaapi.h | 6 | ||||
| -rw-r--r-- | binaryninjacore.h | 5 | ||||
| -rw-r--r-- | python/types.py | 13 | ||||
| -rw-r--r-- | type.cpp | 30 |
4 files changed, 53 insertions, 1 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index a852290d..0fc38edd 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -2790,6 +2790,7 @@ __attribute__ ((format (printf, 1, 2))) Confidence<bool> IsSigned() const; Confidence<bool> IsConst() const; Confidence<bool> IsVolatile() const; + bool IsSystemCall() const; Confidence<Ref<Type>> GetChildType() const; Confidence<Ref<CallingConvention>> GetCallingConvention() const; @@ -2803,7 +2804,7 @@ __attribute__ ((format (printf, 1, 2))) Confidence<int64_t> GetStackAdjustment() const; QualifiedName GetStructureName() const; Ref<NamedTypeReference> GetRegisteredName() const; - + uint32_t GetSystemCallNumber() const; BNIntegerDisplayType GetIntegerTypeDisplayType() const; uint64_t GetElementCount() const; @@ -2914,6 +2915,7 @@ __attribute__ ((format (printf, 1, 2))) Confidence<bool> IsSigned() const; Confidence<bool> IsConst() const; Confidence<bool> IsVolatile() const; + bool IsSystemCall() const; void SetIntegerTypeDisplayType(BNIntegerDisplayType displayType); Confidence<Ref<Type>> GetChildType() const; @@ -2932,11 +2934,13 @@ __attribute__ ((format (printf, 1, 2))) TypeBuilder& SetSigned(const Confidence<bool>& vltl); TypeBuilder& SetTypeName(const QualifiedName& name); TypeBuilder& SetAlternateName(const std::string& name); + TypeBuilder& SetSystemCall(bool sc, uint32_t n = 0); Confidence<int64_t> GetStackAdjustment() const; QualifiedName GetStructureName() const; uint64_t GetElementCount() const; uint64_t GetOffset() const; + uint32_t GetSystemCallNumber() const; TypeBuilder& SetFunctionCanReturn(const Confidence<bool>& canReturn); TypeBuilder& SetParameters(const std::vector<FunctionParameter>& params); diff --git a/binaryninjacore.h b/binaryninjacore.h index f1353c10..eb6833a4 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -4821,6 +4821,8 @@ __attribute__ ((format (printf, 1, 2))) BINARYNINJACOREAPI BNNamedTypeReference* BNGetRegisteredTypeName(BNType* type); BINARYNINJACOREAPI BNReferenceType BNTypeGetReferenceType(BNType* type); BINARYNINJACOREAPI char* BNGetTypeAlternateName(BNType* type); + BINARYNINJACOREAPI uint32_t BNTypeGetSystemCallNumber(BNType* type); + BINARYNINJACOREAPI bool BNTypeIsSystemCall(BNType* type); BINARYNINJACOREAPI char* BNGetTypeString(BNType* type, BNPlatform* platform); BINARYNINJACOREAPI char* BNGetTypeStringBeforeName(BNType* type, BNPlatform* platform); @@ -4843,6 +4845,7 @@ __attribute__ ((format (printf, 1, 2))) BINARYNINJACOREAPI void BNTypeBuilderSetTypeName(BNTypeBuilder* type, BNQualifiedName* name); BINARYNINJACOREAPI void BNTypeBuilderSetAlternateName(BNTypeBuilder* type, const char* name); BINARYNINJACOREAPI BNTypeClass BNGetTypeBuilderClass(BNTypeBuilder* type); + BINARYNINJACOREAPI void BNTypeBuilderSetSystemCallNumber(BNTypeBuilder* type, bool v, uint32_t n); BINARYNINJACOREAPI uint64_t BNGetTypeBuilderWidth(BNTypeBuilder* type); BINARYNINJACOREAPI size_t BNGetTypeBuilderAlignment(BNTypeBuilder* type); BINARYNINJACOREAPI BNBoolWithConfidence BNIsTypeBuilderSigned(BNTypeBuilder* type); @@ -4869,6 +4872,8 @@ __attribute__ ((format (printf, 1, 2))) BINARYNINJACOREAPI BNQualifiedName BNTypeBuilderGetStructureName(BNTypeBuilder* type); BINARYNINJACOREAPI BNReferenceType BNTypeBuilderGetReferenceType(BNTypeBuilder* type); BINARYNINJACOREAPI char* BNGetTypeBuilderAlternateName(BNTypeBuilder* type); + BINARYNINJACOREAPI bool BNTypeBuilderIsSystemCall(BNTypeBuilder* type); + BINARYNINJACOREAPI uint32_t BNTypeBuilderGetSystemCallNumber(BNTypeBuilder* type); BINARYNINJACOREAPI char* BNGetTypeBuilderString(BNTypeBuilder* type, BNPlatform* platform); BINARYNINJACOREAPI char* BNGetTypeBuilderStringBeforeName(BNTypeBuilder* type, BNPlatform* platform); diff --git a/python/types.py b/python/types.py index 8ca8e260..296380ee 100644 --- a/python/types.py +++ b/python/types.py @@ -739,6 +739,19 @@ class TypeBuilder: core.BNTypeBuilderSetAlternateName(self._handle, name) @property + def system_call_number(self) -> Optional[_int]: + if core.BNTypeBuilderIsSystemCall(self._handle): + return None + return core.BNTypeBuilderGetSystemCallNumber(self._handle) + + @system_call_number.setter + def system_call_number(self, value:int) -> None: + core.BNTypeBuilderSetSystemCallNumber(self._handle, True, value) + + def clear_system_call(self) -> None: + core.BNTypeBuilderSetSystemCallNumber(self._handle, False, 0) + + @property def type_class(self) -> TypeClass: return TypeClass(core.BNGetTypeBuilderClass(self._handle).value) @@ -934,6 +934,17 @@ QualifiedName Type::GetStructureName() const } +bool Type::IsSystemCall() const +{ + return BNTypeIsSystemCall(m_object); +} + + +uint32_t Type::GetSystemCallNumber() const +{ + return BNTypeGetSystemCallNumber(m_object); +} + Ref<NamedTypeReference> Type::GetRegisteredName() const { BNNamedTypeReference* name = BNGetRegisteredTypeName(m_object); @@ -1590,6 +1601,25 @@ TypeBuilder& TypeBuilder::SetAlternateName(const string& name) } +TypeBuilder& TypeBuilder::SetSystemCall(bool sc, uint32_t n) +{ + BNTypeBuilderSetSystemCallNumber(m_object, sc, n); + return *this; +} + + +bool TypeBuilder::IsSystemCall() const +{ + return BNTypeBuilderIsSystemCall(m_object); +} + + +uint32_t TypeBuilder::GetSystemCallNumber() const +{ + return BNTypeBuilderGetSystemCallNumber(m_object); +} + + QualifiedName TypeBuilder::GetStructureName() const { BNQualifiedName name = BNTypeBuilderGetStructureName(m_object); |
