ffi-udis86 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/ChangeLog.md +9 -0
- data/README.md +42 -3
- data/Rakefile +20 -27
- data/ffi-udis86.gemspec +6 -84
- data/gemspec.yml +19 -0
- data/lib/ffi/udis86.rb +4 -0
- data/lib/{udis86 → ffi/udis86}/operand.rb +9 -9
- data/lib/{udis86 → ffi/udis86}/operand_pointer.rb +0 -0
- data/lib/{udis86 → ffi/udis86}/operand_value.rb +1 -1
- data/lib/{udis86 → ffi/udis86}/types.rb +10 -2
- data/lib/{udis86 → ffi/udis86}/ud.rb +11 -18
- data/lib/{udis86/ffi.rb → ffi/udis86/udis86.rb} +2 -2
- data/lib/{udis86 → ffi/udis86}/version.rb +1 -1
- data/lib/udis86.rb +1 -4
- data/spec/helpers/files.rb +1 -1
- data/spec/helpers/operands.rb +1 -1
- data/spec/operand_spec.rb +2 -2
- data/spec/spec_helper.rb +3 -5
- data/spec/ud_spec.rb +19 -14
- data/spec/udis86_spec.rb +1 -1
- metadata +94 -43
- data/.gitignore +0 -8
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour --format documentation
|
data/ChangeLog.md
CHANGED
@@ -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
|
-
* [
|
4
|
-
* [
|
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)
|
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
|
-
|
7
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
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 "
|
33
|
+
abort "Please run `gem install yard` to install YARD."
|
41
34
|
end
|
42
35
|
end
|
data/ffi-udis86.gemspec
CHANGED
@@ -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
|
-
|
7
|
-
|
8
|
-
|
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
|
-
|
data/gemspec.yml
ADDED
@@ -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
|
data/lib/ffi/udis86.rb
ADDED
@@ -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 [
|
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
|
117
|
+
# The base register used by the operand.
|
118
118
|
#
|
119
|
-
# @return [
|
120
|
-
# The base
|
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
|
129
|
+
# The index register used by the operand.
|
130
130
|
#
|
131
|
-
# @return [
|
132
|
-
# The index
|
131
|
+
# @return [Symbol]
|
132
|
+
# The index register of the operand.
|
133
133
|
#
|
134
134
|
def index
|
135
135
|
REGS[self[:index]]
|
File without changes
|
@@ -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/
|
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={}
|
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
|
-
|
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
|
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
|
543
|
+
def disassemble
|
551
544
|
until UDis86.ud_disassemble(self) == 0
|
552
|
-
|
545
|
+
yield self if block_given?
|
553
546
|
end
|
554
547
|
|
555
548
|
return self
|
556
549
|
end
|
557
550
|
|
558
|
-
alias
|
559
|
-
alias
|
551
|
+
alias disas disassemble
|
552
|
+
alias each disassemble
|
560
553
|
|
561
554
|
end
|
562
555
|
end
|
data/lib/udis86.rb
CHANGED
data/spec/helpers/files.rb
CHANGED
data/spec/helpers/operands.rb
CHANGED
data/spec/operand_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
data/spec/ud_spec.rb
CHANGED
@@ -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 ==
|
54
|
+
ud.to_hex.should == hex[0]
|
53
55
|
|
54
56
|
ud.next_insn.should == 1
|
55
|
-
ud.to_hex.should ==
|
57
|
+
ud.to_hex.should == hex[1]
|
56
58
|
|
57
59
|
ud.next_insn.should == 1
|
58
|
-
ud.to_hex.should ==
|
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 ==
|
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 ==
|
138
|
+
@ud.to_asm.should == ops[0]
|
134
139
|
|
135
140
|
@ud.next_insn.should == 1
|
136
|
-
@ud.to_asm.should ==
|
141
|
+
@ud.to_asm.should == ops[1]
|
137
142
|
|
138
143
|
@ud.next_insn.should == 1
|
139
|
-
@ud.to_asm.should ==
|
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 ==
|
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 ==
|
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
|
-
|
193
|
+
disassembled = []
|
189
194
|
|
190
|
-
@ud.disassemble
|
191
|
-
|
192
|
-
|
195
|
+
@ud.disassemble { |ud| disassembled << ud.to_asm }
|
196
|
+
|
197
|
+
disassembled.should == ops
|
193
198
|
end
|
194
199
|
end
|
195
200
|
end
|
data/spec/udis86_spec.rb
CHANGED
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
|
-
|
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-
|
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
|
-
|
19
|
-
|
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
|
-
|
24
|
-
|
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:
|
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
|
-
|
29
|
-
|
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
|
-
|
34
|
-
|
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
|
-
|
38
|
-
|
39
|
-
|
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
|
-
|
44
|
-
|
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
|
-
- .
|
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
|
-
|
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
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
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
|