pedump 0.7.3 → 0.7.5
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.
- checksums.yaml +4 -4
- data/Gemfile +7 -12
- data/Gemfile.lock +21 -152
- data/LICENSE.txt +1 -1
- data/README.md +27 -0
- data/Rakefile +80 -112
- data/data/jc-userdb.txt +2 -6
- data/data/sig.bin +0 -0
- data/lib/pedump/cli.rb +40 -16
- data/lib/pedump/clr/readytorun.rb +1 -1
- data/lib/pedump/clr.rb +4 -4
- data/lib/pedump/colors.rb +29 -0
- data/lib/pedump/comparer.rb +12 -9
- data/lib/pedump/loader/minidump.rb +7 -7
- data/lib/pedump/logger.rb +4 -2
- data/lib/pedump/multipart.rb +56 -0
- data/lib/pedump/packer.rb +1 -1
- data/lib/pedump/resources.rb +1 -1
- data/lib/pedump/sig_parser.rb +11 -55
- data/lib/pedump/te.rb +19 -19
- data/lib/pedump/tls.rb +12 -14
- data/lib/pedump/unpacker/aspack.rb +4 -4
- data/lib/pedump/version.rb +3 -5
- data/lib/pedump.rb +29 -17
- data/pedump.gemspec +29 -88
- metadata +8 -90
- data/VERSION +0 -1
data/lib/pedump.rb
CHANGED
|
@@ -9,6 +9,7 @@ unless Object.new.respond_to?(:try) && nil.respond_to?(:try)
|
|
|
9
9
|
require 'pedump/core_ext/try'
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
+
require 'pedump/version'
|
|
12
13
|
require 'pedump/core'
|
|
13
14
|
require 'pedump/ordlookup'
|
|
14
15
|
require 'pedump/pe'
|
|
@@ -30,7 +31,6 @@ require 'pedump/clr'
|
|
|
30
31
|
class PEdump
|
|
31
32
|
attr_accessor :fname, :logger, :force, :io
|
|
32
33
|
|
|
33
|
-
VERSION = Version::STRING
|
|
34
34
|
MAX_ERRORS = 100
|
|
35
35
|
MAX_IMAGE_IMPORT_DESCRIPTORS = 1000
|
|
36
36
|
MAX_EXPORT_NUMBER_OF_NAMES = 16384 # got 7977 in https://pedump.me/03ad7400080678c6b1984f995d36fd04
|
|
@@ -397,7 +397,7 @@ class PEdump
|
|
|
397
397
|
alias :rich_header :rich_hdr
|
|
398
398
|
alias :rich :rich_hdr
|
|
399
399
|
|
|
400
|
-
def
|
|
400
|
+
def rva2file va, h={}
|
|
401
401
|
return nil if va.nil?
|
|
402
402
|
|
|
403
403
|
va0 = va # save for log output of original addr
|
|
@@ -445,7 +445,11 @@ class PEdump
|
|
|
445
445
|
nil
|
|
446
446
|
end
|
|
447
447
|
|
|
448
|
-
def
|
|
448
|
+
def va2file va, h = {}
|
|
449
|
+
va && rva2file(va - @pe.ioh.ImageBase.to_i, h)
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
def file2rva offset, h = {}
|
|
449
453
|
return nil if offset.nil?
|
|
450
454
|
|
|
451
455
|
# a special case - PE without sections
|
|
@@ -465,6 +469,11 @@ class PEdump
|
|
|
465
469
|
nil
|
|
466
470
|
end
|
|
467
471
|
|
|
472
|
+
def file2va offset, h = {}
|
|
473
|
+
va = file2rva(offset, h)
|
|
474
|
+
va && (va + @pe.ioh.ImageBase.to_i)
|
|
475
|
+
end
|
|
476
|
+
|
|
468
477
|
# OPTIONAL: assigns @mz, @rich_hdr, @pe, etc
|
|
469
478
|
def dump f=@io
|
|
470
479
|
if f.is_a?(String)
|
|
@@ -601,7 +610,7 @@ class PEdump
|
|
|
601
610
|
return nil unless pe(f) && pe(f).ioh && f
|
|
602
611
|
|
|
603
612
|
imports = imports(f)
|
|
604
|
-
return nil if imports.empty?
|
|
613
|
+
return nil if imports.nil? || imports.empty?
|
|
605
614
|
|
|
606
615
|
a = []
|
|
607
616
|
imports.each do |iid|
|
|
@@ -628,7 +637,7 @@ class PEdump
|
|
|
628
637
|
dir = @pe.ioh.DataDirectory[IMAGE_DATA_DIRECTORY::IMPORT]
|
|
629
638
|
return [] if !dir || (dir.va == 0 && dir.size == 0)
|
|
630
639
|
|
|
631
|
-
file_offset =
|
|
640
|
+
file_offset = rva2file(dir.va)
|
|
632
641
|
return nil unless file_offset
|
|
633
642
|
|
|
634
643
|
# scan TLS first, to catch many fake imports trick from
|
|
@@ -636,7 +645,7 @@ class PEdump
|
|
|
636
645
|
tls_aoi = nil
|
|
637
646
|
if (tls = tls(f)) && tls.any?
|
|
638
647
|
tls_aoi = tls.first.AddressOfIndex.to_i - @pe.ioh.ImageBase.to_i
|
|
639
|
-
tls_aoi = tls_aoi > 0 ?
|
|
648
|
+
tls_aoi = tls_aoi > 0 ? rva2file(tls_aoi) : nil
|
|
640
649
|
end
|
|
641
650
|
|
|
642
651
|
r = []; t = nil
|
|
@@ -672,7 +681,7 @@ class PEdump
|
|
|
672
681
|
@imports = @imports[0,iidx]
|
|
673
682
|
break
|
|
674
683
|
end
|
|
675
|
-
if x.Name.to_i != 0 && (ofs =
|
|
684
|
+
if x.Name.to_i != 0 && (ofs = rva2file(x.Name))
|
|
676
685
|
begin
|
|
677
686
|
f.seek ofs
|
|
678
687
|
rescue
|
|
@@ -683,7 +692,7 @@ class PEdump
|
|
|
683
692
|
end
|
|
684
693
|
[:original_first_thunk, :first_thunk].each do |tbl|
|
|
685
694
|
camel = tbl.capitalize.to_s.gsub(/_./){ |char| char[1..-1].upcase}
|
|
686
|
-
if x[camel].to_i != 0 && (ofs =
|
|
695
|
+
if x[camel].to_i != 0 && (ofs = rva2file(x[camel])) && f.checked_seek(ofs)
|
|
687
696
|
x[tbl] ||= []
|
|
688
697
|
if pe.x64?
|
|
689
698
|
x[tbl] << t while (t = f.read(8).to_s.unpack('Q').first).to_i != 0
|
|
@@ -701,7 +710,7 @@ class PEdump
|
|
|
701
710
|
cache[t] ||=
|
|
702
711
|
if t & mask > 0 # 0x8000_0000(_0000_0000)
|
|
703
712
|
ImportedFunction.new(nil,nil,t & (mask-1),va) # 0x7fff_ffff(_ffff_ffff)
|
|
704
|
-
elsif ofs=
|
|
713
|
+
elsif ofs=rva2file(t, :quiet => true)
|
|
705
714
|
if !f.checked_seek(ofs) || f.eof?
|
|
706
715
|
logger.warn "[?] import ofs 0x#{ofs.to_s(16)} VA=0x#{t.to_s(16)} beyond EOF"
|
|
707
716
|
nil
|
|
@@ -788,7 +797,7 @@ class PEdump
|
|
|
788
797
|
dir = @pe.ioh.DataDirectory[IMAGE_DATA_DIRECTORY::EXPORT]
|
|
789
798
|
return nil if !dir || (dir.va == 0 && dir.size == 0)
|
|
790
799
|
va = @pe.ioh.DataDirectory[IMAGE_DATA_DIRECTORY::EXPORT].va
|
|
791
|
-
file_offset =
|
|
800
|
+
file_offset = rva2file(va)
|
|
792
801
|
return nil unless file_offset
|
|
793
802
|
if !f.checked_seek(file_offset) || f.eof?
|
|
794
803
|
logger.warn "[?] exports info beyond EOF"
|
|
@@ -798,7 +807,7 @@ class PEdump
|
|
|
798
807
|
x.entry_points = []
|
|
799
808
|
x.name_ordinals = []
|
|
800
809
|
x.names = []
|
|
801
|
-
if x.Name.to_i != 0 && (ofs =
|
|
810
|
+
if x.Name.to_i != 0 && (ofs = rva2file(x.Name))
|
|
802
811
|
f.seek ofs
|
|
803
812
|
if f.eof?
|
|
804
813
|
logger.warn "[?] export ofs 0x#{ofs.to_s(16)} beyond EOF"
|
|
@@ -808,7 +817,7 @@ class PEdump
|
|
|
808
817
|
end
|
|
809
818
|
end
|
|
810
819
|
if x.NumberOfFunctions.to_i > 0
|
|
811
|
-
if x.AddressOfFunctions.to_i !=0 && (ofs =
|
|
820
|
+
if x.AddressOfFunctions.to_i !=0 && (ofs = rva2file(x.AddressOfFunctions))
|
|
812
821
|
f.seek ofs
|
|
813
822
|
x.entry_points = []
|
|
814
823
|
x.NumberOfFunctions.times do
|
|
@@ -819,7 +828,7 @@ class PEdump
|
|
|
819
828
|
x.entry_points << f.read(4).unpack('V').first
|
|
820
829
|
end
|
|
821
830
|
end
|
|
822
|
-
if x.AddressOfNameOrdinals.to_i !=0 && (ofs =
|
|
831
|
+
if x.AddressOfNameOrdinals.to_i !=0 && (ofs = rva2file(x.AddressOfNameOrdinals))
|
|
823
832
|
f.seek ofs
|
|
824
833
|
x.name_ordinals = []
|
|
825
834
|
x.NumberOfNames.times do
|
|
@@ -831,7 +840,7 @@ class PEdump
|
|
|
831
840
|
end
|
|
832
841
|
end
|
|
833
842
|
end
|
|
834
|
-
if x.NumberOfNames.to_i > 0 && x.AddressOfNames.to_i !=0 && (ofs =
|
|
843
|
+
if x.NumberOfNames.to_i > 0 && x.AddressOfNames.to_i !=0 && (ofs = rva2file(x.AddressOfNames))
|
|
835
844
|
f.seek ofs
|
|
836
845
|
x.names = []
|
|
837
846
|
x.NumberOfNames.times do
|
|
@@ -844,7 +853,7 @@ class PEdump
|
|
|
844
853
|
nErrors = 0
|
|
845
854
|
x.names.size.times do |i|
|
|
846
855
|
begin
|
|
847
|
-
f.seek
|
|
856
|
+
f.seek rva2file(x.names[i])
|
|
848
857
|
x.names[i] = f.gets("\x00").to_s.chomp("\x00")
|
|
849
858
|
rescue
|
|
850
859
|
nErrors += 1
|
|
@@ -890,7 +899,7 @@ class PEdump
|
|
|
890
899
|
begin
|
|
891
900
|
dir = @pe.ioh.DataDirectory[IMAGE_DATA_DIRECTORY::TLS]
|
|
892
901
|
return nil if !dir || dir.va == 0
|
|
893
|
-
return nil unless file_offset =
|
|
902
|
+
return nil unless file_offset = rva2file(dir.va)
|
|
894
903
|
f.seek file_offset
|
|
895
904
|
if f.eof?
|
|
896
905
|
logger.info "[?] TLS info beyond EOF"
|
|
@@ -947,7 +956,10 @@ class PEdump
|
|
|
947
956
|
##############################################################################
|
|
948
957
|
|
|
949
958
|
def tail f=@io
|
|
950
|
-
|
|
959
|
+
secs = sections(f)
|
|
960
|
+
return nil if secs.nil? || secs.empty?
|
|
961
|
+
|
|
962
|
+
tail_start = secs.map{ |s| s.PointerToRawData + s.SizeOfRawData }.max
|
|
951
963
|
if tail_start && tail_start < f.size
|
|
952
964
|
f.seek tail_start
|
|
953
965
|
f
|
data/pedump.gemspec
CHANGED
|
@@ -1,94 +1,35 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'English'
|
|
4
|
+
lib = File.expand_path('lib', __dir__)
|
|
5
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
6
|
+
require 'pedump/version'
|
|
6
7
|
|
|
7
8
|
Gem::Specification.new do |s|
|
|
8
|
-
s.name
|
|
9
|
-
s.version
|
|
9
|
+
s.name = 'pedump'
|
|
10
|
+
s.version = PEdump::VERSION
|
|
11
|
+
s.authors = ['Andrey "Zed" Zaikin']
|
|
12
|
+
s.email = 'zed.0xff@gmail.com'
|
|
13
|
+
s.homepage = 'http://github.com/zed-0xff/pedump'
|
|
14
|
+
s.license = 'MIT'
|
|
15
|
+
s.summary = 'dump win32 PE executable files with a pure ruby'
|
|
16
|
+
s.description = 'dump headers, sections, extract resources of win32 PE exe,dll,etc'
|
|
10
17
|
|
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(
|
|
12
|
-
s.require_paths = [
|
|
13
|
-
s.authors = ["Andrey \"Zed\" Zaikin".freeze]
|
|
14
|
-
s.date = "1980-01-02"
|
|
15
|
-
s.description = "dump headers, sections, extract resources of win32 PE exe,dll,etc".freeze
|
|
16
|
-
s.email = "zed.0xff@gmail.com".freeze
|
|
17
|
-
s.executables = ["pedump".freeze]
|
|
18
|
-
s.extra_rdoc_files = [
|
|
19
|
-
"LICENSE.txt",
|
|
20
|
-
"README.md"
|
|
21
|
-
]
|
|
22
|
-
s.files = [
|
|
23
|
-
"CODE_OF_CONDUCT.md",
|
|
24
|
-
"Gemfile",
|
|
25
|
-
"Gemfile.lock",
|
|
26
|
-
"LICENSE.txt",
|
|
27
|
-
"README.md",
|
|
28
|
-
"Rakefile",
|
|
29
|
-
"VERSION",
|
|
30
|
-
"bin/pedump",
|
|
31
|
-
"data/comp_id.txt",
|
|
32
|
-
"data/fs.txt",
|
|
33
|
-
"data/jc-userdb.txt",
|
|
34
|
-
"data/ordlookup/oleaut32.dll.yml",
|
|
35
|
-
"data/ordlookup/pefile2json.py",
|
|
36
|
-
"data/ordlookup/ws2_32.dll.yml",
|
|
37
|
-
"data/ordlookup/wsock32.dll.yml",
|
|
38
|
-
"data/sig.bin",
|
|
39
|
-
"data/signatures.txt",
|
|
40
|
-
"data/userdb.txt",
|
|
41
|
-
"lib/pedump.rb",
|
|
42
|
-
"lib/pedump/cli.rb",
|
|
43
|
-
"lib/pedump/clr.rb",
|
|
44
|
-
"lib/pedump/clr/readytorun.rb",
|
|
45
|
-
"lib/pedump/clr/signature.rb",
|
|
46
|
-
"lib/pedump/comparer.rb",
|
|
47
|
-
"lib/pedump/composite_io.rb",
|
|
48
|
-
"lib/pedump/core.rb",
|
|
49
|
-
"lib/pedump/core_ext/try.rb",
|
|
50
|
-
"lib/pedump/loader.rb",
|
|
51
|
-
"lib/pedump/loader/minidump.rb",
|
|
52
|
-
"lib/pedump/loader/section.rb",
|
|
53
|
-
"lib/pedump/logger.rb",
|
|
54
|
-
"lib/pedump/ne.rb",
|
|
55
|
-
"lib/pedump/ne/version_info.rb",
|
|
56
|
-
"lib/pedump/ordlookup.rb",
|
|
57
|
-
"lib/pedump/packer.rb",
|
|
58
|
-
"lib/pedump/pe.rb",
|
|
59
|
-
"lib/pedump/resources.rb",
|
|
60
|
-
"lib/pedump/rich.rb",
|
|
61
|
-
"lib/pedump/security.rb",
|
|
62
|
-
"lib/pedump/sig_parser.rb",
|
|
63
|
-
"lib/pedump/te.rb",
|
|
64
|
-
"lib/pedump/tls.rb",
|
|
65
|
-
"lib/pedump/unpacker.rb",
|
|
66
|
-
"lib/pedump/unpacker/aspack.rb",
|
|
67
|
-
"lib/pedump/unpacker/upx.rb",
|
|
68
|
-
"lib/pedump/version.rb",
|
|
69
|
-
"lib/pedump/version_info.rb",
|
|
70
|
-
"misc/aspack/Makefile",
|
|
71
|
-
"misc/aspack/aspack_unlzx.c",
|
|
72
|
-
"misc/aspack/lzxdec.c",
|
|
73
|
-
"misc/aspack/lzxdec.h",
|
|
74
|
-
"misc/nedump.c",
|
|
75
|
-
"pedump.gemspec"
|
|
76
|
-
]
|
|
77
|
-
s.homepage = "http://github.com/zed-0xff/pedump".freeze
|
|
78
|
-
s.licenses = ["MIT".freeze]
|
|
79
|
-
s.rubygems_version = "3.6.9".freeze
|
|
80
|
-
s.summary = "dump win32 PE executable files with a pure ruby".freeze
|
|
18
|
+
s.required_rubygems_version = Gem::Requirement.new('>= 0')
|
|
19
|
+
s.require_paths = ['lib']
|
|
81
20
|
|
|
82
|
-
s.
|
|
21
|
+
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
22
|
+
f.match(%r{^(samples|spec|tmp)/}) ||
|
|
23
|
+
f.match(/^\./) ||
|
|
24
|
+
f == 'README.md.tpl'
|
|
25
|
+
end
|
|
26
|
+
s.executables = ['pedump']
|
|
83
27
|
|
|
84
|
-
s.
|
|
85
|
-
s.add_runtime_dependency(%q<awesome_print>.freeze, [">= 0".freeze])
|
|
86
|
-
s.add_runtime_dependency(%q<iostruct>.freeze, [">= 0.5.0".freeze])
|
|
87
|
-
s.add_runtime_dependency(%q<multipart-post>.freeze, [">= 2.0.0".freeze])
|
|
88
|
-
s.add_runtime_dependency(%q<zhexdump>.freeze, [">= 0.0.2".freeze])
|
|
89
|
-
s.add_development_dependency(%q<rspec>.freeze, [">= 0".freeze])
|
|
90
|
-
s.add_development_dependency(%q<rspec-its>.freeze, [">= 0".freeze])
|
|
91
|
-
s.add_development_dependency(%q<bundler>.freeze, [">= 0".freeze])
|
|
92
|
-
s.add_development_dependency(%q<juwelier>.freeze, [">= 0".freeze])
|
|
93
|
-
end
|
|
28
|
+
s.extra_rdoc_files = ['LICENSE.txt', 'README.md']
|
|
94
29
|
|
|
30
|
+
s.add_runtime_dependency 'logger'
|
|
31
|
+
s.add_runtime_dependency 'iostruct', '>= 0.7.0'
|
|
32
|
+
s.add_runtime_dependency 'zhexdump', '>= 0.0.2'
|
|
33
|
+
|
|
34
|
+
s.metadata['rubygems_mfa_required'] = 'true'
|
|
35
|
+
end
|
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.7.
|
|
4
|
+
version: 0.7.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrey "Zed" Zaikin
|
|
@@ -10,21 +10,7 @@ cert_chain: []
|
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
|
-
name:
|
|
14
|
-
requirement: !ruby/object:Gem::Requirement
|
|
15
|
-
requirements:
|
|
16
|
-
- - ">="
|
|
17
|
-
- !ruby/object:Gem::Version
|
|
18
|
-
version: '0'
|
|
19
|
-
type: :runtime
|
|
20
|
-
prerelease: false
|
|
21
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
-
requirements:
|
|
23
|
-
- - ">="
|
|
24
|
-
- !ruby/object:Gem::Version
|
|
25
|
-
version: '0'
|
|
26
|
-
- !ruby/object:Gem::Dependency
|
|
27
|
-
name: awesome_print
|
|
13
|
+
name: logger
|
|
28
14
|
requirement: !ruby/object:Gem::Requirement
|
|
29
15
|
requirements:
|
|
30
16
|
- - ">="
|
|
@@ -43,28 +29,14 @@ dependencies:
|
|
|
43
29
|
requirements:
|
|
44
30
|
- - ">="
|
|
45
31
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 0.
|
|
47
|
-
type: :runtime
|
|
48
|
-
prerelease: false
|
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - ">="
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: 0.5.0
|
|
54
|
-
- !ruby/object:Gem::Dependency
|
|
55
|
-
name: multipart-post
|
|
56
|
-
requirement: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
58
|
-
- - ">="
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
version: 2.0.0
|
|
32
|
+
version: 0.7.0
|
|
61
33
|
type: :runtime
|
|
62
34
|
prerelease: false
|
|
63
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
36
|
requirements:
|
|
65
37
|
- - ">="
|
|
66
38
|
- !ruby/object:Gem::Version
|
|
67
|
-
version:
|
|
39
|
+
version: 0.7.0
|
|
68
40
|
- !ruby/object:Gem::Dependency
|
|
69
41
|
name: zhexdump
|
|
70
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -79,62 +51,6 @@ dependencies:
|
|
|
79
51
|
- - ">="
|
|
80
52
|
- !ruby/object:Gem::Version
|
|
81
53
|
version: 0.0.2
|
|
82
|
-
- !ruby/object:Gem::Dependency
|
|
83
|
-
name: rspec
|
|
84
|
-
requirement: !ruby/object:Gem::Requirement
|
|
85
|
-
requirements:
|
|
86
|
-
- - ">="
|
|
87
|
-
- !ruby/object:Gem::Version
|
|
88
|
-
version: '0'
|
|
89
|
-
type: :development
|
|
90
|
-
prerelease: false
|
|
91
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
-
requirements:
|
|
93
|
-
- - ">="
|
|
94
|
-
- !ruby/object:Gem::Version
|
|
95
|
-
version: '0'
|
|
96
|
-
- !ruby/object:Gem::Dependency
|
|
97
|
-
name: rspec-its
|
|
98
|
-
requirement: !ruby/object:Gem::Requirement
|
|
99
|
-
requirements:
|
|
100
|
-
- - ">="
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version: '0'
|
|
103
|
-
type: :development
|
|
104
|
-
prerelease: false
|
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
-
requirements:
|
|
107
|
-
- - ">="
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0'
|
|
110
|
-
- !ruby/object:Gem::Dependency
|
|
111
|
-
name: bundler
|
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - ">="
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '0'
|
|
117
|
-
type: :development
|
|
118
|
-
prerelease: false
|
|
119
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
-
requirements:
|
|
121
|
-
- - ">="
|
|
122
|
-
- !ruby/object:Gem::Version
|
|
123
|
-
version: '0'
|
|
124
|
-
- !ruby/object:Gem::Dependency
|
|
125
|
-
name: juwelier
|
|
126
|
-
requirement: !ruby/object:Gem::Requirement
|
|
127
|
-
requirements:
|
|
128
|
-
- - ">="
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
version: '0'
|
|
131
|
-
type: :development
|
|
132
|
-
prerelease: false
|
|
133
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
-
requirements:
|
|
135
|
-
- - ">="
|
|
136
|
-
- !ruby/object:Gem::Version
|
|
137
|
-
version: '0'
|
|
138
54
|
description: dump headers, sections, extract resources of win32 PE exe,dll,etc
|
|
139
55
|
email: zed.0xff@gmail.com
|
|
140
56
|
executables:
|
|
@@ -150,7 +66,6 @@ files:
|
|
|
150
66
|
- LICENSE.txt
|
|
151
67
|
- README.md
|
|
152
68
|
- Rakefile
|
|
153
|
-
- VERSION
|
|
154
69
|
- bin/pedump
|
|
155
70
|
- data/comp_id.txt
|
|
156
71
|
- data/fs.txt
|
|
@@ -167,6 +82,7 @@ files:
|
|
|
167
82
|
- lib/pedump/clr.rb
|
|
168
83
|
- lib/pedump/clr/readytorun.rb
|
|
169
84
|
- lib/pedump/clr/signature.rb
|
|
85
|
+
- lib/pedump/colors.rb
|
|
170
86
|
- lib/pedump/comparer.rb
|
|
171
87
|
- lib/pedump/composite_io.rb
|
|
172
88
|
- lib/pedump/core.rb
|
|
@@ -175,6 +91,7 @@ files:
|
|
|
175
91
|
- lib/pedump/loader/minidump.rb
|
|
176
92
|
- lib/pedump/loader/section.rb
|
|
177
93
|
- lib/pedump/logger.rb
|
|
94
|
+
- lib/pedump/multipart.rb
|
|
178
95
|
- lib/pedump/ne.rb
|
|
179
96
|
- lib/pedump/ne/version_info.rb
|
|
180
97
|
- lib/pedump/ordlookup.rb
|
|
@@ -200,7 +117,8 @@ files:
|
|
|
200
117
|
homepage: http://github.com/zed-0xff/pedump
|
|
201
118
|
licenses:
|
|
202
119
|
- MIT
|
|
203
|
-
metadata:
|
|
120
|
+
metadata:
|
|
121
|
+
rubygems_mfa_required: 'true'
|
|
204
122
|
rdoc_options: []
|
|
205
123
|
require_paths:
|
|
206
124
|
- lib
|
data/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.7.3
|