pedump 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +4 -0
- data/Gemfile +10 -6
- data/Gemfile.lock +27 -19
- data/README.md +37 -25
- data/Rakefile +45 -6
- data/VERSION +1 -1
- data/data/fs.txt +37 -1408
- data/data/jc-userdb.txt +14371 -0
- data/data/sig.bin +0 -0
- data/lib/pedump.rb +355 -618
- data/lib/pedump/cli.rb +214 -113
- data/lib/pedump/comparer.rb +147 -0
- data/lib/pedump/composite_io.rb +56 -0
- data/lib/pedump/core.rb +38 -0
- data/lib/pedump/core_ext/try.rb +57 -0
- data/lib/pedump/loader.rb +393 -0
- data/lib/pedump/loader/minidump.rb +187 -0
- data/lib/pedump/loader/section.rb +57 -0
- data/lib/pedump/logger.rb +67 -0
- data/lib/pedump/ne.rb +425 -0
- data/lib/pedump/ne/version_info.rb +171 -0
- data/lib/pedump/packer.rb +50 -2
- data/lib/pedump/pe.rb +121 -0
- data/lib/pedump/resources.rb +436 -0
- data/lib/pedump/security.rb +58 -0
- data/lib/pedump/sig_parser.rb +145 -24
- data/lib/pedump/tls.rb +17 -0
- data/lib/pedump/unpacker.rb +26 -0
- data/lib/pedump/unpacker/aspack.rb +858 -0
- data/lib/pedump/unpacker/upx.rb +13 -0
- data/lib/pedump/version.rb +1 -1
- data/lib/pedump/version_info.rb +15 -10
- data/misc/aspack/Makefile +3 -0
- data/misc/aspack/aspack_unlzx.c +92 -0
- data/misc/aspack/lzxdec.c +479 -0
- data/misc/aspack/lzxdec.h +56 -0
- data/misc/nedump.c +751 -0
- data/pedump.gemspec +75 -25
- data/samples/bad/68.exe +0 -0
- data/samples/bad/data_dir_15_entries.exe +0 -0
- data/spec/65535sects_spec.rb +8 -0
- data/spec/bad_imports_spec.rb +20 -0
- data/spec/bad_samples_spec.rb +13 -0
- data/spec/composite_io_spec.rb +122 -0
- data/spec/data/calc.exe_sections.yml +49 -0
- data/spec/data/data_dir_15_entries.exe_sections.yml +95 -0
- data/spec/dllord_spec.rb +21 -0
- data/spec/foldedhdr_spec.rb +28 -0
- data/spec/imports_badterm_spec.rb +52 -0
- data/spec/imports_vterm_spec.rb +52 -0
- data/spec/loader/names_spec.rb +24 -0
- data/spec/loader/va_spec.rb +44 -0
- data/spec/manyimportsW7_spec.rb +22 -0
- data/spec/ne_spec.rb +125 -0
- data/spec/packer_spec.rb +17 -0
- data/spec/pe_spec.rb +67 -0
- data/spec/pedump_spec.rb +16 -4
- data/spec/sections_spec.rb +11 -0
- data/spec/sig_all_packers_spec.rb +15 -5
- data/spec/sig_spec.rb +6 -1
- data/spec/spec_helper.rb +15 -3
- data/spec/support/samples.rb +24 -0
- data/spec/unpackers/aspack_spec.rb +69 -0
- data/spec/unpackers/find_spec.rb +21 -0
- data/spec/virtsectblXP_spec.rb +12 -0
- data/tmp/.keep +0 -0
- metadata +146 -35
- data/README.md.tpl +0 -90
- data/samples/calc.7z +0 -0
- data/samples/zlib.dll +0 -0
data/spec/pedump_spec.rb
CHANGED
@@ -1,7 +1,19 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
|
-
describe "
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
describe "PEdump#dump" do
|
4
|
+
describe "should save packer" do
|
5
|
+
it "when arg is a filename" do
|
6
|
+
dump = PEdump.dump("samples/arm_upx.exe", :log_level => Logger::FATAL)
|
7
|
+
dump.packers.size.should == 1
|
8
|
+
dump.packers.first.name.should =~ /UPX/
|
9
|
+
end
|
10
|
+
|
11
|
+
it "when arg is an IO" do
|
12
|
+
File.open("samples/arm_upx.exe", "rb") do |f|
|
13
|
+
dump = PEdump.dump(f, :log_level => Logger::FATAL)
|
14
|
+
dump.packers.size.should == 1
|
15
|
+
dump.packers.first.name.should =~ /UPX/
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
7
19
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../lib/pedump')
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
['calc.exe', 'bad/data_dir_15_entries.exe'].each do |fname|
|
6
|
+
describe fname do
|
7
|
+
it "should match saved sections info" do
|
8
|
+
sample.sections.should == YAML::load_file(File.join(DATA_DIR,"#{File.basename(fname)}_sections.yml"))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -3,12 +3,22 @@ require File.expand_path(File.dirname(__FILE__) + '/../lib/pedump/packer')
|
|
3
3
|
|
4
4
|
describe "PEdump::Packer" do
|
5
5
|
describe "matchers" do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
if ENV['SLOW']
|
7
|
+
PEdump::SigParser.parse(:raw => true).each do |sig|
|
8
|
+
data = sig.re.join
|
9
|
+
next if data == "This program cannot be run in DOS mo"
|
10
|
+
it "should find #{sig.name}" do
|
11
|
+
a = PEdump::Packer.of(data).map(&:name)
|
12
|
+
a.size.should > 0
|
13
|
+
|
14
|
+
a = sig.name.split - a.join(' ').split - ['Exe','PE']
|
15
|
+
a.delete_if{ |x| x[/[vV\.\/()\[\]]/] }
|
16
|
+
p a if a.size > 1
|
17
|
+
a.size.should < 2
|
18
|
+
end
|
11
19
|
end
|
20
|
+
else
|
21
|
+
pending "SLOW"
|
12
22
|
end
|
13
23
|
end
|
14
24
|
end
|
data/spec/sig_spec.rb
CHANGED
@@ -31,6 +31,11 @@ describe "PEdump::Packer" do
|
|
31
31
|
next unless row =~ /^\[(.*)=(.*)\]$/
|
32
32
|
s = ''
|
33
33
|
title,hexstring = $1,$2
|
34
|
+
|
35
|
+
# bad sigs
|
36
|
+
next if hexstring == '909090909090909090909090909090909090909090909090909090909090909090909090'
|
37
|
+
next if hexstring == 'E9::::0000000000000000'
|
38
|
+
|
34
39
|
(hexstring.size/2).times do |i|
|
35
40
|
c = hexstring[i*2,2]
|
36
41
|
if c == '::'
|
@@ -52,7 +57,7 @@ describe "PEdump::Packer" do
|
|
52
57
|
# puts "\t= #{x}"
|
53
58
|
# end
|
54
59
|
else
|
55
|
-
puts "[?] #{title}"
|
60
|
+
puts "[?] #{title}: #{hexstring}"
|
56
61
|
n += 1
|
57
62
|
end
|
58
63
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,11 +2,23 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
3
|
require 'rspec'
|
4
4
|
require 'pedump'
|
5
|
+
require 'fileutils'
|
5
6
|
|
6
|
-
|
7
|
-
# in ./support/ and its subdirectories.
|
7
|
+
DATA_DIR = File.join(File.dirname(__FILE__), "data")
|
8
8
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
9
|
|
10
|
+
def unarchive_samples fname
|
11
|
+
flag_fname = File.join(File.dirname(fname), ".#{File.basename(fname)}_unpacked")
|
12
|
+
# check if already unpacked
|
13
|
+
return if File.exist?(flag_fname)
|
14
|
+
system "7zr", "x", "-y", "-o#{SAMPLES_DIR}", fname
|
15
|
+
FileUtils.touch(flag_fname) if $?.success?
|
16
|
+
end
|
17
|
+
|
10
18
|
RSpec.configure do |config|
|
11
|
-
|
19
|
+
config.before :suite do
|
20
|
+
Dir[File.join(SAMPLES_DIR,"*.7z")].each do |fname|
|
21
|
+
unarchive_samples fname
|
22
|
+
end
|
23
|
+
end
|
12
24
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
SAMPLES_DIR = File.expand_path(File.dirname(__FILE__) + '/../../samples/')
|
2
|
+
|
3
|
+
def sample
|
4
|
+
@pedump ||=
|
5
|
+
begin
|
6
|
+
fname =
|
7
|
+
if self.example
|
8
|
+
# called from it(...)
|
9
|
+
self.example.full_description.split.first
|
10
|
+
else
|
11
|
+
# called from before(:all)
|
12
|
+
self.class.metadata[:example_group][:description_args].first
|
13
|
+
end
|
14
|
+
fname = File.join(SAMPLES_DIR, fname)
|
15
|
+
File.open(fname,"rb") do |f|
|
16
|
+
if block_given?
|
17
|
+
yield PEdump.new(f)
|
18
|
+
else
|
19
|
+
PEdump.new(f).dump
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,69 @@
|
|
1
|
+
root = File.expand_path(File.dirname(File.dirname(File.dirname(__FILE__))))
|
2
|
+
require "#{root}/spec/spec_helper"
|
3
|
+
require "#{root}/lib/pedump"
|
4
|
+
require "#{root}/lib/pedump/unpacker/aspack"
|
5
|
+
require "#{root}/lib/pedump/comparer"
|
6
|
+
|
7
|
+
describe PEdump::Unpacker::ASPack do
|
8
|
+
Dir["#{root}/samples/*.asp[1-9]*.{exe}"].each do |pname|
|
9
|
+
orig_fname = pname.sub(/\.asp[^.]+/,'')
|
10
|
+
|
11
|
+
describe File.basename(orig_fname) + " vs " + File.basename(pname) do
|
12
|
+
before :all do
|
13
|
+
@ldr = PEdump::Loader.new(File.open(orig_fname,"rb"))
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should have no differences" do
|
17
|
+
File.open(pname,"rb") do |f|
|
18
|
+
u = PEdump::Unpacker::ASPack.new(f)
|
19
|
+
File.open("#{root}/tmp/unpacked.tmp","w+") do |fo|
|
20
|
+
u.unpack.dump(fo)
|
21
|
+
fo.rewind
|
22
|
+
ldr = PEdump::Loader.new(fo)
|
23
|
+
|
24
|
+
comparer = PEdump::Comparer.new(@ldr, ldr)
|
25
|
+
comparer.ignored_data_dirs = [
|
26
|
+
PEdump::IMAGE_DATA_DIRECTORY::LOAD_CONFIG,
|
27
|
+
PEdump::IMAGE_DATA_DIRECTORY::Bound_IAT,
|
28
|
+
PEdump::IMAGE_DATA_DIRECTORY::Delay_IAT
|
29
|
+
]
|
30
|
+
comparer.ignored_sections = [ '.rsrc', '.aspack' ]
|
31
|
+
comparer.diff.should == []
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
Dir["#{root}/samples/*.asp[1-9]*.{ocx}"].each do |pname|
|
39
|
+
orig_fname = pname.sub(/\.asp[^.]+/,'')
|
40
|
+
|
41
|
+
describe File.basename(orig_fname) + " vs " + File.basename(pname) do
|
42
|
+
before :all do
|
43
|
+
@ldr = PEdump::Loader.new(File.open(orig_fname,"rb"))
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should have no differences" do
|
47
|
+
File.open(pname,"rb") do |f|
|
48
|
+
u = PEdump::Unpacker::ASPack.new(f)
|
49
|
+
File.open("#{root}/tmp/unpacked.tmp","w+") do |fo|
|
50
|
+
u.unpack.dump(fo)
|
51
|
+
fo.rewind
|
52
|
+
ldr = PEdump::Loader.new(fo)
|
53
|
+
|
54
|
+
comparer = PEdump::Comparer.new(@ldr, ldr)
|
55
|
+
comparer.ignored_data_dirs = [
|
56
|
+
PEdump::IMAGE_DATA_DIRECTORY::LOAD_CONFIG,
|
57
|
+
PEdump::IMAGE_DATA_DIRECTORY::Bound_IAT,
|
58
|
+
PEdump::IMAGE_DATA_DIRECTORY::Delay_IAT,
|
59
|
+
PEdump::IMAGE_DATA_DIRECTORY::BASERELOC, # 0x15496 vs 0x15494
|
60
|
+
PEdump::IMAGE_DATA_DIRECTORY::IAT
|
61
|
+
]
|
62
|
+
comparer.ignored_sections = [ '.rsrc', '.aspack', '.cas' ]
|
63
|
+
comparer.diff.should == []
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
root = File.expand_path(File.dirname(File.dirname(File.dirname(__FILE__))))
|
2
|
+
require "#{root}/spec/spec_helper"
|
3
|
+
require "#{root}/lib/pedump/unpacker"
|
4
|
+
|
5
|
+
describe PEdump::Unpacker do
|
6
|
+
it "finds UPX" do
|
7
|
+
PEdump::Unpacker.find("#{root}/samples/calc_upx.exe").should == PEdump::Unpacker::UPX
|
8
|
+
end
|
9
|
+
|
10
|
+
it "finds ARM UPX" do
|
11
|
+
PEdump::Unpacker.find("#{root}/samples/arm_upx.exe").should == PEdump::Unpacker::UPX
|
12
|
+
end
|
13
|
+
|
14
|
+
it "finds ASPack" do
|
15
|
+
PEdump::Unpacker.find("#{root}/samples/calc.asp212.exe").should == PEdump::Unpacker::ASPack
|
16
|
+
end
|
17
|
+
|
18
|
+
it "finds nothing" do
|
19
|
+
PEdump::Unpacker.find("#{root}/samples/calc.exe").should be_nil
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../lib/pedump')
|
3
|
+
|
4
|
+
describe 'corkami/virtsectblXP.exe' do
|
5
|
+
it "should have 2 imports" do
|
6
|
+
sample.imports.size.should == 2
|
7
|
+
sample.imports.map(&:module_name).should == %w'kernel32.dll msvcrt.dll'
|
8
|
+
sample.imports.map do |iid|
|
9
|
+
(iid.original_first_thunk + iid.first_thunk).uniq.map(&:name)
|
10
|
+
end.flatten.should == ["ExitProcess", "printf"]
|
11
|
+
end
|
12
|
+
end
|
data/tmp/.keep
ADDED
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pedump
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-04-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multipart-post
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,65 +21,127 @@ dependencies:
|
|
21
21
|
version: 1.1.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.1.4
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: progressbar
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
|
-
- -
|
35
|
+
- - ! '>='
|
31
36
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0
|
37
|
+
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: awesome_print
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
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
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.0.4
|
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
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.0.2
|
36
94
|
- !ruby/object:Gem::Dependency
|
37
95
|
name: rspec
|
38
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
39
97
|
none: false
|
40
98
|
requirements:
|
41
|
-
- -
|
99
|
+
- - ! '>='
|
42
100
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
101
|
+
version: '0'
|
44
102
|
type: :development
|
45
103
|
prerelease: false
|
46
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
47
110
|
- !ruby/object:Gem::Dependency
|
48
111
|
name: bundler
|
49
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
50
113
|
none: false
|
51
114
|
requirements:
|
52
|
-
- -
|
115
|
+
- - ! '>='
|
53
116
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
117
|
+
version: '0'
|
55
118
|
type: :development
|
56
119
|
prerelease: false
|
57
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
58
126
|
- !ruby/object:Gem::Dependency
|
59
127
|
name: jeweler
|
60
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
61
129
|
none: false
|
62
130
|
requirements:
|
63
|
-
- -
|
131
|
+
- - ! '>='
|
64
132
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
133
|
+
version: '0'
|
66
134
|
type: :development
|
67
135
|
prerelease: false
|
68
|
-
version_requirements:
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rcov
|
71
|
-
requirement: &70304131996680 !ruby/object:Gem::Requirement
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
137
|
none: false
|
73
138
|
requirements:
|
74
139
|
- - ! '>='
|
75
140
|
- !ruby/object:Gem::Version
|
76
141
|
version: '0'
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: *70304131996680
|
80
142
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
requirement:
|
143
|
+
name: what_methods
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
83
145
|
none: false
|
84
146
|
requirements:
|
85
147
|
- - ! '>='
|
@@ -87,7 +149,12 @@ dependencies:
|
|
87
149
|
version: '0'
|
88
150
|
type: :development
|
89
151
|
prerelease: false
|
90
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
91
158
|
description: dump headers, sections, extract resources of win32 PE exe,dll,etc
|
92
159
|
email: zed.0xff@gmail.com
|
93
160
|
executables:
|
@@ -96,36 +163,80 @@ extensions: []
|
|
96
163
|
extra_rdoc_files:
|
97
164
|
- LICENSE.txt
|
98
165
|
- README.md
|
99
|
-
- README.md.tpl
|
100
166
|
files:
|
101
167
|
- .document
|
102
168
|
- .rspec
|
169
|
+
- .travis.yml
|
103
170
|
- Gemfile
|
104
171
|
- Gemfile.lock
|
105
172
|
- LICENSE.txt
|
106
173
|
- README.md
|
107
|
-
- README.md.tpl
|
108
174
|
- Rakefile
|
109
175
|
- VERSION
|
110
176
|
- bin/pedump
|
111
177
|
- data/fs.txt
|
178
|
+
- data/jc-userdb.txt
|
112
179
|
- data/sig.bin
|
113
180
|
- data/signatures.txt
|
114
181
|
- data/userdb.txt
|
115
182
|
- lib/pedump.rb
|
116
183
|
- lib/pedump/cli.rb
|
184
|
+
- lib/pedump/comparer.rb
|
185
|
+
- lib/pedump/composite_io.rb
|
186
|
+
- lib/pedump/core.rb
|
187
|
+
- lib/pedump/core_ext/try.rb
|
188
|
+
- lib/pedump/loader.rb
|
189
|
+
- lib/pedump/loader/minidump.rb
|
190
|
+
- lib/pedump/loader/section.rb
|
191
|
+
- lib/pedump/logger.rb
|
192
|
+
- lib/pedump/ne.rb
|
193
|
+
- lib/pedump/ne/version_info.rb
|
117
194
|
- lib/pedump/packer.rb
|
195
|
+
- lib/pedump/pe.rb
|
196
|
+
- lib/pedump/resources.rb
|
197
|
+
- lib/pedump/security.rb
|
118
198
|
- lib/pedump/sig_parser.rb
|
199
|
+
- lib/pedump/tls.rb
|
200
|
+
- lib/pedump/unpacker.rb
|
201
|
+
- lib/pedump/unpacker/aspack.rb
|
202
|
+
- lib/pedump/unpacker/upx.rb
|
119
203
|
- lib/pedump/version.rb
|
120
204
|
- lib/pedump/version_info.rb
|
205
|
+
- misc/aspack/Makefile
|
206
|
+
- misc/aspack/aspack_unlzx.c
|
207
|
+
- misc/aspack/lzxdec.c
|
208
|
+
- misc/aspack/lzxdec.h
|
209
|
+
- misc/nedump.c
|
121
210
|
- pedump.gemspec
|
122
|
-
- samples/
|
123
|
-
- samples/
|
211
|
+
- samples/bad/68.exe
|
212
|
+
- samples/bad/data_dir_15_entries.exe
|
213
|
+
- spec/65535sects_spec.rb
|
214
|
+
- spec/bad_imports_spec.rb
|
215
|
+
- spec/bad_samples_spec.rb
|
216
|
+
- spec/composite_io_spec.rb
|
217
|
+
- spec/data/calc.exe_sections.yml
|
218
|
+
- spec/data/data_dir_15_entries.exe_sections.yml
|
219
|
+
- spec/dllord_spec.rb
|
220
|
+
- spec/foldedhdr_spec.rb
|
221
|
+
- spec/imports_badterm_spec.rb
|
222
|
+
- spec/imports_vterm_spec.rb
|
223
|
+
- spec/loader/names_spec.rb
|
224
|
+
- spec/loader/va_spec.rb
|
225
|
+
- spec/manyimportsW7_spec.rb
|
226
|
+
- spec/ne_spec.rb
|
227
|
+
- spec/packer_spec.rb
|
228
|
+
- spec/pe_spec.rb
|
124
229
|
- spec/pedump_spec.rb
|
125
230
|
- spec/resource_spec.rb
|
231
|
+
- spec/sections_spec.rb
|
126
232
|
- spec/sig_all_packers_spec.rb
|
127
233
|
- spec/sig_spec.rb
|
128
234
|
- spec/spec_helper.rb
|
235
|
+
- spec/support/samples.rb
|
236
|
+
- spec/unpackers/aspack_spec.rb
|
237
|
+
- spec/unpackers/find_spec.rb
|
238
|
+
- spec/virtsectblXP_spec.rb
|
239
|
+
- tmp/.keep
|
129
240
|
homepage: http://github.com/zed-0xff/pedump
|
130
241
|
licenses:
|
131
242
|
- MIT
|
@@ -141,7 +252,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
141
252
|
version: '0'
|
142
253
|
segments:
|
143
254
|
- 0
|
144
|
-
hash:
|
255
|
+
hash: -1369606751108388991
|
145
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
257
|
none: false
|
147
258
|
requirements:
|
@@ -150,7 +261,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
261
|
version: '0'
|
151
262
|
requirements: []
|
152
263
|
rubyforge_project:
|
153
|
-
rubygems_version: 1.8.
|
264
|
+
rubygems_version: 1.8.24
|
154
265
|
signing_key:
|
155
266
|
specification_version: 3
|
156
267
|
summary: dump win32 PE executable files with a pure ruby
|