diff options
| author | Brian Potchik <brian@vector35.com> | 2025-10-28 14:55:31 -0400 |
|---|---|---|
| committer | Brian Potchik <brian@vector35.com> | 2025-10-28 14:55:31 -0400 |
| commit | 5d9fa6553036f9d0e5216948585f4e7dcde3fcb7 (patch) | |
| tree | 621b03091ec76b77aeca3fe00dea4fc84d467967 | |
| parent | 5edc5e4b198eeaac98c1fb3b4a1a7849d357d06d (diff) | |
Add transform override support to the container browswer.
| -rw-r--r-- | binaryninjaapi.h | 2 | ||||
| -rw-r--r-- | binaryninjacore.h | 4 | ||||
| -rw-r--r-- | transformcontext.cpp | 21 |
3 files changed, 26 insertions, 1 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 375fb227..ad557146 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -9160,7 +9160,9 @@ namespace BinaryNinja { Ref<BinaryView> GetInput() const; std::string GetFileName() const; + std::vector<std::string> GetAvailableTransforms() const; std::string GetTransformName() const; + void SetTransformName(const std::string& transformName); void SetTransformParameters(const std::map<std::string, DataBuffer>& params); void SetTransformParameter(const std::string& name, const DataBuffer& data); bool HasTransformParameter(const std::string& name) const; diff --git a/binaryninjacore.h b/binaryninjacore.h index 3e6f60fd..74389263 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -37,7 +37,7 @@ // Current ABI version for linking to the core. This is incremented any time // there are changes to the API that affect linking, including new functions, // new types, or modifications to existing functions or types. -#define BN_CURRENT_CORE_ABI_VERSION 142 +#define BN_CURRENT_CORE_ABI_VERSION 143 // Minimum ABI version that is supported for loading of plugins. Plugins that // are linked to an ABI version less than this will not be able to load and @@ -4741,7 +4741,9 @@ extern "C" BINARYNINJACOREAPI void BNFreeTransformContext(BNTransformContext* context); BINARYNINJACOREAPI BNBinaryView* BNTransformContextGetInput(BNTransformContext* context); BINARYNINJACOREAPI char* BNTransformContextGetFileName(BNTransformContext* context); + BINARYNINJACOREAPI char** BNTransformContextGetAvailableTransforms(BNTransformContext* context, size_t* count); BINARYNINJACOREAPI char* BNTransformContextGetTransformName(BNTransformContext* context); + BINARYNINJACOREAPI void BNTransformContextSetTransformName(BNTransformContext* context, const char* transformName); BINARYNINJACOREAPI void BNTransformContextSetTransformParameters(BNTransformContext* context, BNTransformParameter* params, size_t paramCount); BINARYNINJACOREAPI void BNTransformContextSetTransformParameter(BNTransformContext* context, const char* name, BNDataBuffer* data); BINARYNINJACOREAPI bool BNTransformContextHasTransformParameter(BNTransformContext* context, const char* name); diff --git a/transformcontext.cpp b/transformcontext.cpp index 181d3c79..0ebb4d8a 100644 --- a/transformcontext.cpp +++ b/transformcontext.cpp @@ -30,6 +30,21 @@ string TransformContext::GetFileName() const } +vector<string> TransformContext::GetAvailableTransforms() const +{ + size_t count; + char** transforms = BNTransformContextGetAvailableTransforms(m_object, &count); + + vector<string> result; + result.reserve(count); + + for (size_t i = 0; i < count; i++) + result.push_back(transforms[i]); + BNFreeStringList(transforms, count); + return result; +} + + string TransformContext::GetTransformName() const { char* name = BNTransformContextGetTransformName(m_object); @@ -39,6 +54,12 @@ string TransformContext::GetTransformName() const } +void TransformContext::SetTransformName(const string& transformName) +{ + BNTransformContextSetTransformName(m_object, transformName.c_str()); +} + + void TransformContext::SetTransformParameters(const map<string, DataBuffer>& params) { BNTransformParameter* list = new BNTransformParameter[params.size()]; |
