diff --git a/lib/msf/core/encoded_payload.rb b/lib/msf/core/encoded_payload.rb index bee2f0c6a8..3db15a46cf 100644 --- a/lib/msf/core/encoded_payload.rb +++ b/lib/msf/core/encoded_payload.rb @@ -23,7 +23,7 @@ class EncodedPayload p = EncodedPayload.new(pinst.framework, pinst, reqs) p.generate(reqs['Raw']) - + return p end @@ -59,7 +59,7 @@ class EncodedPayload if (priority == 0) Thread.current.priority = 1 end - + begin # First, validate pinst.validate() @@ -75,8 +75,6 @@ class EncodedPayload # Finally, set the complete payload definition self.encoded = (self.nop_sled || '') + self.encoded - rescue NoEncodersSucceededError - self.encoded = nil ensure # Restore the thread priority Thread.current.priority = priority @@ -241,7 +239,7 @@ class EncodedPayload # If the encoded payload is nil, raise an exception saying that we # suck at life. if (self.encoded == nil) - self.encoder = nil + self.encoder = nil raise NoEncodersSucceededError, "#{pinst.refname}: All encoders failed to encode.", caller diff --git a/lib/msf/core/payload/stager.rb b/lib/msf/core/payload/stager.rb index b2df720853..b8dbe5e34b 100644 --- a/lib/msf/core/payload/stager.rb +++ b/lib/msf/core/payload/stager.rb @@ -141,7 +141,9 @@ module Msf::Payload::Stager warning_msg << " (#{conn.peerhost})" if conn.respond_to? :peerhost warning_msg << ": #{$!}" print_warning warning_msg - conn.close if conn.respond_to? :close + if conn.respond_to? :close && !conn.closed? + conn.close + end return end @@ -256,7 +258,7 @@ module Msf::Payload::Stager 'EncoderOptions' => { 'SaveRegisters' => saved_registers }, 'ForceSaveRegisters' => true, 'ForceEncode' => true) - + if encp.encoder print_status("Encoded stage with #{encp.encoder.refname}") estg = encp.encoded