summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2025-10-03 00:31:32 -0400
committerBrian Potchik <brian@vector35.com>2025-10-03 00:31:32 -0400
commit6e0806b4d18e456ebfb1d1d45b2ccc55713309c8 (patch)
treef2c77c27a0a387344fdfbf891af506f2f5c7d707 /binaryninjaapi.h
parent416332cc9142ee3f7f6f1b845a45a5657f8333a5 (diff)
Add DecodeWithContext method to Transform API layers.
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 9da9f677..bd4f6de5 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -8928,6 +8928,8 @@ namespace BinaryNinja {
size_t fixedLength; // Variable length if zero
};
+ class TransformContext;
+
/*! Allows users to implement custom transformations.
New transformations may be added at runtime, so an instance of a transform is created like
@@ -8970,6 +8972,7 @@ namespace BinaryNinja {
void* ctxt, BNDataBuffer* input, BNDataBuffer* output, BNTransformParameter* params, size_t paramCount);
static bool EncodeCallback(
void* ctxt, BNDataBuffer* input, BNDataBuffer* output, BNTransformParameter* params, size_t paramCount);
+ static bool DecodeWithContextCallback(void* ctxt, BNTransformContext* context, BNTransformParameter* params, size_t paramCount);
static bool CanDecodeCallback(void* ctxt, BNBinaryView* input);
static std::vector<TransformParameter> EncryptionKeyParameters(size_t fixedKeyLength = 0);
@@ -8987,6 +8990,7 @@ namespace BinaryNinja {
BNTransformType GetType() const;
BNTransformCapabilities GetCapabilities() const;
bool SupportsDetection() const;
+ bool SupportsContext() const;
std::string GetName() const;
std::string GetLongName() const;
std::string GetGroup() const;
@@ -8995,6 +8999,7 @@ namespace BinaryNinja {
virtual bool Decode(const DataBuffer& input, DataBuffer& output, const std::map<std::string, DataBuffer>& params = std::map<std::string, DataBuffer>());
virtual bool Encode(const DataBuffer& input, DataBuffer& output, const std::map<std::string, DataBuffer>& params = std::map<std::string, DataBuffer>());
+ virtual bool DecodeWithContext(Ref<TransformContext> context, const std::map<std::string, DataBuffer>& params = std::map<std::string, DataBuffer>());
virtual bool CanDecode(Ref<BinaryView> input) const;
};
@@ -9011,6 +9016,8 @@ namespace BinaryNinja {
const std::map<std::string, DataBuffer>& params = std::map<std::string, DataBuffer>()) override;
virtual bool Encode(const DataBuffer& input, DataBuffer& output,
const std::map<std::string, DataBuffer>& params = std::map<std::string, DataBuffer>()) override;
+ virtual bool DecodeWithContext(Ref<TransformContext> context,
+ const std::map<std::string, DataBuffer>& params = std::map<std::string, DataBuffer>()) override;
virtual bool CanDecode(Ref<BinaryView> input) const override;
};