diff options
| author | Ryan Snyder <ryan@vector35.com> | 2021-08-04 11:17:40 -0400 |
|---|---|---|
| committer | Ryan Snyder <ryan@vector35.com> | 2021-08-20 04:34:14 -0400 |
| commit | cc1e85a4a8b2001f9fd6cf91b93fb39abef3a0e2 (patch) | |
| tree | 45fdf52d2bdb8e09f57fc76079a3a91b6528f4a1 /binaryninjaapi.h | |
| parent | c1e526ea39d97c4c374de4cf8c211dc39ebbb538 (diff) | |
platforms: specify platform types and add bvt platform callbacks
Diffstat (limited to 'binaryninjaapi.h')
| -rw-r--r-- | binaryninjaapi.h | 10 |
1 files changed, 10 insertions, 0 deletions
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<void(BinaryView*)> action; }; + struct PlatformRecognizerFunction + { + std::function<Ref<Platform>(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<Platform> GetPlatform(uint32_t id, Architecture* arch); + void RegisterPlatformRecognizer(uint64_t id, BNEndianness endian, const std::function<Ref<Platform>(BinaryView* view, Metadata*)>& callback); + Ref<Platform> 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<void(BinaryView* view)>& 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<std::string>& includeDirs = std::vector<std::string>()); public: Platform(BNPlatform* platform); |
