Opdis 1.3.0
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/ChangeLog +2 -0
- data/LICENSE +674 -0
- data/LICENSE.README +8 -0
- data/README +101 -0
- data/examples/array_linear.rb +23 -0
- data/examples/bfd_entry.rb +24 -0
- data/examples/bfd_section.rb +24 -0
- data/examples/bfd_symbol.rb +27 -0
- data/examples/buf_linear.rb +25 -0
- data/examples/decoder.rb +45 -0
- data/examples/file_linear.rb +31 -0
- data/examples/libopcodes_options.rb +11 -0
- data/examples/resolver.rb +191 -0
- data/examples/supported_architectures.rb +11 -0
- data/examples/visited_handler.rb +61 -0
- data/examples/x86_decoder.rb +46 -0
- data/lib/Opdis.rb +123 -0
- data/module/Arch.c +364 -0
- data/module/Arch.h +37 -0
- data/module/Callbacks.c +266 -0
- data/module/Callbacks.h +43 -0
- data/module/Model.c +1275 -0
- data/module/Model.h +230 -0
- data/module/Opdis.c +850 -0
- data/module/Opdis.h +89 -0
- data/module/extconf.rb +126 -0
- data/module/rdoc_input/Callbacks.rb +143 -0
- data/module/rdoc_input/Model.rb +636 -0
- data/module/rdoc_input/Opdis.rb +253 -0
- data/module/ruby_compat.c +72 -0
- data/module/ruby_compat.h +25 -0
- data/tests/ut_opdis.rb +30 -0
- data/tests/ut_opdis_bfd.rb +556 -0
- metadata +109 -0
@@ -0,0 +1,253 @@
|
|
1
|
+
#!/usr/bin/env ruby1.9
|
2
|
+
# :title: Opdis
|
3
|
+
=begin rdoc
|
4
|
+
=Opdis
|
5
|
+
<i>Copyright 2010 Thoughtgang <http://www.thoughtgang.org></i>
|
6
|
+
|
7
|
+
= Opdis Disassembler
|
8
|
+
|
9
|
+
== Summary
|
10
|
+
|
11
|
+
The Opdis Disassembler is a wrapper libopdis, which requires GNU binutils.
|
12
|
+
Currently the BFD gemis required.
|
13
|
+
|
14
|
+
== Example
|
15
|
+
|
16
|
+
require 'BFD'
|
17
|
+
require 'Opdis'
|
18
|
+
|
19
|
+
o = Opdis.Disassembler.new() # Create disassembler
|
20
|
+
|
21
|
+
Bfd::Target.new( filename ) do |tgt|
|
22
|
+
# Control-flow disassembly from BFD entry point
|
23
|
+
|
24
|
+
o.disassemble( tgt, strategy: o.STRATEGY_ENTRY ) do |i|
|
25
|
+
# ... do something with instruction
|
26
|
+
end
|
27
|
+
|
28
|
+
# Control-flow disassembly from offset 0 in target
|
29
|
+
insns = o.disassemble( t, strategy: o.STRATEGY_CFLOW, start: 0 )
|
30
|
+
insn.each { |i| puts i }
|
31
|
+
|
32
|
+
# Linear disassembly of 100 bytes starting at offset 0
|
33
|
+
insns = o.disassemble( t, start: 0, len : 100 )
|
34
|
+
insn.each { |i| puts i }
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
# disassemble the bytes 0x90 (nop) and 0xCC (int3)
|
39
|
+
o.disassemble( [0x90, 0xCC] ) { |i| puts i }
|
40
|
+
|
41
|
+
# the same, using a string
|
42
|
+
o.disassemble( "\x90\xCC" ) { |i| puts i }
|
43
|
+
|
44
|
+
== Contact
|
45
|
+
Support:: community@thoughtgang.org
|
46
|
+
Project:: http://rubyforge.org/projects/opdis/
|
47
|
+
=end
|
48
|
+
|
49
|
+
module Opdis
|
50
|
+
|
51
|
+
=begin rdoc
|
52
|
+
|
53
|
+
=end
|
54
|
+
class Disassembler
|
55
|
+
|
56
|
+
=begin rdoc
|
57
|
+
The object used to decode Instruction objects.
|
58
|
+
|
59
|
+
See Opdis::InstructionDecoder.
|
60
|
+
=end
|
61
|
+
attr_accessor :insn_decoder
|
62
|
+
|
63
|
+
=begin rdoc
|
64
|
+
The object used to track visited addresses.
|
65
|
+
|
66
|
+
See Opdis::VisitedAddressTracker.
|
67
|
+
=end
|
68
|
+
attr_accessor :addr_tracker
|
69
|
+
|
70
|
+
=begin rdoc
|
71
|
+
The object used to resolve instruction operands to VMAs.
|
72
|
+
|
73
|
+
See Opdis::AddressResolver.
|
74
|
+
=end
|
75
|
+
attr_accessor :resolver
|
76
|
+
|
77
|
+
=begin rdoc
|
78
|
+
The debug flag for libopdis.
|
79
|
+
=end
|
80
|
+
attr_accessor :debug
|
81
|
+
|
82
|
+
=begin rdoc
|
83
|
+
The syntax of the strings generated by libopcodes (AT&T or Intel).
|
84
|
+
=end
|
85
|
+
attr_accessor :syntax
|
86
|
+
|
87
|
+
=begin rdoc
|
88
|
+
The architecture that targets will be disassembled for.
|
89
|
+
=end
|
90
|
+
attr_accessor :arch
|
91
|
+
|
92
|
+
=begin rdoc
|
93
|
+
The <i>disassembler_options</i> field for libopcodes.
|
94
|
+
=end
|
95
|
+
attr_accessor :opcodes_options
|
96
|
+
|
97
|
+
=begin rdoc
|
98
|
+
Disassemble a single instruction at the specified VMA.
|
99
|
+
=end
|
100
|
+
STRATEGY_SINGLE='single'
|
101
|
+
=begin rdoc
|
102
|
+
Disassemble all instructions in buffer starting at the specified VMA. The
|
103
|
+
instructions are created by disassembling sequential memory addresses, with no
|
104
|
+
regard to control flow.
|
105
|
+
=end
|
106
|
+
STRATEGY_LINEAR='linear'
|
107
|
+
=begin rdoc
|
108
|
+
Disassemble instructions in a buffer starting at a given VMA (the entry point).
|
109
|
+
The algorithm recurses to follow the target operands of jump and call
|
110
|
+
instructions, and returns when an unconditional jump or a return instruction
|
111
|
+
is encountered.
|
112
|
+
=end
|
113
|
+
STRATEGY_CFLOW='cflow'
|
114
|
+
=begin rdoc
|
115
|
+
Perform a control-flow disassembly using the specified BFD::Symbol object as
|
116
|
+
an entry point. Requires that the target be a Bfd::Symbol object.
|
117
|
+
=end
|
118
|
+
STRATEGY_SYMBOL='bfd-symbol'
|
119
|
+
=begin rdoc
|
120
|
+
Perform a linear disassembly on the specified BFD::Section. Requires that the
|
121
|
+
target be a Bfd::Section object.
|
122
|
+
=end
|
123
|
+
STRATEGY_SECTION='bfd-section'
|
124
|
+
=begin rdoc
|
125
|
+
Perform a control-flow disassembly on the specified BFD object using its
|
126
|
+
entry point (or <b>start_address</b>). Requires that the target be a
|
127
|
+
Bfd::Target object.
|
128
|
+
=end
|
129
|
+
STRATEGY_ENTRY='bfd-entry'
|
130
|
+
|
131
|
+
=begin rdoc
|
132
|
+
Available disassembler strategies.
|
133
|
+
=end
|
134
|
+
STRATEGIES = [ STRATEGY_SINGLE, STRATEGY_LINEAR, STRATEGY_CFLOW,
|
135
|
+
STRATEGY_SYMBOL, STRATEGY_SECTION, STRATEGY_ENTRY ]
|
136
|
+
|
137
|
+
=begin rdoc
|
138
|
+
AT&T assembly language syntax (src, dest).
|
139
|
+
=end
|
140
|
+
SYNTAX_ATT='att'
|
141
|
+
=begin rdoc
|
142
|
+
Intel assembly language syntax (dest, src).
|
143
|
+
=end
|
144
|
+
SYNTAX_INTEL='intel'
|
145
|
+
|
146
|
+
=begin rdoc
|
147
|
+
=end
|
148
|
+
SYNTAXES = [ SYNTAX_ATT, SYNTAX_INTEL ]
|
149
|
+
|
150
|
+
=begin rdoc
|
151
|
+
Disassemble all bytes in a target.
|
152
|
+
|
153
|
+
The target parameter can be a String of bytes, an Array of bytes, a
|
154
|
+
Bfd::Target, a Bfd::Section, or a Bfd::Symbol.
|
155
|
+
|
156
|
+
The args parameter is a Hash which can contain any of the following members:
|
157
|
+
|
158
|
+
resolver:: AddressResolver object to use instead of the builtin
|
159
|
+
address resolver.
|
160
|
+
|
161
|
+
addr_tracker:: VisitedAddressTracker object to use instead of the built-in
|
162
|
+
address tracker.
|
163
|
+
|
164
|
+
insn_decoder:: InstructionDecoder object to use instead of the built-in
|
165
|
+
instruction decoder.
|
166
|
+
|
167
|
+
syntax:: Assembly language syntax to use; either SYNTAX_ATT (default) or
|
168
|
+
SYNTAX_INTEL.
|
169
|
+
|
170
|
+
debug:: Enable or disable libopdis debug mode.
|
171
|
+
|
172
|
+
options:: Options command-line string for libopcodes. See disassembler_usage()
|
173
|
+
in dis-asm.h for details.
|
174
|
+
|
175
|
+
arch:: The architecture to disassemble for.
|
176
|
+
|
177
|
+
strategy:: This disassembly algorithm to use. Default is STRATEGY_LINEAR.
|
178
|
+
|
179
|
+
vma:: The VMA to start disassembly at. Default is 0.
|
180
|
+
|
181
|
+
length:: The number of bytes to disassemble. Default is the entire buffer.
|
182
|
+
|
183
|
+
buffer_vma:: The load address of the target. This is only needed when the
|
184
|
+
target is a String or Array; BFD targets will provide their
|
185
|
+
own VMAs. Default is 0.
|
186
|
+
=end
|
187
|
+
def ext_disassemble(target, args) # :yields: instructions
|
188
|
+
end
|
189
|
+
|
190
|
+
=begin rdoc
|
191
|
+
Instantiate a new Disassembler object.
|
192
|
+
|
193
|
+
|
194
|
+
The args parameter is a Hash which can contain any of the following members:
|
195
|
+
|
196
|
+
resolver:: AddressResolver object to use instead of the builtin
|
197
|
+
address resolver.
|
198
|
+
|
199
|
+
addr_tracker:: VisitedAddressTracker object to use instead of the built-in
|
200
|
+
address tracker.
|
201
|
+
|
202
|
+
insn_decoder:: InstructionDecoder object to use instead of the built-in
|
203
|
+
instruction decoder.
|
204
|
+
|
205
|
+
syntax:: Assembly language syntax to use; either SYNTAX_ATT (default) or
|
206
|
+
SYNTAX_INTEL.
|
207
|
+
|
208
|
+
debug:: Enable or disable libopdis debug mode.
|
209
|
+
|
210
|
+
options:: Options command-line string for libopcodes. See disassembler_usage()
|
211
|
+
in dis-asm.h for details.
|
212
|
+
|
213
|
+
arch:: The architecture to disassemble for.
|
214
|
+
=end
|
215
|
+
def initialize( args ) # :yields: disassembler
|
216
|
+
end
|
217
|
+
|
218
|
+
=begin rdoc
|
219
|
+
Returns a list of all supported architectures.
|
220
|
+
=end
|
221
|
+
def architectures()
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
=begin rdoc
|
226
|
+
Writes the output of disassembler_usage() in libopcodes to the supplied IO
|
227
|
+
object.
|
228
|
+
=end
|
229
|
+
def ext_usage( io )
|
230
|
+
end
|
231
|
+
|
232
|
+
=begin rdoc
|
233
|
+
Disassembler output.
|
234
|
+
|
235
|
+
This consists of a hash mapping VMA keys to Instruction objects. The Disassembly
|
236
|
+
object also contains an internal array of error messages generated by the
|
237
|
+
disassembler.
|
238
|
+
=end
|
239
|
+
class Disassembly < Hash
|
240
|
+
|
241
|
+
=begin rdoc
|
242
|
+
An array of error messages encountered during disassembly.
|
243
|
+
=end
|
244
|
+
attr_reader :errors
|
245
|
+
|
246
|
+
=begin rdoc
|
247
|
+
Returns the Instruction object containing VMA.
|
248
|
+
=end
|
249
|
+
def containing(vma)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
/* ruby_compat.c
|
2
|
+
* Copyright 2010 Thoughtgang <http://www.thoughtgang.org>
|
3
|
+
* Written by TG Community Developers <community@thoughtgang.org>
|
4
|
+
* Released under the GNU Public License, version 3.
|
5
|
+
* See http://www.gnu.org/licenses/gpl.txt for details.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <ruby.h>
|
9
|
+
|
10
|
+
#ifdef RUBY_18
|
11
|
+
|
12
|
+
VALUE Opdis_rb_hash_lookup2( VALUE hash, VALUE key, VALUE def ) {
|
13
|
+
VALUE v = rb_hash_lookup(hash, key);
|
14
|
+
return (v == Qnil) ? def : v;
|
15
|
+
}
|
16
|
+
|
17
|
+
#endif
|
18
|
+
|
19
|
+
/* ---------------------------------------------------------------------- */
|
20
|
+
/* rb_path2class from variable.c reimplemented to NOT throw exceptions
|
21
|
+
* when a class isn't found. */
|
22
|
+
VALUE Opdis_path2class(const char * path) {
|
23
|
+
const char *pbeg, *p;
|
24
|
+
ID id;
|
25
|
+
VALUE c = rb_cObject;
|
26
|
+
|
27
|
+
pbeg = p = path;
|
28
|
+
|
29
|
+
if (path[0] == '#') {
|
30
|
+
rb_raise(rb_eArgError, "can't retrieve anonymous class %s",
|
31
|
+
path);
|
32
|
+
}
|
33
|
+
|
34
|
+
while (*p) {
|
35
|
+
#ifdef RUBY_18
|
36
|
+
VALUE str;
|
37
|
+
while (*p && *p != ':') p++;
|
38
|
+
str = rb_str_new(pbeg, p-pbeg);
|
39
|
+
id = rb_intern(RSTRING(str)->ptr);
|
40
|
+
#endif
|
41
|
+
|
42
|
+
#ifdef RUBY_19
|
43
|
+
while (*p && *p != ':') p++;
|
44
|
+
id = rb_intern2(pbeg, p-pbeg);
|
45
|
+
#endif
|
46
|
+
if (p[0] == ':') {
|
47
|
+
if (p[1] != ':') {
|
48
|
+
rb_raise(rb_eArgError,
|
49
|
+
"undefined class/module %.*s",
|
50
|
+
(int)(p-path), path);
|
51
|
+
}
|
52
|
+
p += 2;
|
53
|
+
pbeg = p;
|
54
|
+
}
|
55
|
+
|
56
|
+
if (!rb_const_defined(c, id)) {
|
57
|
+
return Qnil;
|
58
|
+
}
|
59
|
+
|
60
|
+
c = rb_const_get_at(c, id);
|
61
|
+
switch (TYPE(c)) {
|
62
|
+
case T_MODULE:
|
63
|
+
case T_CLASS:
|
64
|
+
break;
|
65
|
+
default:
|
66
|
+
rb_raise(rb_eTypeError,
|
67
|
+
"%s does not refer to class/module", path);
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
return c;
|
72
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* ruby_compat.h
|
2
|
+
* Macros to make ruby1.8 look like ruby1.9.
|
3
|
+
* Copyright 2010 Thoughtgang <http://www.thoughtgang.org>
|
4
|
+
* Written by TG Community Developers <community@thoughtgang.org>
|
5
|
+
* Released under the GNU Public License, version 3.
|
6
|
+
* See http://www.gnu.org/licenses/gpl.txt for details.
|
7
|
+
*/
|
8
|
+
|
9
|
+
#ifndef RUBY_COMPAT_H
|
10
|
+
#define RUBY_COMPAT_H
|
11
|
+
|
12
|
+
#include <ruby.h>
|
13
|
+
|
14
|
+
#ifdef RUBY_18
|
15
|
+
#include <stdarg.h>
|
16
|
+
#define rb_str_new_cstr(arg) rb_str_new2(arg)
|
17
|
+
|
18
|
+
VALUE Opdis_rb_hash_lookup2(VALUE, VALUE, VALUE);
|
19
|
+
#define rb_hash_lookup2( a1, a2, a3 ) Opdis_rb_hash_lookup2(a1, a2, a3)
|
20
|
+
#endif
|
21
|
+
|
22
|
+
VALUE Opdis_path2class(const char * path);
|
23
|
+
#define path2class(path) Opdis_path2class(path)
|
24
|
+
|
25
|
+
#endif
|
data/tests/ut_opdis.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2010 Thoughtgang <http://www.thoughtgang.org>
|
3
|
+
# Unit test for Opdis module
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'rubygems'
|
7
|
+
require 'Opdis'
|
8
|
+
|
9
|
+
class TC_OpdisModule < Test::Unit::TestCase
|
10
|
+
|
11
|
+
def hex_buf( arr )
|
12
|
+
arr.collect{ |i| i.hex }.pack('C*')
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_buffer_nop
|
16
|
+
Opdis::Disassembler.new( :arch => 'x86' ) do |dis|
|
17
|
+
ops = dis.disassemble( hex_buf(%w{ 90 90 90 }) )
|
18
|
+
assert_equal( 3, ops.length )
|
19
|
+
assert_equal( 'nop', ops[0].mnemonic )
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_buffer_int3
|
24
|
+
Opdis::Disassembler.new( :arch => 'x86' ) do |dis|
|
25
|
+
ops = dis.disassemble( hex_buf(%w{ CC CC CC }) )
|
26
|
+
assert_equal( 3, ops.length )
|
27
|
+
assert_equal( 'int3', ops[0].mnemonic )
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,556 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2010 Thoughtgang <http://www.thoughtgang.org>
|
3
|
+
# Unit test for Opdis module BFD support
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'rubygems'
|
7
|
+
require 'Opdis'
|
8
|
+
require 'BFD'
|
9
|
+
|
10
|
+
class TC_OpdisModuleBfd < Test::Unit::TestCase
|
11
|
+
|
12
|
+
# Note: this is an x86-64 GCC compilation of the very basic C program
|
13
|
+
# int main(void) { return 666; }
|
14
|
+
TARGET_BUF = %w{
|
15
|
+
7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
|
16
|
+
02 00 3e 00 01 00 00 00 e0 03 40 00 00 00 00 00
|
17
|
+
40 00 00 00 00 00 00 00 40 11 00 00 00 00 00 00
|
18
|
+
00 00 00 00 40 00 38 00 09 00 40 00 1f 00 1c 00
|
19
|
+
06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00
|
20
|
+
40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00
|
21
|
+
f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00
|
22
|
+
08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00
|
23
|
+
38 02 00 00 00 00 00 00 38 02 40 00 00 00 00 00
|
24
|
+
38 02 40 00 00 00 00 00 1c 00 00 00 00 00 00 00
|
25
|
+
1c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
|
26
|
+
01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00
|
27
|
+
00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 00
|
28
|
+
54 06 00 00 00 00 00 00 54 06 00 00 00 00 00 00
|
29
|
+
00 00 20 00 00 00 00 00 01 00 00 00 06 00 00 00
|
30
|
+
18 0e 00 00 00 00 00 00 18 0e 60 00 00 00 00 00
|
31
|
+
18 0e 60 00 00 00 00 00 00 02 00 00 00 00 00 00
|
32
|
+
10 02 00 00 00 00 00 00 00 00 20 00 00 00 00 00
|
33
|
+
02 00 00 00 06 00 00 00 40 0e 00 00 00 00 00 00
|
34
|
+
40 0e 60 00 00 00 00 00 40 0e 60 00 00 00 00 00
|
35
|
+
a0 01 00 00 00 00 00 00 a0 01 00 00 00 00 00 00
|
36
|
+
08 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00
|
37
|
+
54 02 00 00 00 00 00 00 54 02 40 00 00 00 00 00
|
38
|
+
54 02 40 00 00 00 00 00 44 00 00 00 00 00 00 00
|
39
|
+
44 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
|
40
|
+
50 e5 74 64 04 00 00 00 bc 05 00 00 00 00 00 00
|
41
|
+
bc 05 40 00 00 00 00 00 bc 05 40 00 00 00 00 00
|
42
|
+
24 00 00 00 00 00 00 00 24 00 00 00 00 00 00 00
|
43
|
+
04 00 00 00 00 00 00 00 51 e5 74 64 06 00 00 00
|
44
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
45
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
46
|
+
00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00
|
47
|
+
52 e5 74 64 04 00 00 00 18 0e 00 00 00 00 00 00
|
48
|
+
18 0e 60 00 00 00 00 00 18 0e 60 00 00 00 00 00
|
49
|
+
e8 01 00 00 00 00 00 00 e8 01 00 00 00 00 00 00
|
50
|
+
01 00 00 00 00 00 00 00 2f 6c 69 62 36 34 2f 6c
|
51
|
+
64 2d 6c 69 6e 75 78 2d 78 38 36 2d 36 34 2e 73
|
52
|
+
6f 2e 32 00 04 00 00 00 10 00 00 00 01 00 00 00
|
53
|
+
47 4e 55 00 00 00 00 00 02 00 00 00 06 00 00 00
|
54
|
+
0f 00 00 00 04 00 00 00 14 00 00 00 03 00 00 00
|
55
|
+
47 4e 55 00 e0 01 67 5d 37 02 90 5f c1 b1 93 56
|
56
|
+
2e ff 8c c6 13 be 47 5e 01 00 00 00 03 00 00 00
|
57
|
+
02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
|
58
|
+
01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00
|
59
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
60
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
61
|
+
00 00 00 00 00 00 00 00 01 00 00 00 20 00 00 00
|
62
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
63
|
+
1a 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00
|
64
|
+
00 00 00 00 00 00 00 00 00 5f 5f 67 6d 6f 6e 5f
|
65
|
+
73 74 61 72 74 5f 5f 00 6c 69 62 63 2e 73 6f 2e
|
66
|
+
36 00 5f 5f 6c 69 62 63 5f 73 74 61 72 74 5f 6d
|
67
|
+
61 69 6e 00 47 4c 49 42 43 5f 32 2e 32 2e 35 00
|
68
|
+
00 00 00 00 02 00 00 00 01 00 01 00 10 00 00 00
|
69
|
+
10 00 00 00 00 00 00 00 75 1a 69 09 00 00 02 00
|
70
|
+
2c 00 00 00 00 00 00 00 e0 0f 60 00 00 00 00 00
|
71
|
+
06 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
|
72
|
+
00 10 60 00 00 00 00 00 07 00 00 00 02 00 00 00
|
73
|
+
00 00 00 00 00 00 00 00 48 83 ec 08 e8 5b 00 00
|
74
|
+
00 e8 ea 00 00 00 e8 b5 01 00 00 48 83 c4 08 c3
|
75
|
+
ff 35 2a 0c 20 00 ff 25 2c 0c 20 00 0f 1f 40 00
|
76
|
+
ff 25 2a 0c 20 00 68 00 00 00 00 e9 e0 ff ff ff
|
77
|
+
31 ed 49 89 d1 5e 48 89 e2 48 83 e4 f0 50 54 49
|
78
|
+
c7 c0 d0 04 40 00 48 c7 c1 e0 04 40 00 48 c7 c7
|
79
|
+
c4 04 40 00 e8 c7 ff ff ff f4 90 90 48 83 ec 08
|
80
|
+
48 8b 05 c9 0b 20 00 48 85 c0 74 02 ff d0 48 83
|
81
|
+
c4 08 c3 90 90 90 90 90 90 90 90 90 90 90 90 90
|
82
|
+
55 48 89 e5 53 48 83 ec 08 80 3d d8 0b 20 00 00
|
83
|
+
75 4b bb 30 0e 60 00 48 8b 05 d2 0b 20 00 48 81
|
84
|
+
eb 28 0e 60 00 48 c1 fb 03 48 83 eb 01 48 39 d8
|
85
|
+
73 24 66 0f 1f 44 00 00 48 83 c0 01 48 89 05 ad
|
86
|
+
0b 20 00 ff 14 c5 28 0e 60 00 48 8b 05 9f 0b 20
|
87
|
+
00 48 39 d8 72 e2 c6 05 8b 0b 20 00 01 48 83 c4
|
88
|
+
08 5b c9 c3 66 66 66 2e 0f 1f 84 00 00 00 00 00
|
89
|
+
55 48 83 3d 8f 09 20 00 00 48 89 e5 74 12 b8 00
|
90
|
+
00 00 00 48 85 c0 74 08 bf 38 0e 60 00 c9 ff e0
|
91
|
+
c9 c3 90 90 b8 9a 02 00 00 c3 90 90 90 90 90 90
|
92
|
+
f3 c3 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
|
93
|
+
48 89 6c 24 d8 4c 89 64 24 e0 48 8d 2d 23 09 20
|
94
|
+
00 4c 8d 25 1c 09 20 00 4c 89 6c 24 e8 4c 89 74
|
95
|
+
24 f0 4c 89 7c 24 f8 48 89 5c 24 d0 48 83 ec 38
|
96
|
+
4c 29 e5 41 89 fd 49 89 f6 48 c1 fd 03 49 89 d7
|
97
|
+
e8 83 fe ff ff 48 85 ed 74 1c 31 db 0f 1f 40 00
|
98
|
+
4c 89 fa 4c 89 f6 44 89 ef 41 ff 14 dc 48 83 c3
|
99
|
+
01 48 39 eb 72 ea 48 8b 5c 24 08 48 8b 6c 24 10
|
100
|
+
4c 8b 64 24 18 4c 8b 6c 24 20 4c 8b 74 24 28 4c
|
101
|
+
8b 7c 24 30 48 83 c4 38 c3 90 90 90 90 90 90 90
|
102
|
+
55 48 89 e5 53 48 83 ec 08 48 8b 05 98 08 20 00
|
103
|
+
48 83 f8 ff 74 19 bb 18 0e 60 00 0f 1f 44 00 00
|
104
|
+
48 83 eb 08 ff d0 48 8b 03 48 83 f8 ff 75 f1 48
|
105
|
+
83 c4 08 5b c9 c3 90 90 48 83 ec 08 e8 7f fe ff
|
106
|
+
ff 48 83 c4 08 c3 00 00 01 00 02 00 01 1b 03 3b
|
107
|
+
20 00 00 00 03 00 00 00 08 ff ff ff 3c 00 00 00
|
108
|
+
14 ff ff ff 54 00 00 00 24 ff ff ff 6c 00 00 00
|
109
|
+
14 00 00 00 00 00 00 00 01 7a 52 00 01 78 10 01
|
110
|
+
1b 0c 07 08 90 01 00 00 14 00 00 00 1c 00 00 00
|
111
|
+
c4 fe ff ff 06 00 00 00 00 00 00 00 00 00 00 00
|
112
|
+
14 00 00 00 34 00 00 00 b8 fe ff ff 02 00 00 00
|
113
|
+
00 00 00 00 00 00 00 00 24 00 00 00 4c 00 00 00
|
114
|
+
b0 fe ff ff 89 00 00 00 00 51 8c 05 86 06 5f 0e
|
115
|
+
40 46 83 07 8f 02 8e 03 8d 04 00 00 00 00 00 00
|
116
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
117
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
118
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
119
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
120
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
121
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
122
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
123
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
124
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
125
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
126
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
127
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
128
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
129
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
130
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
131
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
132
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
133
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
134
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
135
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
136
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
137
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
138
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
139
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
140
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
141
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
142
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
143
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
144
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
145
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
146
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
147
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
148
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
149
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
150
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
151
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
152
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
153
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
154
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
155
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
156
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
157
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
158
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
159
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
160
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
161
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
162
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
163
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
164
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
165
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
166
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
167
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
168
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
169
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
170
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
171
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
172
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
173
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
174
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
175
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
176
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
177
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
178
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
179
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
180
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
181
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
182
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
183
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
184
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
185
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
186
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
187
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
188
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
189
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
190
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
191
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
192
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
193
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
194
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
195
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
196
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
197
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
198
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
199
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
200
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
201
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
202
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
203
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
204
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
205
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
206
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
207
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
208
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
209
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
210
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
211
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
212
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
213
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
214
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
215
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
216
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
217
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
218
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
219
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
220
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
221
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
222
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
223
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
224
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
225
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
226
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
227
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
228
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
229
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
230
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
231
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
232
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
233
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
234
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
235
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
236
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
237
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
238
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
239
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
240
|
+
00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff
|
241
|
+
00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff
|
242
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
243
|
+
01 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00
|
244
|
+
0c 00 00 00 00 00 00 00 a8 03 40 00 00 00 00 00
|
245
|
+
0d 00 00 00 00 00 00 00 a8 05 40 00 00 00 00 00
|
246
|
+
04 00 00 00 00 00 00 00 98 02 40 00 00 00 00 00
|
247
|
+
f5 fe ff 6f 00 00 00 00 b0 02 40 00 00 00 00 00
|
248
|
+
05 00 00 00 00 00 00 00 18 03 40 00 00 00 00 00
|
249
|
+
06 00 00 00 00 00 00 00 d0 02 40 00 00 00 00 00
|
250
|
+
0a 00 00 00 00 00 00 00 38 00 00 00 00 00 00 00
|
251
|
+
0b 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00
|
252
|
+
15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
253
|
+
03 00 00 00 00 00 00 00 e8 0f 60 00 00 00 00 00
|
254
|
+
02 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00
|
255
|
+
14 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00
|
256
|
+
17 00 00 00 00 00 00 00 90 03 40 00 00 00 00 00
|
257
|
+
07 00 00 00 00 00 00 00 78 03 40 00 00 00 00 00
|
258
|
+
08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00
|
259
|
+
09 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00
|
260
|
+
fe ff ff 6f 00 00 00 00 58 03 40 00 00 00 00 00
|
261
|
+
ff ff ff 6f 00 00 00 00 01 00 00 00 00 00 00 00
|
262
|
+
f0 ff ff 6f 00 00 00 00 50 03 40 00 00 00 00 00
|
263
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
264
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
265
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
266
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
267
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
268
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
269
|
+
00 00 00 00 00 00 00 00 40 0e 60 00 00 00 00 00
|
270
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
271
|
+
d6 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
272
|
+
00 00 00 00 00 00 00 00 47 43 43 3a 20 28 55 62
|
273
|
+
75 6e 74 75 20 34 2e 34 2e 33 2d 34 75 62 75 6e
|
274
|
+
74 75 35 29 20 34 2e 34 2e 33 00 00 2e 73 79 6d
|
275
|
+
74 61 62 00 2e 73 74 72 74 61 62 00 2e 73 68 73
|
276
|
+
74 72 74 61 62 00 2e 69 6e 74 65 72 70 00 2e 6e
|
277
|
+
6f 74 65 2e 41 42 49 2d 74 61 67 00 2e 6e 6f 74
|
278
|
+
65 2e 67 6e 75 2e 62 75 69 6c 64 2d 69 64 00 2e
|
279
|
+
67 6e 75 2e 68 61 73 68 00 2e 64 79 6e 73 79 6d
|
280
|
+
00 2e 64 79 6e 73 74 72 00 2e 67 6e 75 2e 76 65
|
281
|
+
72 73 69 6f 6e 00 2e 67 6e 75 2e 76 65 72 73 69
|
282
|
+
6f 6e 5f 72 00 2e 72 65 6c 61 2e 64 79 6e 00 2e
|
283
|
+
72 65 6c 61 2e 70 6c 74 00 2e 69 6e 69 74 00 2e
|
284
|
+
74 65 78 74 00 2e 66 69 6e 69 00 2e 72 6f 64 61
|
285
|
+
74 61 00 2e 65 68 5f 66 72 61 6d 65 5f 68 64 72
|
286
|
+
00 2e 65 68 5f 66 72 61 6d 65 00 2e 63 74 6f 72
|
287
|
+
73 00 2e 64 74 6f 72 73 00 2e 6a 63 72 00 2e 64
|
288
|
+
79 6e 61 6d 69 63 00 2e 67 6f 74 00 2e 67 6f 74
|
289
|
+
2e 70 6c 74 00 2e 64 61 74 61 00 2e 62 73 73 00
|
290
|
+
2e 63 6f 6d 6d 65 6e 74 00 00 00 00 00 00 00 00
|
291
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
292
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
293
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
294
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
295
|
+
1b 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00
|
296
|
+
38 02 40 00 00 00 00 00 38 02 00 00 00 00 00 00
|
297
|
+
1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
298
|
+
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
299
|
+
23 00 00 00 07 00 00 00 02 00 00 00 00 00 00 00
|
300
|
+
54 02 40 00 00 00 00 00 54 02 00 00 00 00 00 00
|
301
|
+
20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
302
|
+
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
303
|
+
31 00 00 00 07 00 00 00 02 00 00 00 00 00 00 00
|
304
|
+
74 02 40 00 00 00 00 00 74 02 00 00 00 00 00 00
|
305
|
+
24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
306
|
+
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
307
|
+
48 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00
|
308
|
+
98 02 40 00 00 00 00 00 98 02 00 00 00 00 00 00
|
309
|
+
18 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00
|
310
|
+
08 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
|
311
|
+
44 00 00 00 f6 ff ff 6f 02 00 00 00 00 00 00 00
|
312
|
+
b0 02 40 00 00 00 00 00 b0 02 00 00 00 00 00 00
|
313
|
+
1c 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00
|
314
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
315
|
+
4e 00 00 00 0b 00 00 00 02 00 00 00 00 00 00 00
|
316
|
+
d0 02 40 00 00 00 00 00 d0 02 00 00 00 00 00 00
|
317
|
+
48 00 00 00 00 00 00 00 07 00 00 00 01 00 00 00
|
318
|
+
08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00
|
319
|
+
56 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00
|
320
|
+
18 03 40 00 00 00 00 00 18 03 00 00 00 00 00 00
|
321
|
+
38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
322
|
+
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
323
|
+
5e 00 00 00 ff ff ff 6f 02 00 00 00 00 00 00 00
|
324
|
+
50 03 40 00 00 00 00 00 50 03 00 00 00 00 00 00
|
325
|
+
06 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00
|
326
|
+
02 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00
|
327
|
+
6b 00 00 00 fe ff ff 6f 02 00 00 00 00 00 00 00
|
328
|
+
58 03 40 00 00 00 00 00 58 03 00 00 00 00 00 00
|
329
|
+
20 00 00 00 00 00 00 00 07 00 00 00 01 00 00 00
|
330
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
331
|
+
7a 00 00 00 04 00 00 00 02 00 00 00 00 00 00 00
|
332
|
+
78 03 40 00 00 00 00 00 78 03 00 00 00 00 00 00
|
333
|
+
18 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00
|
334
|
+
08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00
|
335
|
+
84 00 00 00 04 00 00 00 02 00 00 00 00 00 00 00
|
336
|
+
90 03 40 00 00 00 00 00 90 03 00 00 00 00 00 00
|
337
|
+
18 00 00 00 00 00 00 00 06 00 00 00 0d 00 00 00
|
338
|
+
08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00
|
339
|
+
8e 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00
|
340
|
+
a8 03 40 00 00 00 00 00 a8 03 00 00 00 00 00 00
|
341
|
+
18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
342
|
+
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
343
|
+
89 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00
|
344
|
+
c0 03 40 00 00 00 00 00 c0 03 00 00 00 00 00 00
|
345
|
+
20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
346
|
+
04 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00
|
347
|
+
94 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00
|
348
|
+
e0 03 40 00 00 00 00 00 e0 03 00 00 00 00 00 00
|
349
|
+
c8 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
350
|
+
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
351
|
+
9a 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00
|
352
|
+
a8 05 40 00 00 00 00 00 a8 05 00 00 00 00 00 00
|
353
|
+
0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
354
|
+
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
355
|
+
a0 00 00 00 01 00 00 00 12 00 00 00 00 00 00 00
|
356
|
+
b8 05 40 00 00 00 00 00 b8 05 00 00 00 00 00 00
|
357
|
+
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
358
|
+
04 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
|
359
|
+
a8 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00
|
360
|
+
bc 05 40 00 00 00 00 00 bc 05 00 00 00 00 00 00
|
361
|
+
24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
362
|
+
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
363
|
+
b6 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00
|
364
|
+
e0 05 40 00 00 00 00 00 e0 05 00 00 00 00 00 00
|
365
|
+
74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
366
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
367
|
+
c0 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00
|
368
|
+
18 0e 60 00 00 00 00 00 18 0e 00 00 00 00 00 00
|
369
|
+
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
370
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
371
|
+
c7 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00
|
372
|
+
28 0e 60 00 00 00 00 00 28 0e 00 00 00 00 00 00
|
373
|
+
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
374
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
375
|
+
ce 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00
|
376
|
+
38 0e 60 00 00 00 00 00 38 0e 00 00 00 00 00 00
|
377
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
378
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
379
|
+
d3 00 00 00 06 00 00 00 03 00 00 00 00 00 00 00
|
380
|
+
40 0e 60 00 00 00 00 00 40 0e 00 00 00 00 00 00
|
381
|
+
a0 01 00 00 00 00 00 00 07 00 00 00 00 00 00 00
|
382
|
+
08 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00
|
383
|
+
dc 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00
|
384
|
+
e0 0f 60 00 00 00 00 00 e0 0f 00 00 00 00 00 00
|
385
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
386
|
+
08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00
|
387
|
+
e1 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00
|
388
|
+
e8 0f 60 00 00 00 00 00 e8 0f 00 00 00 00 00 00
|
389
|
+
20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
390
|
+
08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00
|
391
|
+
ea 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00
|
392
|
+
08 10 60 00 00 00 00 00 08 10 00 00 00 00 00 00
|
393
|
+
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
394
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
395
|
+
f0 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00
|
396
|
+
18 10 60 00 00 00 00 00 18 10 00 00 00 00 00 00
|
397
|
+
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
398
|
+
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
399
|
+
f5 00 00 00 01 00 00 00 30 00 00 00 00 00 00 00
|
400
|
+
00 00 00 00 00 00 00 00 18 10 00 00 00 00 00 00
|
401
|
+
23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
402
|
+
01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
|
403
|
+
11 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00
|
404
|
+
00 00 00 00 00 00 00 00 3b 10 00 00 00 00 00 00
|
405
|
+
fe 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
406
|
+
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
407
|
+
01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00
|
408
|
+
00 00 00 00 00 00 00 00 00 19 00 00 00 00 00 00
|
409
|
+
00 06 00 00 00 00 00 00 1e 00 00 00 2f 00 00 00
|
410
|
+
08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00
|
411
|
+
09 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00
|
412
|
+
00 00 00 00 00 00 00 00 00 1f 00 00 00 00 00 00
|
413
|
+
db 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
414
|
+
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
415
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
416
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 01 00
|
417
|
+
38 02 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
418
|
+
00 00 00 00 03 00 02 00 54 02 40 00 00 00 00 00
|
419
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00
|
420
|
+
74 02 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
421
|
+
00 00 00 00 03 00 04 00 98 02 40 00 00 00 00 00
|
422
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 05 00
|
423
|
+
b0 02 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
424
|
+
00 00 00 00 03 00 06 00 d0 02 40 00 00 00 00 00
|
425
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 07 00
|
426
|
+
18 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
427
|
+
00 00 00 00 03 00 08 00 50 03 40 00 00 00 00 00
|
428
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 09 00
|
429
|
+
58 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
430
|
+
00 00 00 00 03 00 0a 00 78 03 40 00 00 00 00 00
|
431
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 0b 00
|
432
|
+
90 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
433
|
+
00 00 00 00 03 00 0c 00 a8 03 40 00 00 00 00 00
|
434
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 0d 00
|
435
|
+
c0 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
436
|
+
00 00 00 00 03 00 0e 00 e0 03 40 00 00 00 00 00
|
437
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 0f 00
|
438
|
+
a8 05 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
439
|
+
00 00 00 00 03 00 10 00 b8 05 40 00 00 00 00 00
|
440
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 11 00
|
441
|
+
bc 05 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
442
|
+
00 00 00 00 03 00 12 00 e0 05 40 00 00 00 00 00
|
443
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 13 00
|
444
|
+
18 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
445
|
+
00 00 00 00 03 00 14 00 28 0e 60 00 00 00 00 00
|
446
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 15 00
|
447
|
+
38 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
448
|
+
00 00 00 00 03 00 16 00 40 0e 60 00 00 00 00 00
|
449
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 17 00
|
450
|
+
e0 0f 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
451
|
+
00 00 00 00 03 00 18 00 e8 0f 60 00 00 00 00 00
|
452
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 19 00
|
453
|
+
08 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
454
|
+
00 00 00 00 03 00 1a 00 18 10 60 00 00 00 00 00
|
455
|
+
00 00 00 00 00 00 00 00 00 00 00 00 03 00 1b 00
|
456
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
457
|
+
01 00 00 00 02 00 0e 00 0c 04 40 00 00 00 00 00
|
458
|
+
00 00 00 00 00 00 00 00 11 00 00 00 04 00 f1 ff
|
459
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
460
|
+
1c 00 00 00 01 00 13 00 18 0e 60 00 00 00 00 00
|
461
|
+
00 00 00 00 00 00 00 00 2a 00 00 00 01 00 14 00
|
462
|
+
28 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
463
|
+
38 00 00 00 01 00 15 00 38 0e 60 00 00 00 00 00
|
464
|
+
00 00 00 00 00 00 00 00 45 00 00 00 02 00 0e 00
|
465
|
+
30 04 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
466
|
+
5b 00 00 00 01 00 1a 00 18 10 60 00 00 00 00 00
|
467
|
+
01 00 00 00 00 00 00 00 6a 00 00 00 01 00 1a 00
|
468
|
+
20 10 60 00 00 00 00 00 08 00 00 00 00 00 00 00
|
469
|
+
78 00 00 00 02 00 0e 00 a0 04 40 00 00 00 00 00
|
470
|
+
00 00 00 00 00 00 00 00 11 00 00 00 04 00 f1 ff
|
471
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
472
|
+
84 00 00 00 01 00 13 00 20 0e 60 00 00 00 00 00
|
473
|
+
00 00 00 00 00 00 00 00 91 00 00 00 01 00 12 00
|
474
|
+
50 06 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
475
|
+
9f 00 00 00 01 00 15 00 38 0e 60 00 00 00 00 00
|
476
|
+
00 00 00 00 00 00 00 00 ab 00 00 00 02 00 0e 00
|
477
|
+
70 05 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
478
|
+
c1 00 00 00 04 00 f1 ff 00 00 00 00 00 00 00 00
|
479
|
+
00 00 00 00 00 00 00 00 c5 00 00 00 01 02 18 00
|
480
|
+
e8 0f 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
481
|
+
db 00 00 00 00 02 13 00 14 0e 60 00 00 00 00 00
|
482
|
+
00 00 00 00 00 00 00 00 ec 00 00 00 00 02 13 00
|
483
|
+
14 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
484
|
+
ff 00 00 00 01 02 16 00 40 0e 60 00 00 00 00 00
|
485
|
+
00 00 00 00 00 00 00 00 08 01 00 00 20 00 19 00
|
486
|
+
08 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
487
|
+
13 01 00 00 12 00 0e 00 d0 04 40 00 00 00 00 00
|
488
|
+
02 00 00 00 00 00 00 00 23 01 00 00 12 00 0e 00
|
489
|
+
e0 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
490
|
+
2a 01 00 00 20 00 00 00 00 00 00 00 00 00 00 00
|
491
|
+
00 00 00 00 00 00 00 00 39 01 00 00 20 00 00 00
|
492
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
493
|
+
4d 01 00 00 12 00 0f 00 a8 05 40 00 00 00 00 00
|
494
|
+
00 00 00 00 00 00 00 00 53 01 00 00 12 00 00 00
|
495
|
+
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
496
|
+
72 01 00 00 11 00 10 00 b8 05 40 00 00 00 00 00
|
497
|
+
04 00 00 00 00 00 00 00 81 01 00 00 10 00 19 00
|
498
|
+
08 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
499
|
+
8e 01 00 00 11 02 19 00 10 10 60 00 00 00 00 00
|
500
|
+
00 00 00 00 00 00 00 00 9b 01 00 00 11 02 14 00
|
501
|
+
30 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
502
|
+
a8 01 00 00 12 00 0e 00 e0 04 40 00 00 00 00 00
|
503
|
+
89 00 00 00 00 00 00 00 b8 01 00 00 10 00 f1 ff
|
504
|
+
18 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
505
|
+
c4 01 00 00 10 00 f1 ff 28 10 60 00 00 00 00 00
|
506
|
+
00 00 00 00 00 00 00 00 c9 01 00 00 10 00 f1 ff
|
507
|
+
18 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00
|
508
|
+
d0 01 00 00 12 00 0e 00 c4 04 40 00 00 00 00 00
|
509
|
+
06 00 00 00 00 00 00 00 d5 01 00 00 12 00 0c 00
|
510
|
+
a8 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00
|
511
|
+
00 63 61 6c 6c 5f 67 6d 6f 6e 5f 73 74 61 72 74
|
512
|
+
00 63 72 74 73 74 75 66 66 2e 63 00 5f 5f 43 54
|
513
|
+
4f 52 5f 4c 49 53 54 5f 5f 00 5f 5f 44 54 4f 52
|
514
|
+
5f 4c 49 53 54 5f 5f 00 5f 5f 4a 43 52 5f 4c 49
|
515
|
+
53 54 5f 5f 00 5f 5f 64 6f 5f 67 6c 6f 62 61 6c
|
516
|
+
5f 64 74 6f 72 73 5f 61 75 78 00 63 6f 6d 70 6c
|
517
|
+
65 74 65 64 2e 37 33 38 32 00 64 74 6f 72 5f 69
|
518
|
+
64 78 2e 37 33 38 34 00 66 72 61 6d 65 5f 64 75
|
519
|
+
6d 6d 79 00 5f 5f 43 54 4f 52 5f 45 4e 44 5f 5f
|
520
|
+
00 5f 5f 46 52 41 4d 45 5f 45 4e 44 5f 5f 00 5f
|
521
|
+
5f 4a 43 52 5f 45 4e 44 5f 5f 00 5f 5f 64 6f 5f
|
522
|
+
67 6c 6f 62 61 6c 5f 63 74 6f 72 73 5f 61 75 78
|
523
|
+
00 74 2e 63 00 5f 47 4c 4f 42 41 4c 5f 4f 46 46
|
524
|
+
53 45 54 5f 54 41 42 4c 45 5f 00 5f 5f 69 6e 69
|
525
|
+
74 5f 61 72 72 61 79 5f 65 6e 64 00 5f 5f 69 6e
|
526
|
+
69 74 5f 61 72 72 61 79 5f 73 74 61 72 74 00 5f
|
527
|
+
44 59 4e 41 4d 49 43 00 64 61 74 61 5f 73 74 61
|
528
|
+
72 74 00 5f 5f 6c 69 62 63 5f 63 73 75 5f 66 69
|
529
|
+
6e 69 00 5f 73 74 61 72 74 00 5f 5f 67 6d 6f 6e
|
530
|
+
5f 73 74 61 72 74 5f 5f 00 5f 4a 76 5f 52 65 67
|
531
|
+
69 73 74 65 72 43 6c 61 73 73 65 73 00 5f 66 69
|
532
|
+
6e 69 00 5f 5f 6c 69 62 63 5f 73 74 61 72 74 5f
|
533
|
+
6d 61 69 6e 40 40 47 4c 49 42 43 5f 32 2e 32 2e
|
534
|
+
35 00 5f 49 4f 5f 73 74 64 69 6e 5f 75 73 65 64
|
535
|
+
00 5f 5f 64 61 74 61 5f 73 74 61 72 74 00 5f 5f
|
536
|
+
64 73 6f 5f 68 61 6e 64 6c 65 00 5f 5f 44 54 4f
|
537
|
+
52 5f 45 4e 44 5f 5f 00 5f 5f 6c 69 62 63 5f 63
|
538
|
+
73 75 5f 69 6e 69 74 00 5f 5f 62 73 73 5f 73 74
|
539
|
+
61 72 74 00 5f 65 6e 64 00 5f 65 64 61 74 61 00
|
540
|
+
6d 61 69 6e 00 5f 69 6e 69 74 00
|
541
|
+
}.collect{ |i| i.hex }.pack('C*')
|
542
|
+
|
543
|
+
def test_buffer
|
544
|
+
dis = Opdis::Disassembler.new()
|
545
|
+
|
546
|
+
Bfd::Target.from_buffer( TARGET_BUF ) do |tgt|
|
547
|
+
|
548
|
+
ops = dis.disasm_section( tgt.sections['.text'] )
|
549
|
+
assert_equal( 145, ops.length )
|
550
|
+
assert_equal( 'xor', ops[ops.keys.sort.first].mnemonic )
|
551
|
+
assert_equal( 'nop', ops[ops.keys.sort.last].mnemonic )
|
552
|
+
end
|
553
|
+
|
554
|
+
end
|
555
|
+
|
556
|
+
end
|