Skip to content

Commit d494cf7

Browse files
committed
fix: update exe service templates to support stageless payloads
1 parent c163cb3 commit d494cf7

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

lib/msf/util/exe.rb

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,31 @@ def self.to_win64pe_service(framework, code, opts = {})
708708
# Allow the user to specify their own service EXE template
709709
set_template_default(opts, "template_x64_windows_svc.exe")
710710
opts[:exe_type] = :service_exe
711-
exe_sub_method(code,opts)
711+
if code.length >= 8192
712+
# Try to inject code into executable by adding a section without affecting executable behavior
713+
if opts[:inject]
714+
injector = Msf::Exe::SegmentInjector.new({
715+
:payload => code,
716+
:template => opts[:template],
717+
:arch => :x64,
718+
:secname => opts[:secname]
719+
})
720+
pe = injector.generate_pe
721+
else
722+
# Append a new section instead
723+
appender = Msf::Exe::SegmentAppender.new({
724+
:payload => code,
725+
:template => opts[:template],
726+
:arch => :x64,
727+
:secname => opts[:secname]
728+
})
729+
pe = appender.generate_pe
730+
end
731+
732+
return pe
733+
else
734+
return exe_sub_method(code,opts)
735+
end
712736
end
713737

714738
# self.set_template_default_winpe_dll

0 commit comments

Comments
 (0)