From cc1e85a4a8b2001f9fd6cf91b93fb39abef3a0e2 Mon Sep 17 00:00:00 2001 From: Ryan Snyder Date: Wed, 4 Aug 2021 11:17:40 -0400 Subject: platforms: specify platform types and add bvt platform callbacks --- binaryninjaapi.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'binaryninjaapi.h') diff --git a/binaryninjaapi.h b/binaryninjaapi.h index c2529942..59e920aa 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -2052,6 +2052,11 @@ __attribute__ ((format (printf, 1, 2))) std::function action; }; + struct PlatformRecognizerFunction + { + std::function(BinaryView*, Metadata*)> action; + }; + protected: std::string m_nameForRegister, m_longNameForRegister; @@ -2081,6 +2086,9 @@ __attribute__ ((format (printf, 1, 2))) void RegisterDefaultPlatform(Architecture* arch, Platform* platform); Ref GetPlatform(uint32_t id, Architecture* arch); + void RegisterPlatformRecognizer(uint64_t id, BNEndianness endian, const std::function(BinaryView* view, Metadata*)>& callback); + Ref RecognizePlatform(uint64_t id, BNEndianness endian, BinaryView* view, Metadata* metadata); + std::string GetName(); std::string GetLongName(); @@ -2095,6 +2103,7 @@ __attribute__ ((format (printf, 1, 2))) static void RegisterBinaryViewInitialAnalysisCompletionEvent(const std::function& callback); static void BinaryViewEventCallback(void* ctxt, BNBinaryView* view); + static BNPlatform* PlatformRecognizerCallback(void* ctxt, BNBinaryView* view, BNMetadata* metadata); }; class CoreBinaryViewType: public BinaryViewType @@ -5133,6 +5142,7 @@ __attribute__ ((format (printf, 1, 2))) { protected: Platform(Architecture* arch, const std::string& name); + Platform(Architecture* arch, const std::string& name, const std::string& typeFile, const std::vector& includeDirs = std::vector()); public: Platform(BNPlatform* platform); -- cgit v1.3.1