class Object

Public Instance Methods

macho_info(macho) click to toggle source
# File bin/macho-info, line 8
def macho_info(macho)
  puts "FILE INFORMATION:"
  puts "\tHeader type: #{macho.header.class}"
  puts "\tMagic: #{macho.magic_string}"
  puts "\tFiletype: #{macho.filetype}"
  puts "\tCPU type: #{macho.cputype}"
  puts "\tCPU subtype: #{macho.cpusubtype}"
  puts "\tNo. load commands: #{macho.ncmds}"
  puts "\tSize of load commands: #{macho.sizeofcmds}"
  puts "\tFlags: #{macho.flags}"
  puts "\tAlignment: #{macho.alignment}"

  puts "\nLOAD COMMANDS:"
  macho.load_commands.each do |lc|
    puts "\t#{lc} (#{lc.class}) (offset: #{lc.offset}, size: #{lc.cmdsize})"
  end

  puts "\nDYLIB ID: #{macho.dylib_id}" if macho.dylib?

  puts "\nDYNAMIC LIBRARIES:"
  macho.dylib_load_commands.each do |lc|
    puts "\t#{lc.name} (#{lc.type})"
  end

  puts "\nSEGMENTS AND SECTIONS:"

  macho.segments.each do |seg|
    puts "\tSegment: #{seg.segname} " \
         "(offset: #{seg.fileoff}, size: #{seg.filesize})"

    seg.sections.each do |sect|
      puts "\t\tSection: #{sect.section_name} " \
           "(offset: #{sect.offset}, size: #{sect.size})"
    end
  end
end