@@ -9,6 +9,9 @@ class PayloadGeneratorError < StandardError
9
9
class EncoderSpaceViolation < PayloadGeneratorError
10
10
end
11
11
12
+ class PayloadSpaceViolation < PayloadGeneratorError
13
+ end
14
+
12
15
class IncompatibleArch < PayloadGeneratorError
13
16
end
14
17
@@ -314,20 +317,27 @@ def generate_payload
314
317
if platform == "java" or arch == "java" or payload . start_with? "java/"
315
318
raw_payload = generate_java_payload
316
319
cli_print "Payload size: #{ raw_payload . length } bytes"
317
- raw_payload
320
+ gen_payload = raw_payload
318
321
elsif payload . start_with? "android/" and not template . blank?
319
322
cli_print "Using APK template: #{ template } "
320
323
apk_backdoor = ::Msf ::Payload ::Apk ::ApkBackdoor ::new ( )
321
324
raw_payload = apk_backdoor . backdoor_apk ( template , generate_raw_payload )
322
325
cli_print "Payload size: #{ raw_payload . length } bytes"
323
- raw_payload
326
+ gen_payload = raw_payload
324
327
else
325
328
raw_payload = generate_raw_payload
326
329
raw_payload = add_shellcode ( raw_payload )
327
330
encoded_payload = encode_payload ( raw_payload )
328
331
encoded_payload = prepend_nops ( encoded_payload )
329
332
cli_print "Payload size: #{ encoded_payload . length } bytes"
330
- format_payload ( encoded_payload )
333
+ gen_payload = format_payload ( encoded_payload )
334
+ end
335
+ if gen_payload . nil?
336
+ raise PayloadGeneratorError , 'The payload could not be generated, check options'
337
+ elsif gen_payload . length > @space and not @smallest
338
+ raise PayloadSpaceViolation , 'The payload exceeds the specified space'
339
+ else
340
+ gen_payload
331
341
end
332
342
end
333
343
0 commit comments