Sha256: 9fedb19151b50e556d03720e081e7d114b7cd707a0bf742b8746d05d7f71bf72

Contents?: true

Size: 1.42 KB

Versions: 17

Compression:

Stored size: 1.42 KB

Contents

# -*- coding: binary -*-
module Rex
module PeScan
module Search

  require "rex/assembly/nasm"

  class DumpRVA
    attr_accessor :pe

    def initialize(pe)
      self.pe = pe
    end

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

    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::PeParseyError
        return
      end

      $stdout.puts pe.ptr_s(pe.rva_to_vma(@address)) + " " + buf.unpack("H*")[0]
      if(param['disasm'])
        insns = []
        buf.gsub!("; ", "\n")
        if buf.include?("retn")
          buf.gsub!("retn", "ret")
        end
        d2 = Metasm::Shellcode.disassemble(Metasm::Ia32.new, buf)
        addr = 0
        while ((di = d2.disassemble_instruction(addr)))
          insns << di.instruction
          disasm = "0x%08x\t" % (pe.rva_to_vma(@address) + addr)
          disasm << di.instruction.to_s
          $stdout.puts disasm
          addr = di.next_addr
        end
      end

    end
  end

  class DumpOffset < DumpRVA
    def config(param)
      begin
        @address = pe.file_offset_to_rva(param['args'])
      rescue Rex::PeParsey::BoundsError
      end
    end
  end
end
end
end

Version data entries

17 entries across 17 versions & 2 rubygems

Version Path
rex-bin_tools-0.1.10 lib/rex/pescan/search.rb
rex-bin_tools-0.1.9 lib/rex/pescan/search.rb
rex-bin_tools-0.1.8 lib/rex/pescan/search.rb
rex-bin_tools-0.1.7 lib/rex/pescan/search.rb
rex-2.0.13 lib/rex/pescan/search.rb
rex-bin_tools-0.1.6 lib/rex/pescan/search.rb
rex-bin_tools-0.1.5 lib/rex/pescan/search.rb
rex-2.0.12 lib/rex/pescan/search.rb
rex-bin_tools-0.1.4 lib/rex/pescan/search.rb
rex-2.0.11 lib/rex/pescan/search.rb
rex-bin_tools-0.1.3 lib/rex/pescan/search.rb
rex-bin_tools-0.1.2 lib/rex/pescan/search.rb
rex-bin_tools-0.1.1 lib/rex/pescan/search.rb
rex-bin_tools-0.1.0 lib/rex/pescan/search.rb
rex-2.0.10 lib/rex/pescan/search.rb
rex-2.0.9 lib/rex/pescan/search.rb
rex-2.0.8 lib/rex/pescan/search.rb