#pragma once #include #include #include #include "binaryninjaapi.h" #include "fatmachoview.h" #include "machoview.h" namespace BinaryNinja { void InitUniversalViewType(); class UniversalViewType: public BinaryViewType { public: UniversalViewType(): BinaryViewType("Universal", "Universal") { } virtual Ref Create(BinaryView* data) override; virtual bool IsTypeValidForData(BinaryView* data) override; virtual bool ParseHeaders(BinaryView* data, FatHeader& fatHeader, std::vector& fatArchEntries, bool& isFat64, std::string& errorMsg); virtual Ref GetLoadSettingsForData(BinaryView* data) override; }; class UniversalView: public BinaryView { public: UniversalView(BinaryView* data, bool parseOnly = false); virtual ~UniversalView(); virtual bool Init() override; virtual BNEndianness PerformGetDefaultEndianness() const override { return BigEndian; } virtual bool PerformIsExecutable() const override { return false; } virtual bool PerformIsRelocatable() const override { return false; }; }; }