# File lib/rex/machparsey/mach.rb, line 13 def initialize(isource, offset = 0, fat = false) _parse_mach_header(isource, offset) if fat == true self.fat_offset = offset else self.fat_offset = 0 end self.isource = isource end
# File lib/rex/machparsey/mach.rb, line 60 def self.new_from_file(filename, disk_backed = false) file = ::File.open(filename, "rb") if disk_backed return self.new(ImageSource::Disk.new(file)) else obj = new_from_string(file.read) file.close return obj end end
# File lib/rex/machparsey/mach.rb, line 24 def _parse_mach_header(isource, offset) self.mach_header = MachHeader.new(isource.read(offset, MACH_HEADER_SIZE_64)) bits = mach_header.bits endian = mach_header.endian ncmds = mach_header.ncmds if bits == BITS_32 offset += MACH_HEADER_SIZE else offset += MACH_HEADER_SIZE_64 end segments = [] ncmds.times do load_command = LoadCommand.new(isource.read(offset, LOAD_COMMAND_SIZE), endian) case load_command.cmd when LC_SEGMENT segments << Segment.new(isource.read(offset, SEGMENT_COMMAND_SIZE), bits, endian) when LC_SEGMENT_64 segments << Segment.new(isource.read(offset, SEGMENT_COMMAND_SIZE_64), bits, endian) end offset += load_command.cmdsize end self.mach_header = mach_header self.segments = segments self.isource = isource self.bits = bits self.endian = endian return segments end
# File lib/rex/machparsey/mach.rb, line 97 def close isource.close end
# File lib/rex/machparsey/mach.rb, line 93 def index(*args) isource.index(*args) end
# File lib/rex/machparsey/mach.rb, line 81 def ptr_32? ptr_64? == false end
# File lib/rex/machparsey/mach.rb, line 77 def ptr_64? mach_header.bits == BITS_64 end
Generated with the Darkfish Rdoc Generator 2.