Opcodes 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 +88 -0
- data/examples/bfd_section.rb +34 -0
- data/examples/bfd_symbol.rb +34 -0
- data/examples/list_architectures.rb +10 -0
- data/examples/x86_bytestring.rb +43 -0
- data/lib/Opcodes.rb +53 -0
- data/module/Arch.c +364 -0
- data/module/Arch.h +37 -0
- data/module/Opcodes.c +473 -0
- data/module/Opcodes.h +46 -0
- data/module/extconf.rb +65 -0
- data/module/rdoc_input/Opcodes.rb +137 -0
- data/module/ruby_compat.c +72 -0
- data/module/ruby_compat.h +25 -0
- data/tests/ut_opcodes.rb +37 -0
- data/tests/ut_opcodes_bfd.rb +556 -0
- metadata +74 -0
data/module/Opcodes.h
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
/* Opcodes.h
|
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
|
+
#ifndef OPCODES_RUBY_EXT_H
|
9
|
+
#define OPCODES_RUBY_EXT_H
|
10
|
+
|
11
|
+
/* Disassembler Class */
|
12
|
+
#define DIS_ATTR_OPTIONS "options"
|
13
|
+
|
14
|
+
#define DIS_FN_DIS_INSN "ext_disasm_insn"
|
15
|
+
#define DIS_FN_DIS_DIS "ext_disasm"
|
16
|
+
|
17
|
+
#define DIS_ARG_BFD "bfd"
|
18
|
+
#define DIS_ARG_ARCH "arch"
|
19
|
+
#define DIS_ARG_OPTS "opts"
|
20
|
+
#define DIS_ARG_VMA "vma"
|
21
|
+
#define DIS_ARG_BUFVMA "buffer_vma"
|
22
|
+
#define DIS_ARG_LENGTH "length"
|
23
|
+
|
24
|
+
/* Instruction info hash */
|
25
|
+
#define DIS_INSN_INFO_DELAY "branch_delay_insn"
|
26
|
+
#define DIS_INSN_INFO_DATA_SZ "data_size"
|
27
|
+
#define DIS_INSN_INFO_TYPE "type"
|
28
|
+
#define DIS_INSN_INFO_TGT "target"
|
29
|
+
#define DIS_INSN_INFO_TGT2 "target2"
|
30
|
+
|
31
|
+
#define DIS_INSN_VMA "vma"
|
32
|
+
#define DIS_INSN_SIZE "size"
|
33
|
+
#define DIS_INSN_INFO "info"
|
34
|
+
#define DIS_INSN_INSN "insn"
|
35
|
+
|
36
|
+
#define DIS_METHOD_ARCH "architectures"
|
37
|
+
|
38
|
+
#define DISASM_MAX_STR 64
|
39
|
+
|
40
|
+
/* Module and Class names */
|
41
|
+
|
42
|
+
#define OPCODES_MODULE_NAME "Opcodes"
|
43
|
+
#define DIS_CLASS_NAME "Disassembler"
|
44
|
+
void Init_OpcodesExt();
|
45
|
+
|
46
|
+
#endif
|
data/module/extconf.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
#!/usrbin/ruby1.9
|
2
|
+
# Opcodes Ruby extension config file
|
3
|
+
# Copyright 2010 Thoughtgang <http://www.thoughtgang.org>
|
4
|
+
# Options:
|
5
|
+
# --with-opcodes-dir=path
|
6
|
+
# --with-opcodes-include=path
|
7
|
+
# --with-opcodes-lib=path
|
8
|
+
# --with-objdump=path
|
9
|
+
# see README for more info.
|
10
|
+
|
11
|
+
require 'mkmf'
|
12
|
+
|
13
|
+
have_library('opcodes', 'init_disassemble_info')
|
14
|
+
dir_config('opcodes')
|
15
|
+
|
16
|
+
# ----------------------------------------------------------------------
|
17
|
+
# Architectures supported by binutils
|
18
|
+
# These have to be specified on the command line, as binutils does not
|
19
|
+
# provide any clue as to which architectures it has been compiled for
|
20
|
+
# on the local machine.
|
21
|
+
# NOTE: These were compiled from the list of architectures in bfd.h .
|
22
|
+
|
23
|
+
ARCH= %w[ m32c alpha arc arm avr bfin cr16 cris crx d10v d30v
|
24
|
+
dlx h8300 h8500 hppa i370 i386 i860 i960 ia64 ip2k fr30
|
25
|
+
lm32 m32r m68k m88k maxq mt microblaze msp430 ns32k mcore
|
26
|
+
mep mips mmix mn10200 mn10300 openrisc or32 pdp11 pj
|
27
|
+
powerpc rs6000 s390 score sh sparc spu tic30 tic4x tic54x
|
28
|
+
tic80 v850 w65 xstormy16 xc16x xtensa z80 z8k vax frv
|
29
|
+
moxie iq2000 m32c ]
|
30
|
+
|
31
|
+
# Define all architecture options
|
32
|
+
ARCH.each { |a| with_config( "ARCH_#{a.upcase}" ) }
|
33
|
+
|
34
|
+
# ----------------------------------------------------------------------
|
35
|
+
# Detect architectures supported locally
|
36
|
+
|
37
|
+
SEEN_ARCH = []
|
38
|
+
def handle_bfd_arch( line )
|
39
|
+
arch = line.strip
|
40
|
+
if ARCH.include?(arch) and not SEEN_ARCH.include?(arch)
|
41
|
+
puts "Adding architecture '#{arch}'"
|
42
|
+
SEEN_ARCH << arch
|
43
|
+
$CPPFLAGS += " -DARCH_#{arch.upcase}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# allow user to override the objump binary using --with-objdump=path
|
48
|
+
objdump_bin = with_config('objdump', 'objdump')
|
49
|
+
|
50
|
+
# use objdump -i to get supported architectures
|
51
|
+
`#{objdump_bin} -i`.split("\n").each { |line| handle_bfd_arch(line) }
|
52
|
+
|
53
|
+
# default to i386 if objdump failed to run or no architectures were found
|
54
|
+
$CPPFLAGS += " -DARCH_I386" if SEEN_ARCH.length == 0
|
55
|
+
|
56
|
+
# ----------------------------------------------------------------------
|
57
|
+
# Makefile
|
58
|
+
|
59
|
+
if RUBY_VERSION =~ /1.8/ then
|
60
|
+
$CPPFLAGS += " -DRUBY_18"
|
61
|
+
elsif RUBY_VERSION =~ /1.9/ then
|
62
|
+
$CPPFLAGS += " -DRUBY_19"
|
63
|
+
end
|
64
|
+
|
65
|
+
create_makefile('OpcodesExt')
|
@@ -0,0 +1,137 @@
|
|
1
|
+
#!/usr/bin/env ruby1.9
|
2
|
+
# :title: Opcodes
|
3
|
+
=begin rdoc
|
4
|
+
=LibOpcodes
|
5
|
+
<i>Copyright 2010 Thoughtgang <http://www.thoughtgang.org></i>
|
6
|
+
|
7
|
+
= Gnu Binutils libopcodes support
|
8
|
+
|
9
|
+
Requires GNU binutils, available at
|
10
|
+
http://www.gnu.org/software/binutils .
|
11
|
+
|
12
|
+
All of the original libopcodes data structures and constants can be found in
|
13
|
+
<b>dis-asm.h</b>, available on Linux installations at
|
14
|
+
<b>/usr/include/dis-asm.h</b>.
|
15
|
+
|
16
|
+
== Summary
|
17
|
+
A wrapper for the libopcodes disassembler distributed with GNU binutils.
|
18
|
+
|
19
|
+
== Example
|
20
|
+
require 'BFD'
|
21
|
+
require 'Opcodes'
|
22
|
+
|
23
|
+
t = Bfd::Target.new('/tmp/a.out')
|
24
|
+
|
25
|
+
o = Opcodes::Disassembler.new( :bfd => t, :arch => 'x86' )
|
26
|
+
|
27
|
+
o.disasm( t.sections['.text'] )
|
28
|
+
|
29
|
+
== Disclaimer
|
30
|
+
This is a minimal implementation of a libopcodes wrapper. It is intended for
|
31
|
+
demonstration purposes only, and should not be expected to support all
|
32
|
+
of the funtionality of the GNU binutils lipopcodes library.
|
33
|
+
|
34
|
+
For a fully functional disassembler, see the Opdis gem.
|
35
|
+
|
36
|
+
== Contact
|
37
|
+
Support:: community@thoughtgang.org
|
38
|
+
Project:: http://rubyforge.org/projects/opdis/
|
39
|
+
=end
|
40
|
+
|
41
|
+
=begin rdoc
|
42
|
+
GNU libopcodes support
|
43
|
+
=end
|
44
|
+
module Opcodes
|
45
|
+
|
46
|
+
=begin rdoc
|
47
|
+
A disassembler object.
|
48
|
+
Source: <b>struct disassemble_info</b>
|
49
|
+
=end
|
50
|
+
class Disassembler
|
51
|
+
|
52
|
+
=begin rdoc
|
53
|
+
Disassembler options.
|
54
|
+
Source: <b>disassemble_info.disassembler_options</b>
|
55
|
+
=end
|
56
|
+
attr_accessor :options
|
57
|
+
|
58
|
+
=begin rdoc
|
59
|
+
The <i>args</i> hash can contain the following options:
|
60
|
+
bfd:: A Bfd::Target object to use for configuring the disassembler.
|
61
|
+
arch:: Architecture of target.
|
62
|
+
bfd:: Bfd::Target to use to configure the disassembler.
|
63
|
+
opts:: Disassembler options (see @options).
|
64
|
+
=end
|
65
|
+
def initialize(args)
|
66
|
+
end
|
67
|
+
|
68
|
+
=begin rdoc
|
69
|
+
Disassemble a single instruction.
|
70
|
+
|
71
|
+
The arguments are:
|
72
|
+
|
73
|
+
tgt:: The target to disassemble. This can be a filename, an IO object, a
|
74
|
+
Bfd::Section object, or a Bfd::Symbol object.
|
75
|
+
args:: A has of optional arguments.
|
76
|
+
|
77
|
+
The optional arguments can include:
|
78
|
+
|
79
|
+
vma:: Virtual Memory (Load) Address to disassemble.
|
80
|
+
buffer_vma:: Virtual Memory (Load) address of target.
|
81
|
+
|
82
|
+
This returns a hash with the following members:
|
83
|
+
|
84
|
+
vma:: Virtual Memory (Load) Address of the instruction.
|
85
|
+
size:: Size of the instruction in bytes.
|
86
|
+
info:: Meta-info for the instruction, if available.
|
87
|
+
insn:: Array of strings returned from libopcodes.
|
88
|
+
|
89
|
+
The <i>info</i> member is a hash with the following members:
|
90
|
+
|
91
|
+
branch_delay_insn:: How many instructions before branch takes effect.
|
92
|
+
data_size:: Size of data reference in instruction.
|
93
|
+
type:: Type of instruction (e.g. branch).
|
94
|
+
target:: Target address of branch or dereference.
|
95
|
+
target2:: Second target address.
|
96
|
+
=end
|
97
|
+
def ext_disasm_insn(tgt, args)
|
98
|
+
end
|
99
|
+
|
100
|
+
=begin rdoc
|
101
|
+
Disassemble instructions in a target.
|
102
|
+
|
103
|
+
The arguments are:
|
104
|
+
|
105
|
+
tgt:: The target to disassemble. This can be a filename, an IO object, a
|
106
|
+
Bfd::Section object, or a Bfd::Synmbol object.
|
107
|
+
args:: A has of optional arguments.
|
108
|
+
|
109
|
+
The optional arguments can include:
|
110
|
+
|
111
|
+
vma:: Virtual Memory (Load) Address to disassemble.
|
112
|
+
length:: Number of bytes to disassemble. The default is the length of the
|
113
|
+
buffer.
|
114
|
+
buffer_vma:: Virtual Memory (Load) address of target. Note that this will
|
115
|
+
override the VMA for Bfd objects if supplied; this allows
|
116
|
+
the caller to disassemble the first <i>n</i> bytes of
|
117
|
+
a Bfd::Section without knowing its VMA by specifying a
|
118
|
+
<i>buffer_vma</i> of 0 and a <i>length</i> of <i>n</i>.
|
119
|
+
|
120
|
+
This returns an array of the hash described in disasm_insn.
|
121
|
+
=end
|
122
|
+
def ext_disasm( tgt, args )
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
=begin rdoc
|
127
|
+
List the architectures supported by the local copy of libopcodes.
|
128
|
+
This returns an array of strings.
|
129
|
+
=end
|
130
|
+
def architectures()
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
|
@@ -0,0 +1,72 @@
|
|
1
|
+
/* ruby1.8_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 Opcodes_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 Opcodes_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
|
+
/* ruby1.8_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_18_COMPAT_H
|
10
|
+
#define RUBY_18_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 Opcodes_rb_hash_lookup2( VALUE, VALUE, VALUE );
|
19
|
+
#define rb_hash_lookup2( a1, a2, a3 ) Opcodes_rb_hash_lookup2(a1, a2, a3)
|
20
|
+
#endif
|
21
|
+
|
22
|
+
VALUE Opcodes_path2class(const char * path);
|
23
|
+
#define path2class(path) Opcodes_path2class(path)
|
24
|
+
|
25
|
+
#endif
|
data/tests/ut_opcodes.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2010 Thoughtgang <http://www.thoughtgang.org>
|
3
|
+
# Unit test for Opcodes module
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'rubygems'
|
7
|
+
require 'Opcodes'
|
8
|
+
|
9
|
+
def hex_buf( arr )
|
10
|
+
arr.collect{ |i| i.hex }.pack('C*')
|
11
|
+
end
|
12
|
+
|
13
|
+
# TODO: BFD test, AT&T vs Intel syntax test, etc
|
14
|
+
|
15
|
+
class TC_OpcodesModule < Test::Unit::TestCase
|
16
|
+
|
17
|
+
def test_nop
|
18
|
+
Opcodes::Disassembler.new( :arch => 'x86') do |dis|
|
19
|
+
buf = hex_buf( %w{ 90 90 90 } )
|
20
|
+
ops = dis.disasm( buf )
|
21
|
+
assert_equal( 3, ops.length )
|
22
|
+
|
23
|
+
result = dis.disasm_insn( buf )
|
24
|
+
assert_equal( 'nop', result[:insn].first )
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_int3
|
29
|
+
Opcodes::Disassembler.new( :arch => 'x86' ) do |dis|
|
30
|
+
ops = dis.disasm( hex_buf( %w{ CC CC CC } ) )
|
31
|
+
assert_equal( 3, ops.length )
|
32
|
+
assert_equal( 'int3', ops.first[:insn].first.strip )
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,556 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2010 Thoughtgang <http://www.thoughtgang.org>
|
3
|
+
# Unit test for Opcodes module BFD support
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'rubygems'
|
7
|
+
require 'Opcodes'
|
8
|
+
|
9
|
+
require 'BFD'
|
10
|
+
class TC_OpcodesModuleBfd < 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
|
+
|
545
|
+
Bfd::Target.from_buffer( TARGET_BUF ) do |tgt|
|
546
|
+
dis = Opcodes::Disassembler.new( :bfd => tgt ) do |dis|
|
547
|
+
ops = dis.disasm( tgt.sections['.text'] )
|
548
|
+
assert_equal( 145, ops.length )
|
549
|
+
assert_equal( 'xor', ops.first[:insn][0].strip )
|
550
|
+
assert_equal( 'nop', ops.last[:insn][0].strip )
|
551
|
+
end
|
552
|
+
end
|
553
|
+
|
554
|
+
end
|
555
|
+
|
556
|
+
end
|