示例#1
0
        internal static bool IsMachOLibrary(FatEntry fat_entry, BinaryReader reader, bool throw_if_error = false)
        {
            var pos = reader.BaseStream.Position;

            var magic = reader.ReadUInt32();
            var rv    = false;

            switch (magic)
            {
            case MachO.MH_CIGAM:
            case MachO.MH_MAGIC:
            case MachO.MH_CIGAM_64:
            case MachO.MH_MAGIC_64:
                rv = true;
                break;

            default:
                rv = false;
                break;
            }

            reader.BaseStream.Position = pos;

            if (throw_if_error && !rv)
            {
                throw ErrorHelper.CreateError(1600, Errors.MX1600, magic.ToString("x"), fat_entry.Parent.Filename);
            }

            return(rv);
        }
示例#2
0
        internal void Read(BinaryReader reader)
        {
            magic      = reader.ReadUInt32();
            _nfat_arch = reader.ReadUInt32();

            entries = new List <FatEntry> ((int)nfat_arch);
            for (int i = 0; i < (int)nfat_arch; i++)
            {
                var entry = new FatEntry();
                entry.Read(this, reader);
                entries.Add(entry);
            }
            foreach (var entry in entries)
            {
                entry.ReadEntry(reader);
            }
        }
示例#3
0
 public MachOFile(FatEntry parent)
 {
     fat_parent = parent;
 }
示例#4
0
        internal static bool IsMachOLibrary(FatEntry fat_entry, BinaryReader reader, bool throw_if_error = false)
        {
            var pos = reader.BaseStream.Position;

            var magic = reader.ReadUInt32 ();
            var rv = false;
            switch (magic) {
            case MachO.MH_CIGAM:
            case MachO.MH_MAGIC:
            case MachO.MH_CIGAM_64:
            case MachO.MH_MAGIC_64:
                rv = true;
                break;
            default:
                rv = false;
                break;
            }

            reader.BaseStream.Position = pos;

            if (throw_if_error && !rv)
                throw ErrorHelper.CreateError (1600, "Not a Mach-O dynamic library (unknown header '0x{0}'): {1}.", magic.ToString ("x"), fat_entry.Parent.Filename);

            return rv;
        }
示例#5
0
 public MachOFile(FatEntry parent)
 {
     fat_parent = parent;
 }
示例#6
0
        internal void Read(BinaryReader reader)
        {
            magic = reader.ReadUInt32 ();
            _nfat_arch = reader.ReadUInt32 ();

            entries = new List<FatEntry> ((int) nfat_arch);
            for (int i = 0; i < (int) nfat_arch; i++) {
                var entry = new FatEntry ();
                entry.Read (this, reader);
                entries.Add (entry);
            }
            foreach (var entry in entries)
                entry.ReadEntry (reader);
        }