ffi-udis86 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour --format documentation
@@ -1,3 +1,12 @@
1
+ ### 0.1.1 / 2010-11-06
2
+
3
+ * Added an external requirement for udis86 >= 1.7.
4
+ * Renamed `udis86.rb` to `ffi/udis86.rb`.
5
+ * Kept `udis86.rb` for backwards compatibility.
6
+ * Fixed failing specs on JRuby.
7
+ * Clarified documentation for {FFI::UDis86::Operand#base} and
8
+ {FFI::UDis86::Operand#index}.
9
+
1
10
  ### 0.1.0 / 2010-02-19
2
11
 
3
12
  * Initial release:
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # ffi-udis86
2
2
 
3
- * [github.com/sophsec/ffi-udis86](http://github.com/sophsec/ffi-udis86/)
4
- * [github.com/sophsec/ffi-udis86/issue](http://github.com/sophsec/ffi-udis86/)
3
+ * [Source](http://github.com/sophsec/ffi-udis86/)
4
+ * [Issue](http://github.com/sophsec/ffi-udis86/)
5
5
  * Postmodern (postmodern.mod3 at gmail.com)
6
6
 
7
7
  ## Description
@@ -16,6 +16,7 @@ Ruby FFI bindings for udis86, a x86 and x86-64 disassembler.
16
16
  * Supports disassembling files and arbitrary input.
17
17
  * Supports using input buffers.
18
18
  * Supports using input callbacks.
19
+ * Supports fully disassembling instructions and operands.
19
20
 
20
21
  ## Examples
21
22
 
@@ -45,10 +46,48 @@ Disassemble and print instructions:
45
46
  puts insn
46
47
  end
47
48
 
49
+ Disassemble and print information about the instruction and operands:
50
+
51
+ asm = "\x75\x62\x48\x83\xc4\x20\x5b\xc3\x48\x8d\x0d\x23\x0c\x01\x00\x49\x89\xf0"
52
+
53
+ ud = FFI::UDis86::UD.create(
54
+ :buffer => asm,
55
+ :mode => 64,
56
+ :vendor => :amd,
57
+ :syntax => :att
58
+ )
59
+
60
+ ud.disas do |insn|
61
+ puts insn
62
+ puts " * Offset: #{insn.insn_offset}"
63
+ puts " * Length: #{insn.insn_length}"
64
+ puts " * Mnemonic: #{insn.mnemonic}"
65
+
66
+ operands = insn.operands.reverse.map do |operand|
67
+ if operand.is_mem?
68
+ ptr = [operand.base]
69
+ ptr << operand.index if operand.index
70
+ ptr << operand.scale if operand.scale
71
+
72
+ "Memory Access (#{ptr.join(',')})"
73
+ elsif operand.is_imm?
74
+ 'Immediate Data'
75
+ elsif operand.is_jmp_imm?
76
+ 'Relative Offset'
77
+ elsif operand.is_const?
78
+ 'Constant'
79
+ elsif operand.is_reg?
80
+ "Register (#{operand.reg})"
81
+ end
82
+ end
83
+
84
+ puts ' * Operands: ' + operands.join(' -> ')
85
+ end
86
+
48
87
  ## Requirements
49
88
 
50
89
  * [udis86](http://udis86.sourceforge.net/) >= 1.7
51
- * [ffi](http://github.com/ffi/ffi) >= 0.6.2
90
+ * [ffi](http://github.com/ffi/ffi) ~> 0.6.0
52
91
 
53
92
  ## Install
54
93
 
data/Rakefile CHANGED
@@ -1,42 +1,35 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
- require './lib/udis86/version.rb'
4
3
 
5
4
  begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |gem|
8
- gem.name = 'ffi-udis86'
9
- gem.version = FFI::UDis86::VERSION
10
- gem.summary = %Q{Ruby FFI bindings for udis86, a x86 and x86-64 disassembler.}
11
- gem.description = %Q{Ruby FFI bindings for udis86, a x86 and x86-64 disassembler.}
12
- gem.email = 'postmodern.mod3@gmail.com'
13
- gem.homepage = 'http://github.com/sophsec/ffi-udis86'
14
- gem.authors = ['Postmodern']
15
- gem.add_dependency 'ffi', '>= 0.6.2'
16
- gem.add_development_dependency 'rspec', '>= 1.3.0'
17
- gem.add_development_dependency 'yard', '>= 0.5.3'
18
- gem.has_rdoc = 'yard'
19
- end
20
- rescue LoadError
21
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
22
- end
5
+ gem 'ore-tasks', '~> 0.1.2'
6
+ require 'ore/tasks'
23
7
 
24
- require 'spec/rake/spectask'
25
- Spec::Rake::SpecTask.new(:spec) do |spec|
26
- spec.libs += ['lib', 'spec']
27
- spec.spec_files = FileList['spec/**/*_spec.rb']
28
- spec.spec_opts = ['--options', '.specopts']
8
+ Ore::Tasks.new
9
+ rescue LoadError => e
10
+ STDERR.puts e.message
11
+ STDERR.puts "Run `gem install ore-tasks` to install 'ore/tasks'."
29
12
  end
30
13
 
31
- task :spec => :check_dependencies
14
+ begin
15
+ gem 'rspec', '~> 2.0.0'
16
+ require 'rspec/core/rake_task'
17
+
18
+ RSpec::Core::RakeTask.new
19
+ rescue LoadError => e
20
+ task :spec do
21
+ abort "Please run `gem install rspec` to install RSpec."
22
+ end
23
+ end
32
24
  task :default => :spec
33
25
 
34
26
  begin
27
+ gem 'yard', '~> 0.6.0'
35
28
  require 'yard'
36
29
 
37
- YARD::Rake::YardocTask.new
38
- rescue LoadError
30
+ YARD::Rake::YardocTask.new
31
+ rescue LoadError => e
39
32
  task :yard do
40
- abort "YARD is not available. In order to run yard, you must: gem install yard"
33
+ abort "Please run `gem install yard` to install YARD."
41
34
  end
42
35
  end
@@ -1,88 +1,10 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
5
2
 
6
- Gem::Specification.new do |s|
7
- s.name = %q{ffi-udis86}
8
- s.version = "0.1.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Postmodern"]
12
- s.date = %q{2010-02-19}
13
- s.description = %q{Ruby FFI bindings for udis86, a x86 and x86-64 disassembler.}
14
- s.email = %q{postmodern.mod3@gmail.com}
15
- s.extra_rdoc_files = [
16
- "ChangeLog.md",
17
- "LICENSE.txt",
18
- "README.md"
19
- ]
20
- s.files = [
21
- ".gitignore",
22
- ".specopts",
23
- ".yardopts",
24
- "ChangeLog.md",
25
- "LICENSE.txt",
26
- "README.md",
27
- "Rakefile",
28
- "ffi-udis86.gemspec",
29
- "lib/udis86.rb",
30
- "lib/udis86/ffi.rb",
31
- "lib/udis86/operand.rb",
32
- "lib/udis86/operand_pointer.rb",
33
- "lib/udis86/operand_value.rb",
34
- "lib/udis86/types.rb",
35
- "lib/udis86/ud.rb",
36
- "lib/udis86/version.rb",
37
- "spec/helpers/files.rb",
38
- "spec/helpers/files/operands_index_scale",
39
- "spec/helpers/files/operands_index_scale.s",
40
- "spec/helpers/files/operands_memory",
41
- "spec/helpers/files/operands_memory.s",
42
- "spec/helpers/files/operands_offset",
43
- "spec/helpers/files/operands_offset.s",
44
- "spec/helpers/files/operands_simple",
45
- "spec/helpers/files/operands_simple.s",
46
- "spec/helpers/files/simple",
47
- "spec/helpers/files/simple.s",
48
- "spec/helpers/operands.rb",
49
- "spec/operand_spec.rb",
50
- "spec/spec_helper.rb",
51
- "spec/ud_spec.rb",
52
- "spec/udis86_spec.rb"
53
- ]
54
- s.has_rdoc = %q{yard}
55
- s.homepage = %q{http://github.com/sophsec/ffi-udis86}
56
- s.rdoc_options = ["--charset=UTF-8"]
57
- s.require_paths = ["lib"]
58
- s.rubygems_version = %q{1.3.5}
59
- s.summary = %q{Ruby FFI bindings for udis86, a x86 and x86-64 disassembler.}
60
- s.test_files = [
61
- "spec/spec_helper.rb",
62
- "spec/udis86_spec.rb",
63
- "spec/ud_spec.rb",
64
- "spec/helpers/files.rb",
65
- "spec/helpers/operands.rb",
66
- "spec/operand_spec.rb"
67
- ]
68
-
69
- if s.respond_to? :specification_version then
70
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
71
- s.specification_version = 3
72
-
73
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
74
- s.add_runtime_dependency(%q<ffi>, [">= 0.6.2"])
75
- s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
76
- s.add_development_dependency(%q<yard>, [">= 0.5.3"])
77
- else
78
- s.add_dependency(%q<ffi>, [">= 0.6.2"])
79
- s.add_dependency(%q<rspec>, [">= 1.3.0"])
80
- s.add_dependency(%q<yard>, [">= 0.5.3"])
81
- end
82
- else
83
- s.add_dependency(%q<ffi>, [">= 0.6.2"])
84
- s.add_dependency(%q<rspec>, [">= 1.3.0"])
85
- s.add_dependency(%q<yard>, [">= 0.5.3"])
3
+ begin
4
+ Ore::Specification.new do |gemspec|
5
+ # custom logic here
86
6
  end
7
+ rescue NameError
8
+ STDERR.puts "The 'ffi-udis86.gemspec' file requires Ore."
9
+ STDERR.puts "Run `gem install ore` to install Ore."
87
10
  end
88
-
@@ -0,0 +1,19 @@
1
+ name: ffi-udis86
2
+ summary: Ruby FFI bindings for udis86, a x86 and x86-64 disassembler.
3
+ description: Ruby FFI bindings for udis86, a x86 and x86-64 disassembler.
4
+ license: MIT
5
+ authors: Postmodern
6
+ email: postmodern.mod3@gmail.com
7
+ homepage: http://github.com/sophsec/ffi-udis86
8
+ has_yard: true
9
+
10
+ requirements: udis86, 1.7 or greater
11
+
12
+ dependencies:
13
+ ffi: ~> 0.6.0
14
+
15
+ development_dependencies:
16
+ ore: ~> 0.2.0
17
+ ore-tasks: ~> 0.1.2
18
+ rspec: ~> 2.0.0
19
+ yard: ~> 0.6.0
@@ -0,0 +1,4 @@
1
+ require 'ffi/udis86/types'
2
+ require 'ffi/udis86/udis86'
3
+ require 'ffi/udis86/ud'
4
+ require 'ffi/udis86/version'
@@ -1,5 +1,5 @@
1
- require 'udis86/operand_value'
2
- require 'udis86/types'
1
+ require 'ffi/udis86/operand_value'
2
+ require 'ffi/udis86/types'
3
3
 
4
4
  require 'ffi'
5
5
 
@@ -18,7 +18,7 @@ module FFI
18
18
  #
19
19
  # The type of the operand.
20
20
  #
21
- # @return [Integer]
21
+ # @return [Symbol]
22
22
  # The type of the operand.
23
23
  #
24
24
  def type
@@ -114,10 +114,10 @@ module FFI
114
114
  end
115
115
 
116
116
  #
117
- # The base address used by the operand.
117
+ # The base register used by the operand.
118
118
  #
119
- # @return [Integer]
120
- # The base address of the operand.
119
+ # @return [Symbol]
120
+ # The base register of the operand.
121
121
  #
122
122
  def base
123
123
  REGS[self[:base]]
@@ -126,10 +126,10 @@ module FFI
126
126
  alias reg base
127
127
 
128
128
  #
129
- # The index value used by the operand.
129
+ # The index register used by the operand.
130
130
  #
131
- # @return [Integer]
132
- # The index value of the operand.
131
+ # @return [Symbol]
132
+ # The index register of the operand.
133
133
  #
134
134
  def index
135
135
  REGS[self[:index]]
@@ -1,4 +1,4 @@
1
- require 'udis86/operand_pointer'
1
+ require 'ffi/udis86/operand_pointer'
2
2
 
3
3
  require 'ffi'
4
4
 
@@ -4,8 +4,6 @@ module FFI
4
4
  module UDis86
5
5
  extend FFI::Library
6
6
 
7
- typedef :uint, :size_t
8
-
9
7
  # Disassembly modes
10
8
  MODES = [
11
9
  16,
@@ -930,6 +928,16 @@ module FFI
930
928
  :ud_r_rip => :rip,
931
929
  }
932
930
 
931
+ # Acceptable operand types
932
+ OPERAND_TYPES = [
933
+ :ud_op_reg,
934
+ :ud_op_mem,
935
+ :ud_op_ptr,
936
+ :ud_op_imm,
937
+ :ud_op_jimm,
938
+ :ud_op_const
939
+ ]
940
+
933
941
  # Syntaxes
934
942
  SYNTAX = {
935
943
  :att => :ud_translate_att,
@@ -1,6 +1,6 @@
1
- require 'udis86/types'
2
- require 'udis86/operand'
3
- require 'udis86/ffi'
1
+ require 'ffi/udis86/types'
2
+ require 'ffi/udis86/operand'
3
+ require 'ffi/udis86/udis86'
4
4
 
5
5
  require 'ffi'
6
6
 
@@ -144,7 +144,7 @@ module FFI
144
144
  # @yieldparam [UD] ud
145
145
  # The newly created disassembler.
146
146
  #
147
- def self.open(path,options={},&block)
147
+ def self.open(path,options={})
148
148
  File.open(path,'rb') do |file|
149
149
  ud = self.create(options) do |ud|
150
150
  if (b = file.getc)
@@ -154,7 +154,7 @@ module FFI
154
154
  end
155
155
  end
156
156
 
157
- block.call(ud) if block
157
+ yield ud if block_given?
158
158
  end
159
159
 
160
160
  return nil
@@ -471,7 +471,7 @@ module FFI
471
471
  UDis86.ud_insn_hex(self)
472
472
  end
473
473
 
474
- alias :to_s :to_asm
474
+ alias to_s to_asm
475
475
 
476
476
  #
477
477
  # Returns the operands for the last disassembled instruction.
@@ -481,14 +481,7 @@ module FFI
481
481
  #
482
482
  def operands
483
483
  self[:operand].entries.select do |operand|
484
- [
485
- :ud_op_reg,
486
- :ud_op_mem,
487
- :ud_op_ptr,
488
- :ud_op_imm,
489
- :ud_op_jimm,
490
- :ud_op_const
491
- ].include?(operand.type)
484
+ OPERAND_TYPES.include?(operand.type)
492
485
  end
493
486
  end
494
487
 
@@ -547,16 +540,16 @@ module FFI
547
540
  # @return [UD]
548
541
  # The disassembler.
549
542
  #
550
- def disassemble(&block)
543
+ def disassemble
551
544
  until UDis86.ud_disassemble(self) == 0
552
- block.call(self) if block
545
+ yield self if block_given?
553
546
  end
554
547
 
555
548
  return self
556
549
  end
557
550
 
558
- alias :disas :disassemble
559
- alias :each :disassemble
551
+ alias disas disassemble
552
+ alias each disassemble
560
553
 
561
554
  end
562
555
  end
@@ -1,5 +1,5 @@
1
- require 'udis86/types'
2
- require 'udis86/ud'
1
+ require 'ffi/udis86/types'
2
+ require 'ffi/udis86/ud'
3
3
 
4
4
  require 'ffi'
5
5
 
@@ -1,6 +1,6 @@
1
1
  module FFI
2
2
  module UDis86
3
3
  # udis86-ffi version
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  end
6
6
  end
@@ -1,4 +1 @@
1
- require 'udis86/types'
2
- require 'udis86/ffi'
3
- require 'udis86/ud'
4
- require 'udis86/version'
1
+ require 'ffi/udis86'
@@ -1,4 +1,4 @@
1
- require 'udis86/ud'
1
+ require 'ffi/udis86/ud'
2
2
 
3
3
  require 'spec_helper'
4
4
 
@@ -1,4 +1,4 @@
1
- require 'udis86/ud'
1
+ require 'ffi/udis86/ud'
2
2
 
3
3
  require 'spec_helper'
4
4
  require 'helpers/files'
@@ -1,5 +1,5 @@
1
- require 'udis86/operand'
2
- require 'udis86/ud'
1
+ require 'ffi/udis86/operand'
2
+ require 'ffi/udis86/ud'
3
3
 
4
4
  require 'spec_helper'
5
5
  require 'helpers/operands'
@@ -1,8 +1,6 @@
1
- require 'rubygems'
2
- gem 'rspec', '>=1.3.0'
3
- require 'spec'
4
-
5
- require 'udis86/version'
1
+ gem 'rspec', '~> 2.0.0'
2
+ require 'rspec'
3
+ require 'ffi/udis86/version'
6
4
 
7
5
  include FFI
8
6
  include FFI::UDis86
@@ -1,4 +1,4 @@
1
- require 'udis86/ud'
1
+ require 'ffi/udis86/ud'
2
2
 
3
3
  require 'spec_helper'
4
4
  require 'helpers/files'
@@ -46,16 +46,18 @@ describe UD do
46
46
  end
47
47
 
48
48
  describe "open" do
49
+ let(:hex) { ['90', '90', 'c3'] }
50
+
49
51
  it "should be able to open files" do
50
52
  UD.open(File.join(Helpers::FILES_DIR,'simple')) do |ud|
51
53
  ud.next_insn.should == 1
52
- ud.to_hex.should == '90'
54
+ ud.to_hex.should == hex[0]
53
55
 
54
56
  ud.next_insn.should == 1
55
- ud.to_hex.should == '90'
57
+ ud.to_hex.should == hex[1]
56
58
 
57
59
  ud.next_insn.should == 1
58
- ud.to_hex.should == 'c3'
60
+ ud.to_hex.should == hex[2]
59
61
 
60
62
  ud.next_insn.should == 0
61
63
  end
@@ -63,6 +65,9 @@ describe UD do
63
65
  end
64
66
 
65
67
  describe "disassember" do
68
+ let(:hex) { ['90', '90', 'c3'] }
69
+ let(:ops) { ['nop ', 'nop ', 'ret '] }
70
+
66
71
  before(:each) do
67
72
  File.open(File.join(Helpers::FILES_DIR,'simple'),'rb') do |file|
68
73
  @string = file.read
@@ -125,18 +130,18 @@ describe UD do
125
130
  @ud.skip(2)
126
131
 
127
132
  @ud.next_insn
128
- @ud.to_asm.should == 'ret '
133
+ @ud.to_asm.should == ops.last
129
134
  end
130
135
 
131
136
  it "should get the next instruction" do
132
137
  @ud.next_insn.should == 1
133
- @ud.to_asm.should == 'nop '
138
+ @ud.to_asm.should == ops[0]
134
139
 
135
140
  @ud.next_insn.should == 1
136
- @ud.to_asm.should == 'nop '
141
+ @ud.to_asm.should == ops[1]
137
142
 
138
143
  @ud.next_insn.should == 1
139
- @ud.to_asm.should == 'ret '
144
+ @ud.to_asm.should == ops[2]
140
145
 
141
146
  @ud.next_insn.should == 0
142
147
  end
@@ -161,7 +166,7 @@ describe UD do
161
166
 
162
167
  it "should provide hex form of the bytes" do
163
168
  @ud.next_insn.should == 1
164
- @ud.to_hex.should == '90'
169
+ @ud.to_hex.should == hex.first
165
170
  end
166
171
 
167
172
  it "should provide the mnemonic code of the disassembled instructions" do
@@ -176,7 +181,7 @@ describe UD do
176
181
 
177
182
  it "should provide the assembly form of the disassembled instructions" do
178
183
  @ud.next_insn.should == 1
179
- @ud.to_asm.should == 'nop '
184
+ @ud.to_asm.should == ops[0]
180
185
  end
181
186
 
182
187
  it "should provide the disassembled operands of the instruction" do
@@ -185,11 +190,11 @@ describe UD do
185
190
  end
186
191
 
187
192
  it "should disassemble every byte" do
188
- ops = ['nop ', 'nop ', 'ret ']
193
+ disassembled = []
189
194
 
190
- @ud.disassemble do |ud|
191
- ud.to_asm.should == ops.shift
192
- end
195
+ @ud.disassemble { |ud| disassembled << ud.to_asm }
196
+
197
+ disassembled.should == ops
193
198
  end
194
199
  end
195
200
  end
@@ -1,4 +1,4 @@
1
- require 'udis86/version'
1
+ require 'ffi/udis86/version'
2
2
 
3
3
  require 'spec_helper'
4
4
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-udis86
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Postmodern
@@ -9,39 +14,84 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-19 00:00:00 -08:00
17
+ date: 2010-11-06 00:00:00 -07:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: ffi
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 6
31
+ - 0
32
+ version: 0.6.0
17
33
  type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: ore
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
20
40
  requirements:
21
- - - ">="
41
+ - - ~>
22
42
  - !ruby/object:Gem::Version
23
- version: 0.6.2
24
- version:
43
+ segments:
44
+ - 0
45
+ - 2
46
+ - 0
47
+ version: 0.2.0
48
+ type: :development
49
+ version_requirements: *id002
25
50
  - !ruby/object:Gem::Dependency
26
- name: rspec
51
+ name: ore-tasks
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ segments:
59
+ - 0
60
+ - 1
61
+ - 2
62
+ version: 0.1.2
27
63
  type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: rspec
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
30
70
  requirements:
31
- - - ">="
71
+ - - ~>
32
72
  - !ruby/object:Gem::Version
33
- version: 1.3.0
34
- version:
73
+ segments:
74
+ - 2
75
+ - 0
76
+ - 0
77
+ version: 2.0.0
78
+ type: :development
79
+ version_requirements: *id004
35
80
  - !ruby/object:Gem::Dependency
36
81
  name: yard
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
82
+ prerelease: false
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
40
85
  requirements:
41
- - - ">="
86
+ - - ~>
42
87
  - !ruby/object:Gem::Version
43
- version: 0.5.3
44
- version:
88
+ segments:
89
+ - 0
90
+ - 6
91
+ - 0
92
+ version: 0.6.0
93
+ type: :development
94
+ version_requirements: *id005
45
95
  description: Ruby FFI bindings for udis86, a x86 and x86-64 disassembler.
46
96
  email: postmodern.mod3@gmail.com
47
97
  executables: []
@@ -49,11 +99,9 @@ executables: []
49
99
  extensions: []
50
100
 
51
101
  extra_rdoc_files:
52
- - ChangeLog.md
53
- - LICENSE.txt
54
102
  - README.md
55
103
  files:
56
- - .gitignore
104
+ - .rspec
57
105
  - .specopts
58
106
  - .yardopts
59
107
  - ChangeLog.md
@@ -61,14 +109,16 @@ files:
61
109
  - README.md
62
110
  - Rakefile
63
111
  - ffi-udis86.gemspec
112
+ - gemspec.yml
113
+ - lib/ffi/udis86.rb
114
+ - lib/ffi/udis86/operand.rb
115
+ - lib/ffi/udis86/operand_pointer.rb
116
+ - lib/ffi/udis86/operand_value.rb
117
+ - lib/ffi/udis86/types.rb
118
+ - lib/ffi/udis86/ud.rb
119
+ - lib/ffi/udis86/udis86.rb
120
+ - lib/ffi/udis86/version.rb
64
121
  - lib/udis86.rb
65
- - lib/udis86/ffi.rb
66
- - lib/udis86/operand.rb
67
- - lib/udis86/operand_pointer.rb
68
- - lib/udis86/operand_value.rb
69
- - lib/udis86/types.rb
70
- - lib/udis86/ud.rb
71
- - lib/udis86/version.rb
72
122
  - spec/helpers/files.rb
73
123
  - spec/helpers/files/operands_index_scale
74
124
  - spec/helpers/files/operands_index_scale.s
@@ -87,36 +137,37 @@ files:
87
137
  - spec/udis86_spec.rb
88
138
  has_rdoc: yard
89
139
  homepage: http://github.com/sophsec/ffi-udis86
90
- licenses: []
91
-
140
+ licenses:
141
+ - MIT
92
142
  post_install_message:
93
- rdoc_options:
94
- - --charset=UTF-8
143
+ rdoc_options: []
144
+
95
145
  require_paths:
96
146
  - lib
97
147
  required_ruby_version: !ruby/object:Gem::Requirement
148
+ none: false
98
149
  requirements:
99
150
  - - ">="
100
151
  - !ruby/object:Gem::Version
152
+ segments:
153
+ - 0
101
154
  version: "0"
102
- version:
103
155
  required_rubygems_version: !ruby/object:Gem::Requirement
156
+ none: false
104
157
  requirements:
105
158
  - - ">="
106
159
  - !ruby/object:Gem::Version
160
+ segments:
161
+ - 0
107
162
  version: "0"
108
- version:
109
- requirements: []
110
-
111
- rubyforge_project:
112
- rubygems_version: 1.3.5
163
+ requirements:
164
+ - udis86, 1.7 or greater
165
+ rubyforge_project: ffi-udis86
166
+ rubygems_version: 1.3.7
113
167
  signing_key:
114
168
  specification_version: 3
115
169
  summary: Ruby FFI bindings for udis86, a x86 and x86-64 disassembler.
116
170
  test_files:
117
- - spec/spec_helper.rb
118
- - spec/udis86_spec.rb
119
171
  - spec/ud_spec.rb
120
- - spec/helpers/files.rb
121
- - spec/helpers/operands.rb
122
172
  - spec/operand_spec.rb
173
+ - spec/udis86_spec.rb
data/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- doc
2
- pkg
3
- tmp/*
4
- .DS_Store
5
- .yardoc
6
- *.o
7
- *.swp
8
- *~