module Pliney::MachO
Constants
- FAT_MAGIC
- LC_REQ_DYLD
- MACHO_MAGIC32
- MACHO_MAGIC64
Public Class Methods
is_fat_magic(magicval)
click to toggle source
# File lib/pliney/macho.rb, line 17 def self.is_fat_magic(magicval) return (magicval == FAT_MAGIC) end
is_macho32_magic(magicval)
click to toggle source
# File lib/pliney/macho.rb, line 25 def self.is_macho32_magic(magicval) return (magicval == MACHO_MAGIC32) end
is_macho64_magic(magicval)
click to toggle source
# File lib/pliney/macho.rb, line 29 def self.is_macho64_magic(magicval) return (magicval == MACHO_MAGIC64) end
is_macho_magic(magicval)
click to toggle source
# File lib/pliney/macho.rb, line 21 def self.is_macho_magic(magicval) return (is_macho32_magic(magicval) or is_macho64_magic(magicval)) end
lcmap()
click to toggle source
# File lib/pliney/macho.rb, line 33 def self.lcmap @LCMAP ||= Hash[ LoadCommandConst.constants.map do |lc| [lc, LoadCommandConst.const_get(lc)] end ] end
read_stream(fh)
click to toggle source
# File lib/pliney/macho.rb, line 69 def self.read_stream(fh) magic = fh.read_uint32 fh.pos -= 4 return reader_for_filemagic(magic).parse(fh) end
reader_for_filemagic(magic)
click to toggle source
# File lib/pliney/macho.rb, line 56 def self.reader_for_filemagic(magic) case magic when FAT_MAGIC return FatHeaderReader when MACHO_MAGIC32 return MachHeaderReader when MACHO_MAGIC64 return MachHeader64Reader else raise(ReaderError, "Unrecognized magic value: 0x%0.8x" % magic) end end
reader_for_lc(lcnum)
click to toggle source
# File lib/pliney/macho.rb, line 45 def self.reader_for_lc(lcnum) lcsym = lcmap.invert[lcnum] if lcsym klname = "#{lcsym}_Reader" if MachO.const_defined?(klname) return MachO.const_get(klname) end end return UndefinedLCReader end
resolve_lc(lcnum)
click to toggle source
# File lib/pliney/macho.rb, line 41 def self.resolve_lc(lcnum) lcmap.invert[lcnum] end