#pragma once #include "binaryninjaapi.h" #include "machoview.h" namespace BinaryNinja { void InitUniversalTransform(); class UniversalTransform : public Transform { public: static const std::map, std::string>& GetArchitectures(); static std::string ArchitectureToString(cpu_type_t cpuType, cpu_subtype_t cpuSubType, bool& is64Bit); static bool ParseHeaders(Ref data, FatHeader& fatHeader, std::vector& fatArchEntries, bool& isFat64, std::string& errorMsg); UniversalTransform(); virtual bool Decode(const DataBuffer& input, DataBuffer& output, const std::map& params) override; virtual bool DecodeWithContext(Ref context, const std::map& params) override; virtual bool Encode(const DataBuffer& input, DataBuffer& output, const std::map& params) override; virtual bool CanDecode(Ref input) const override; }; }