pedump 0.4.16 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
1
  class PEdump
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 4
5
- PATCH = 16
4
+ MINOR = 5
5
+ PATCH = 0
6
6
  BUILD = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
@@ -1,5 +1,5 @@
1
1
  class PEdump
2
- class VS_VERSIONINFO < PEdump.create_struct( 'v3a32v',
2
+ class VS_VERSIONINFO < IOStruct.new( 'v3a32v',
3
3
  :wLength,
4
4
  :wValueLength,
5
5
  :wType,
@@ -40,7 +40,7 @@ class PEdump
40
40
  end
41
41
  end
42
42
 
43
- class VS_FIXEDFILEINFO < PEdump.create_struct( 'V13',
43
+ class VS_FIXEDFILEINFO < IOStruct.new( 'V13',
44
44
  :dwSignature,
45
45
  :dwStrucVersion,
46
46
  :dwFileVersionMS,
@@ -64,7 +64,7 @@ class PEdump
64
64
  end
65
65
  end
66
66
 
67
- class StringFileInfo < PEdump.create_struct( 'v3a30',
67
+ class StringFileInfo < IOStruct.new( 'v3a30',
68
68
  :wLength,
69
69
  :wValueLength, # always 0
70
70
  :wType, # 1 => text data, 0 => binary data
@@ -85,7 +85,7 @@ class PEdump
85
85
  end
86
86
  end
87
87
 
88
- class StringTable < PEdump.create_struct( 'v3a16v',
88
+ class StringTable < IOStruct.new( 'v3a16v',
89
89
  :wLength, # The length, in bytes, of this StringTable structure,
90
90
  # including all structures indicated by the Children member.
91
91
  :wValueLength, # always 0
@@ -107,7 +107,7 @@ class PEdump
107
107
  end
108
108
  end
109
109
 
110
- class VersionString < PEdump.create_struct( 'v3',
110
+ class VersionString < IOStruct.new( 'v3',
111
111
  :wLength, # The length, in bytes, of this String structure.
112
112
  :wValueLength, # The size, in words, of the Value member
113
113
  :wType, # 1 => text data, 0 => binary data
@@ -135,7 +135,7 @@ class PEdump
135
135
  end
136
136
  end
137
137
 
138
- class VarFileInfo < PEdump.create_struct( 'v3a24v',
138
+ class VarFileInfo < IOStruct.new( 'v3a24v',
139
139
  :wLength,
140
140
  :wValueLength, # always 0
141
141
  :wType, # 1 => text data, 0 => binary data
@@ -152,7 +152,7 @@ class PEdump
152
152
  end
153
153
  end
154
154
 
155
- class Var < PEdump.create_struct( 'v3a24',
155
+ class Var < IOStruct.new( 'v3a24',
156
156
  :wLength,
157
157
  :wValueLength, # The length, in bytes, of the Value member
158
158
  :wType, # 1 => text data, 0 => binary data
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "pedump"
8
- s.version = "0.4.16"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andrey \"Zed\" Zaikin"]
12
- s.date = "2013-01-03"
12
+ s.date = "2013-04-20"
13
13
  s.description = "dump headers, sections, extract resources of win32 PE exe,dll,etc"
14
14
  s.email = "zed.0xff@gmail.com"
15
15
  s.executables = ["pedump"]
@@ -38,7 +38,9 @@ Gem::Specification.new do |s|
38
38
  "lib/pedump/comparer.rb",
39
39
  "lib/pedump/composite_io.rb",
40
40
  "lib/pedump/core.rb",
41
+ "lib/pedump/core_ext/try.rb",
41
42
  "lib/pedump/loader.rb",
43
+ "lib/pedump/loader/minidump.rb",
42
44
  "lib/pedump/loader/section.rb",
43
45
  "lib/pedump/logger.rb",
44
46
  "lib/pedump/ne.rb",
@@ -72,6 +74,8 @@ Gem::Specification.new do |s|
72
74
  "spec/foldedhdr_spec.rb",
73
75
  "spec/imports_badterm_spec.rb",
74
76
  "spec/imports_vterm_spec.rb",
77
+ "spec/loader/names_spec.rb",
78
+ "spec/loader/va_spec.rb",
75
79
  "spec/manyimportsW7_spec.rb",
76
80
  "spec/ne_spec.rb",
77
81
  "spec/packer_spec.rb",
@@ -101,6 +105,8 @@ Gem::Specification.new do |s|
101
105
  s.add_runtime_dependency(%q<multipart-post>, ["~> 1.1.4"])
102
106
  s.add_runtime_dependency(%q<progressbar>, [">= 0"])
103
107
  s.add_runtime_dependency(%q<awesome_print>, [">= 0"])
108
+ s.add_runtime_dependency(%q<iostruct>, [">= 0.0.4"])
109
+ s.add_runtime_dependency(%q<zhexdump>, [">= 0.0.2"])
104
110
  s.add_development_dependency(%q<rspec>, [">= 0"])
105
111
  s.add_development_dependency(%q<bundler>, [">= 0"])
106
112
  s.add_development_dependency(%q<jeweler>, [">= 0"])
@@ -109,6 +115,8 @@ Gem::Specification.new do |s|
109
115
  s.add_dependency(%q<multipart-post>, ["~> 1.1.4"])
110
116
  s.add_dependency(%q<progressbar>, [">= 0"])
111
117
  s.add_dependency(%q<awesome_print>, [">= 0"])
118
+ s.add_dependency(%q<iostruct>, [">= 0.0.4"])
119
+ s.add_dependency(%q<zhexdump>, [">= 0.0.2"])
112
120
  s.add_dependency(%q<rspec>, [">= 0"])
113
121
  s.add_dependency(%q<bundler>, [">= 0"])
114
122
  s.add_dependency(%q<jeweler>, [">= 0"])
@@ -118,6 +126,8 @@ Gem::Specification.new do |s|
118
126
  s.add_dependency(%q<multipart-post>, ["~> 1.1.4"])
119
127
  s.add_dependency(%q<progressbar>, [">= 0"])
120
128
  s.add_dependency(%q<awesome_print>, [">= 0"])
129
+ s.add_dependency(%q<iostruct>, [">= 0.0.4"])
130
+ s.add_dependency(%q<zhexdump>, [">= 0.0.2"])
121
131
  s.add_dependency(%q<rspec>, [">= 0"])
122
132
  s.add_dependency(%q<bundler>, [">= 0"])
123
133
  s.add_dependency(%q<jeweler>, [">= 0"])
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+ require 'pedump/loader'
3
+
4
+ describe PEdump::Loader do
5
+ it "should read names from imports" do
6
+ io = open("samples/calc.exe","rb")
7
+ @ldr = PEdump::Loader.new io
8
+
9
+ @ldr.names.should_not be_nil
10
+ @ldr.names.should_not be_empty
11
+ @ldr.names.size.should >= 343
12
+ @ldr.names[0x10010d0].should == 'GetStartupInfoA'
13
+ end
14
+
15
+ it "should read names from exports" do
16
+ io = open("samples/zlib.dll","rb")
17
+ @ldr = PEdump::Loader.new io
18
+
19
+ @ldr.names.should_not be_nil
20
+ @ldr.names.should_not be_empty
21
+ @ldr.names.size.should >= 69
22
+ @ldr.names[0x1000e340].should == 'zlib_version'
23
+ end
24
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+ require 'pedump/loader'
3
+
4
+ describe PEdump::Loader do
5
+ describe "#valid_va?" do
6
+ describe "samples/calc.exe" do
7
+ before do
8
+ io = open("samples/calc.exe","rb")
9
+ @ldr = PEdump::Loader.new io
10
+ end
11
+
12
+ %w'1001000 1010000 104b999 104c000 1051000 109c000 10a01f5'.each do |x|
13
+ it "returns true for 0x#{x}" do
14
+ @ldr.valid_va?(x.to_i(16)).should be_true
15
+ end
16
+ end
17
+
18
+ %w'0 1 1000 1000fff 104b99a 104bfff 1050fff 109bfff 10a01f6'.each do |x|
19
+ it "returns false for 0x#{x}" do
20
+ @ldr.valid_va?(x.to_i(16)).should be_false
21
+ end
22
+ end
23
+ end
24
+
25
+ describe "samples/upx.exe" do
26
+ before do
27
+ io = open("samples/upx.exe","rb")
28
+ @ldr = PEdump::Loader.new io
29
+ end
30
+
31
+ %w'401000 541000 589000 589fff'.each do |x|
32
+ it "returns true for 0x#{x}" do
33
+ @ldr.valid_va?(x.to_i(16)).should be_true
34
+ end
35
+ end
36
+
37
+ %w'0 1 1000 400000 58a000'.each do |x|
38
+ it "returns false for 0x#{x}" do
39
+ @ldr.valid_va?(x.to_i(16)).should be_false
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
metadata CHANGED
@@ -1,128 +1,160 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pedump
3
3
  version: !ruby/object:Gem::Version
4
+ version: 0.5.0
4
5
  prerelease:
5
- version: 0.4.16
6
6
  platform: ruby
7
7
  authors:
8
8
  - Andrey "Zed" Zaikin
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-03 00:00:00.000000000 Z
12
+ date: 2013-04-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- prerelease: false
16
- type: :runtime
17
15
  name: multipart-post
18
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
19
18
  requirements:
20
19
  - - ~>
21
20
  - !ruby/object:Gem::Version
22
21
  version: 1.1.4
23
- none: false
22
+ type: :runtime
23
+ prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
25
26
  requirements:
26
27
  - - ~>
27
28
  - !ruby/object:Gem::Version
28
29
  version: 1.1.4
29
- none: false
30
30
  - !ruby/object:Gem::Dependency
31
- prerelease: false
32
- type: :runtime
33
31
  name: progressbar
34
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
35
34
  requirements:
36
35
  - - ! '>='
37
36
  - !ruby/object:Gem::Version
38
37
  version: '0'
39
- none: false
38
+ type: :runtime
39
+ prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
41
42
  requirements:
42
43
  - - ! '>='
43
44
  - !ruby/object:Gem::Version
44
45
  version: '0'
45
- none: false
46
46
  - !ruby/object:Gem::Dependency
47
- prerelease: false
48
- type: :runtime
49
47
  name: awesome_print
50
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
51
50
  requirements:
52
51
  - - ! '>='
53
52
  - !ruby/object:Gem::Version
54
53
  version: '0'
55
- none: false
54
+ type: :runtime
55
+ prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
57
58
  requirements:
58
59
  - - ! '>='
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: iostruct
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: 0.0.4
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
61
73
  none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.0.4
62
78
  - !ruby/object:Gem::Dependency
79
+ name: zhexdump
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 0.0.2
86
+ type: :runtime
63
87
  prerelease: false
64
- type: :development
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.2
94
+ - !ruby/object:Gem::Dependency
65
95
  name: rspec
66
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
67
98
  requirements:
68
99
  - - ! '>='
69
100
  - !ruby/object:Gem::Version
70
101
  version: '0'
71
- none: false
102
+ type: :development
103
+ prerelease: false
72
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
73
106
  requirements:
74
107
  - - ! '>='
75
108
  - !ruby/object:Gem::Version
76
109
  version: '0'
77
- none: false
78
110
  - !ruby/object:Gem::Dependency
79
- prerelease: false
80
- type: :development
81
111
  name: bundler
82
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
83
114
  requirements:
84
115
  - - ! '>='
85
116
  - !ruby/object:Gem::Version
86
117
  version: '0'
87
- none: false
118
+ type: :development
119
+ prerelease: false
88
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
89
122
  requirements:
90
123
  - - ! '>='
91
124
  - !ruby/object:Gem::Version
92
125
  version: '0'
93
- none: false
94
126
  - !ruby/object:Gem::Dependency
95
- prerelease: false
96
- type: :development
97
127
  name: jeweler
98
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
99
130
  requirements:
100
131
  - - ! '>='
101
132
  - !ruby/object:Gem::Version
102
133
  version: '0'
103
- none: false
134
+ type: :development
135
+ prerelease: false
104
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
105
138
  requirements:
106
139
  - - ! '>='
107
140
  - !ruby/object:Gem::Version
108
141
  version: '0'
109
- none: false
110
142
  - !ruby/object:Gem::Dependency
111
- prerelease: false
112
- type: :development
113
143
  name: what_methods
114
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
115
146
  requirements:
116
147
  - - ! '>='
117
148
  - !ruby/object:Gem::Version
118
149
  version: '0'
119
- none: false
150
+ type: :development
151
+ prerelease: false
120
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
121
154
  requirements:
122
155
  - - ! '>='
123
156
  - !ruby/object:Gem::Version
124
157
  version: '0'
125
- none: false
126
158
  description: dump headers, sections, extract resources of win32 PE exe,dll,etc
127
159
  email: zed.0xff@gmail.com
128
160
  executables:
@@ -152,7 +184,9 @@ files:
152
184
  - lib/pedump/comparer.rb
153
185
  - lib/pedump/composite_io.rb
154
186
  - lib/pedump/core.rb
187
+ - lib/pedump/core_ext/try.rb
155
188
  - lib/pedump/loader.rb
189
+ - lib/pedump/loader/minidump.rb
156
190
  - lib/pedump/loader/section.rb
157
191
  - lib/pedump/logger.rb
158
192
  - lib/pedump/ne.rb
@@ -186,6 +220,8 @@ files:
186
220
  - spec/foldedhdr_spec.rb
187
221
  - spec/imports_badterm_spec.rb
188
222
  - spec/imports_vterm_spec.rb
223
+ - spec/loader/names_spec.rb
224
+ - spec/loader/va_spec.rb
189
225
  - spec/manyimportsW7_spec.rb
190
226
  - spec/ne_spec.rb
191
227
  - spec/packer_spec.rb
@@ -209,20 +245,20 @@ rdoc_options: []
209
245
  require_paths:
210
246
  - lib
211
247
  required_ruby_version: !ruby/object:Gem::Requirement
248
+ none: false
212
249
  requirements:
213
250
  - - ! '>='
214
251
  - !ruby/object:Gem::Version
215
252
  version: '0'
216
253
  segments:
217
254
  - 0
218
- hash: -2417171475449588298
219
- none: false
255
+ hash: -1369606751108388991
220
256
  required_rubygems_version: !ruby/object:Gem::Requirement
257
+ none: false
221
258
  requirements:
222
259
  - - ! '>='
223
260
  - !ruby/object:Gem::Version
224
261
  version: '0'
225
- none: false
226
262
  requirements: []
227
263
  rubyforge_project:
228
264
  rubygems_version: 1.8.24