Class: Rex::PeScan::Search::DumpRVA

Inherits:
Object
  • Object
show all
Defined in:
lib/rex/pescan/search.rb

Direct Known Subclasses

DumpOffset

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pe) ⇒ DumpRVA

Returns a new instance of DumpRVA.



10
11
12
# File 'lib/rex/pescan/search.rb', line 10

def initialize(pe)
	self.pe = pe
end

Instance Attribute Details

#peObject

Returns the value of attribute pe.



8
9
10
# File 'lib/rex/pescan/search.rb', line 8

def pe
  @pe
end

Instance Method Details

#config(param) ⇒ Object



14
15
16
# File 'lib/rex/pescan/search.rb', line 14

def config(param)
	@address = pe.vma_to_rva(param['args'])
end

#scan(param) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/rex/pescan/search.rb', line 18

def scan(param)
	config(param)
	
	$stdout.puts "[#{param['file']}]"
	
	# Adjust based on -A and -B flags
	pre = param['before'] || 0
	suf = param['after']  || 16
	
	@address -= pre
	@address = 0 if (@address < 0 || ! @address)
	
	begin
		buf = pe.read_rva(@address, suf)
	rescue ::Rex::PeParsey::WtfError
		return
	end
	
	$stdout.puts pe.ptr_s(pe.rva_to_vma(@address)) + " " + buf.unpack("H*")[0]
	if(param['disasm'])
		::Rex::Assembly::Nasm.disassemble(buf).split("\n").each do |line|
			$stdout.puts "\t#{line.strip}"
		end
	end
	
end