require 'rex/exploitation/egghunter' module Msf ### # # This mixin provides a interface to generating egghunters for various # platforms using the Rex::Exploitation::Egghunter class. # ### module Exploit::Egghunter # # Creates an instance of an exploit that uses an Egghunter overwrite. # def initialize(info = {}) super end # # Generates an egghunter stub based on the current target's architecture # and operating system. # def generate_egghunter # Prefer the target's platform/architecture information, but use # the module's if no target specific information exists los = target_platform larch = target_arch || ARCH_X86 # If we found a platform list, then take the first platform los = los.names[0] if (los.kind_of?(Msf::Module::PlatformList)) # Use the first architecture if one was specified larch = larch[0] if (larch.kind_of?(Array)) if los.nil? raise RuntimeError, "No platform restrictions were specified -- cannot select egghunter" end egg = Rex::Exploitation::Egghunter.new(los, larch) bunny = egg.generate(payload_badchars) if (bunny.nil?) print_error("The egghunter could not be generated") raise ArgumentError end return bunny end end end