ruby-macho 0.2.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -3
- data/lib/macho.rb +25 -2
- data/lib/macho/fat_file.rb +10 -10
- data/lib/macho/headers.rb +552 -549
- data/lib/macho/load_commands.rb +1064 -1061
- data/lib/macho/macho_file.rb +52 -52
- data/lib/macho/sections.rb +160 -157
- data/lib/macho/utils.rb +6 -6
- metadata +3 -4
- data/lib/macho/open.rb +0 -25
data/lib/macho/utils.rb
CHANGED
@@ -55,42 +55,42 @@ module MachO
|
|
55
55
|
# @param num [Fixnum] the number being checked
|
56
56
|
# @return [Boolean] true if `num` is a valid Mach-O magic number, false otherwise
|
57
57
|
def self.magic?(num)
|
58
|
-
MH_MAGICS.key?(num)
|
58
|
+
Headers::MH_MAGICS.key?(num)
|
59
59
|
end
|
60
60
|
|
61
61
|
# Compares the given number to valid Fat magic numbers.
|
62
62
|
# @param num [Fixnum] the number being checked
|
63
63
|
# @return [Boolean] true if `num` is a valid Fat magic number, false otherwise
|
64
64
|
def self.fat_magic?(num)
|
65
|
-
num == FAT_MAGIC
|
65
|
+
num == Headers::FAT_MAGIC
|
66
66
|
end
|
67
67
|
|
68
68
|
# Compares the given number to valid 32-bit Mach-O magic numbers.
|
69
69
|
# @param num [Fixnum] the number being checked
|
70
70
|
# @return [Boolean] true if `num` is a valid 32-bit magic number, false otherwise
|
71
71
|
def self.magic32?(num)
|
72
|
-
num == MH_MAGIC || num == MH_CIGAM
|
72
|
+
num == Headers::MH_MAGIC || num == Headers::MH_CIGAM
|
73
73
|
end
|
74
74
|
|
75
75
|
# Compares the given number to valid 64-bit Mach-O magic numbers.
|
76
76
|
# @param num [Fixnum] the number being checked
|
77
77
|
# @return [Boolean] true if `num` is a valid 64-bit magic number, false otherwise
|
78
78
|
def self.magic64?(num)
|
79
|
-
num == MH_MAGIC_64 || num == MH_CIGAM_64
|
79
|
+
num == Headers::MH_MAGIC_64 || num == Headers::MH_CIGAM_64
|
80
80
|
end
|
81
81
|
|
82
82
|
# Compares the given number to valid little-endian magic numbers.
|
83
83
|
# @param num [Fixnum] the number being checked
|
84
84
|
# @return [Boolean] true if `num` is a valid little-endian magic number, false otherwise
|
85
85
|
def self.little_magic?(num)
|
86
|
-
num == MH_CIGAM || num == MH_CIGAM_64
|
86
|
+
num == Headers::MH_CIGAM || num == Headers::MH_CIGAM_64
|
87
87
|
end
|
88
88
|
|
89
89
|
# Compares the given number to valid big-endian magic numbers.
|
90
90
|
# @param num [Fixnum] the number being checked
|
91
91
|
# @return [Boolean] true if `num` is a valid big-endian magic number, false otherwise
|
92
92
|
def self.big_magic?(num)
|
93
|
-
num == MH_CIGAM || num == MH_CIGAM_64
|
93
|
+
num == Headers::MH_CIGAM || num == Headers::MH_CIGAM_64
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-macho
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Woodruff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A library for viewing and manipulating Mach-O files in Ruby.
|
14
14
|
email: william@tuffbizz.com
|
@@ -25,7 +25,6 @@ files:
|
|
25
25
|
- lib/macho/headers.rb
|
26
26
|
- lib/macho/load_commands.rb
|
27
27
|
- lib/macho/macho_file.rb
|
28
|
-
- lib/macho/open.rb
|
29
28
|
- lib/macho/sections.rb
|
30
29
|
- lib/macho/structure.rb
|
31
30
|
- lib/macho/tools.rb
|
@@ -43,7 +42,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
43
42
|
requirements:
|
44
43
|
- - ">="
|
45
44
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
45
|
+
version: 2.0.0
|
47
46
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
47
|
requirements:
|
49
48
|
- - ">="
|
data/lib/macho/open.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module MachO
|
2
|
-
# Opens the given filename as a MachOFile or FatFile, depending on its magic.
|
3
|
-
# @param filename [String] the file being opened
|
4
|
-
# @return [MachO::MachOFile] if the file is a Mach-O
|
5
|
-
# @return [MachO::FatFile] if the file is a Fat file
|
6
|
-
# @raise [ArgumentError] if the given file does not exist
|
7
|
-
# @raise [MachO::TruncatedFileError] if the file is too small to have a valid header
|
8
|
-
# @raise [MachO::MagicError] if the file's magic is not valid Mach-O magic
|
9
|
-
def self.open(filename)
|
10
|
-
raise ArgumentError, "#{filename}: no such file" unless File.file?(filename)
|
11
|
-
raise TruncatedFileError unless File.stat(filename).size >= 4
|
12
|
-
|
13
|
-
magic = File.open(filename, "rb") { |f| f.read(4) }.unpack("N").first
|
14
|
-
|
15
|
-
if Utils.fat_magic?(magic)
|
16
|
-
file = FatFile.new(filename)
|
17
|
-
elsif Utils.magic?(magic)
|
18
|
-
file = MachOFile.new(filename)
|
19
|
-
else
|
20
|
-
raise MagicError, magic
|
21
|
-
end
|
22
|
-
|
23
|
-
file
|
24
|
-
end
|
25
|
-
end
|