예제 #1
0
파일: MachOLoader.cs 프로젝트: mmyydd/reko
        public Parser CreateParser()
        {
            uint magic;

            if (!LoadedImage.TryReadBeUInt32(RawImage, 0, out magic))
            {
                throw new BadImageFormatException("Invalid Mach-O header.");
            }
            switch (magic)
            {
            case MH_MAGIC:
                return(new Loader32(this, new BeImageReader(RawImage, 0)));

            case MH_MAGIC_64:
                return(new Loader64(this, new BeImageReader(RawImage, 0)));

            case MH_MAGIC_32_LE:
                return(new Loader32(this, new LeImageReader(RawImage, 0)));

            case MH_MAGIC_64_LE:
                return(new Loader64(this, new LeImageReader(RawImage, 0)));
            }
            throw new BadImageFormatException("Invalid Mach-O header.");
        }