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 +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
|