one_gadget 1.7.4 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/lib/one_gadget/abi.rb +2 -2
  4. data/lib/one_gadget/builds/libc-2.19-df559a150829d9f3cdd0b5ce1e5b4d512d20f55f.rb +1 -1
  5. data/lib/one_gadget/builds/libc-2.20-398115bd423958b1769317a6f7e4928df141eb57.rb +1 -1
  6. data/lib/one_gadget/builds/libc-2.20-f3063b7115d5a383189937852ce356f4c60fd190.rb +1 -1
  7. data/lib/one_gadget/builds/libc-2.21-9ac81172d5ff96f40d984fe7c10073a98f1a6b2e.rb +1 -1
  8. data/lib/one_gadget/builds/libc-2.21-f0c24219cbba0605e39e02123398437c5dbbb104.rb +1 -1
  9. data/lib/one_gadget/builds/libc-2.22-b916e3c1d80069d0209f6376b33e42b75ec49eda.rb +1 -1
  10. data/lib/one_gadget/builds/libc-2.23-18f761287ed46e213bec29c2e440e73fd72373be.rb +46 -0
  11. data/lib/one_gadget/builds/libc-2.23-30773be8cf5bfed9d910c8473dd44eaab2e705ab.rb +46 -0
  12. data/lib/one_gadget/builds/libc-2.23-635101aec7213fdc442419bf65a92047a862ff32.rb +46 -0
  13. data/lib/one_gadget/builds/libc-2.23-f2f2f2af4f3e8597cca1fdff1008a834c78de42b.rb +43 -0
  14. data/lib/one_gadget/builds/libc-2.24-349119af9e223829ea24f6b7226bdff0182e73f2.rb +49 -0
  15. data/lib/one_gadget/builds/libc-2.24-3fce81d490804af9759c70bf197380bc05a584c2.rb +46 -0
  16. data/lib/one_gadget/builds/libc-2.24-a51ace667ccae6a8887837efb18259a906704bed.rb +46 -0
  17. data/lib/one_gadget/builds/libc-2.24-deefae132c5a39ba892bc189edd91f73c1ea1f14.rb +37 -0
  18. data/lib/one_gadget/builds/libc-2.25-58c735bc7b19b0aeb395cce70cf63bd62ac75e4a.rb +9 -0
  19. data/lib/one_gadget/builds/libc-2.26-1c39b3b3faa2a2cbb0fa0b6845b29332562262d3.rb +9 -0
  20. data/lib/one_gadget/builds/libc-2.26-6d2b609f0c8e7b338f767b08c5ac712fac809d31.rb +9 -0
  21. data/lib/one_gadget/builds/libc-2.26-ddcc13122ddbfe5e5ef77d4ebe66d124ae5762c2.rb +9 -0
  22. data/lib/one_gadget/builds/libc-2.26-fb587bc4429e7d1b0de31a3b9ee8ae78ee797eb0.rb +9 -0
  23. data/lib/one_gadget/builds/libc-2.27-14cd15d2eb0bc25c89045873cf807f7533e4788d.rb +47 -0
  24. data/lib/one_gadget/builds/libc-2.27-71f0f3074a929e519e85f6a5c03a7d1fd976bfe4.rb +44 -0
  25. data/lib/one_gadget/builds/libc-2.27-73cd526a553b3b47c6dd0d6dc62175263cdc646e.rb +35 -0
  26. data/lib/one_gadget/builds/libc-2.27-9dd0bb57f81671704475d1e5163405f7b4d4b454.rb +3 -0
  27. data/lib/one_gadget/builds/libc-2.27-a5e88eb34369fb48113b9eda7a92e07b372f3cb7.rb +35 -0
  28. data/lib/one_gadget/builds/libc-2.27-ba63c4a5f5c2b51e6e7e5df94017dc98b20e397a.rb +47 -0
  29. data/lib/one_gadget/builds/libc-2.27-ce450eb01a5e5acc7ce7b8c2633b02cc1093339e.rb +44 -0
  30. data/lib/one_gadget/builds/libc-2.27-d1237c55f6778f53b369cf22ff81979b2fe340bb.rb +3 -0
  31. data/lib/one_gadget/builds/libc-2.27-d831493b564a8632d1da5cc0fe44af45713cfeb6.rb +47 -0
  32. data/lib/one_gadget/builds/libc-2.27-f4929d2a8af4629477103af6f1cfb3bebce80883.rb +47 -0
  33. data/lib/one_gadget/builds/libc-2.28-5b157f49586a3ca84d55837f97ff466767dd3445.rb +12 -0
  34. data/lib/one_gadget/builds/libc-2.28-65ed813688b116fdce9e866ad2fef2e734167337.rb +44 -0
  35. data/lib/one_gadget/builds/libc-2.28-6ee9454b96efa9e343f9e8105f2fa4529265ea05.rb +6 -0
  36. data/lib/one_gadget/builds/libc-2.29-5b7203920d3d786ac40af8e0d5104683335f11be.rb +50 -0
  37. data/lib/one_gadget/builds/libc-2.29-85d5020664b11fd2708859275de41d5ab9d104cf.rb +18 -0
  38. data/lib/one_gadget/builds/libc-2.29-a8af6c81cb28a37bf3a546970bf64224402f8bd4.rb +50 -0
  39. data/lib/one_gadget/builds/libc-2.29-c19c88c33b60742ca906e0f9f96fe31b8b79ea9c.rb +50 -0
  40. data/lib/one_gadget/builds/libc-2.29-d561ec515222887a1e004555981169199d841024.rb +27 -0
  41. data/lib/one_gadget/builds/libc-2.30-2155f455ad56bd871c8225bcca85ee25c1c197c4.rb +36 -0
  42. data/lib/one_gadget/builds/libc-2.30-33d1f350f13728651d74dd2a56bad1e4e4648f5e.rb +50 -0
  43. data/lib/one_gadget/builds/libc-2.30-7a1e2ae26cef50584af2c60a5ad3a7ae3e9b1446.rb +50 -0
  44. data/lib/one_gadget/builds/libc-2.30-cbe9cff3c43b979739af1681b61a3d585725577b.rb +36 -0
  45. data/lib/one_gadget/builds/libc-2.30-f07144cc3d0ac50415f3a2e061be6da672c914ba.rb +18 -0
  46. data/lib/one_gadget/builds/libc-2.30-f44469d65b4efd2e5951513ed7cbf773657f1283.rb +18 -0
  47. data/lib/one_gadget/builds/libc-2.31-012f3f1e614cb9c829b8d1590d228cc6a9506a03.rb +26 -0
  48. data/lib/one_gadget/builds/libc-2.31-099b9225bcb0d019d9d60884be583eb31bb5f44e.rb +80 -0
  49. data/lib/one_gadget/builds/libc-2.31-0d1b3211736c4ca528a32ea0d565d41a2ede3b58.rb +56 -0
  50. data/lib/one_gadget/builds/libc-2.31-12e412d1938ec3ff79751f0e85f31bc52f7e3722.rb +56 -0
  51. data/lib/one_gadget/builds/libc-2.31-2886817dc06a87bdeef50544c0d6c12de13a8148.rb +56 -0
  52. data/lib/one_gadget/builds/libc-2.31-4d4d0853eb075b8b0cfaee0aee7cdf4254a3e877.rb +56 -0
  53. data/lib/one_gadget/builds/libc-2.31-58a58f2fcdafddacb4a08439ea2ee163ff645d1d.rb +26 -0
  54. data/lib/one_gadget/builds/libc-2.31-634252e0c5f8b03957a2e529719d4101699a894a.rb +48 -0
  55. data/lib/one_gadget/builds/libc-2.31-6b143503744b9d6c22e479941488d6a9e6e3f1c5.rb +26 -0
  56. data/lib/one_gadget/builds/libc-2.31-6dbad1709854c527793f6401666e45a791b7c793.rb +56 -0
  57. data/lib/one_gadget/builds/libc-2.31-85d7bb2dad0f8172d1c02c0311a00c4695933beb.rb +26 -0
  58. data/lib/one_gadget/builds/libc-2.31-8629fa2eea681f639a0c18305d4548850dde3450.rb +26 -0
  59. data/lib/one_gadget/builds/libc-2.31-94761ae31db09ce9140ca55cb6986a5ea9110abc.rb +56 -0
  60. data/lib/one_gadget/builds/libc-2.31-9fdb74e7b217d06c93172a8243f8547f947ee6d1.rb +80 -0
  61. data/lib/one_gadget/builds/libc-2.31-c9d56de82ddd00d822d6100034f3075ef1709cd2.rb +80 -0
  62. data/lib/one_gadget/builds/libc-2.31-e67e80e70619717709e3180e552a11a285036a54.rb +56 -0
  63. data/lib/one_gadget/builds/libc-2.31-eb3c5cf73a0a6b7f2b3895a56dbc443806700971.rb +30 -0
  64. data/lib/one_gadget/builds/libc-2.31-fb7626dd8b8a50f7685920487e992528834f6775.rb +26 -0
  65. data/lib/one_gadget/builds/libc-2.32-1e3fb06b8c86b5e282e3e11bd207d399fb4952e2.rb +83 -0
  66. data/lib/one_gadget/builds/libc-2.32-7ec3e74da842ca3c6a9ba20b21303ce1bc7a45af.rb +51 -0
  67. data/lib/one_gadget/builds/libc-2.32-7fba7abef941659c229c2636aa0905c28652ee3f.rb +56 -0
  68. data/lib/one_gadget/builds/libc-2.32-82f6b69e698bb579baefb35a3fb0346632fa2c4d.rb +83 -0
  69. data/lib/one_gadget/builds/libc-2.32-87f011a7e4cc3fc60a54d0d3dd690e7438decc8d.rb +56 -0
  70. data/lib/one_gadget/builds/libc-2.32-92199dd358616182fb49c992330fb05e42eaa423.rb +26 -0
  71. data/lib/one_gadget/builds/libc-2.32-9d60d4bd625a7fe2439db781a5fc91bb69684903.rb +26 -0
  72. data/lib/one_gadget/builds/libc-2.32-ac287babd169c70013b752da2713dfb96d9a503f.rb +83 -0
  73. data/lib/one_gadget/builds/libc-2.32-aebd80372a00285a5c486ef72917f935eb8f91be.rb +26 -0
  74. data/lib/one_gadget/builds/libc-2.32-bd0e9dc4e27475b5ab7dc59141daaa2626b8a760.rb +26 -0
  75. data/lib/one_gadget/builds/libc-2.32-bddeb6374fc99723cef3b3baafe48ac78fce13b4.rb +26 -0
  76. data/lib/one_gadget/builds/libc-2.32-cb91dd613d38b806a16bed1b364c084ad63d1a1f.rb +56 -0
  77. data/lib/one_gadget/builds/libc-2.32-d3f1cf7f55b985fd6d989880ec3599724fe40a26.rb +26 -0
  78. data/lib/one_gadget/builds/libc-2.32-e13b24f94b260dd6394bdb2433d2a78e37078d5c.rb +30 -0
  79. data/lib/one_gadget/builds/libc-2.32-e1596c76d0d93d8a36378ba976f034f140618d59.rb +56 -0
  80. data/lib/one_gadget/builds/libc-2.32-f45b67ab28af1581cba8e4713e0fd3b2bc004b2e.rb +56 -0
  81. data/lib/one_gadget/builds/libc-2.33-18edf6b683a2f9768cc0ee9cc64ae6fbb545deb2.rb +83 -0
  82. data/lib/one_gadget/builds/libc-2.33-1c943bf313b5b4546e47b830e70de6bbd6a0ba57.rb +26 -0
  83. data/lib/one_gadget/builds/libc-2.33-2b48299781548c9bc452eac6df39902547c884ed.rb +83 -0
  84. data/lib/one_gadget/builds/libc-2.33-37169e68b33cad12e272bb4896d71fd0d4fd98bb.rb +56 -0
  85. data/lib/one_gadget/builds/libc-2.33-54a6e404e7dc1de7c1434a00b7b1ad325b81f22a.rb +56 -0
  86. data/lib/one_gadget/builds/libc-2.33-7983d313db4a441a3762c8861ca405aa0331c0c8.rb +56 -0
  87. data/lib/one_gadget/builds/libc-2.33-8fdc2b2c65f3d782e52c01b546399eee8aa466dc.rb +26 -0
  88. data/lib/one_gadget/builds/libc-2.33-9143da129b44b931a1c180e2b103e993dd2474fd.rb +26 -0
  89. data/lib/one_gadget/builds/libc-2.33-97c8d90bd86bc698d156630e8803de433a640090.rb +83 -0
  90. data/lib/one_gadget/builds/libc-2.33-9bf4c513db255ab7248cef9f0f96b4403df29852.rb +56 -0
  91. data/lib/one_gadget/builds/libc-2.33-9e592d3efa165bc2bab8b40426370bd50cb0b027.rb +56 -0
  92. data/lib/one_gadget/builds/libc-2.33-abf3b2a9815c0cd6e4280cd99474d34102804eb2.rb +56 -0
  93. data/lib/one_gadget/builds/libc-2.33-b046eecd056a0c30995703f6cfca7a8e3a9ef5fa.rb +56 -0
  94. data/lib/one_gadget/builds/libc-2.33-b2262bfa6f1bffd1e9ddc845276dfaebb7c8f0b9.rb +26 -0
  95. data/lib/one_gadget/builds/libc-2.33-f462ab2b79c7f29fb866da6e087e45261570a09c.rb +26 -0
  96. data/lib/one_gadget/builds/libc-2.33-f4af69206091c7f14a941f2dd77a79a7682a1184.rb +26 -0
  97. data/lib/one_gadget/builds/libc-2.34-140609514178a4bb96a3cd44ffdfede398a77610.rb +26 -0
  98. data/lib/one_gadget/builds/libc-2.34-25594d4b6cbecda86ec968fa940c6c09937db70f.rb +50 -0
  99. data/lib/one_gadget/builds/libc-2.34-387920279e1c7892042ff27d76315d55e4651db9.rb +26 -0
  100. data/lib/one_gadget/builds/libc-2.34-7e46fbc4d85f5df8b6f18630787ad281786a3512.rb +26 -0
  101. data/lib/one_gadget/builds/libc-2.34-8d631c824a37b236d1dc9686b224a573fd6048b4.rb +26 -0
  102. data/lib/one_gadget/builds/libc-2.34-b8037b6260865346802321dd2256b8ad1d857e63.rb +68 -0
  103. data/lib/one_gadget/builds/libc-2.34-ba4777827fe1fb729ca35acd99c8013936172a0d.rb +50 -0
  104. data/lib/one_gadget/builds/libc-2.34-f0fc29165cbe6088c0e1adf03b0048fbecbc003a.rb +68 -0
  105. data/lib/one_gadget/builds/libc-2.35-89c3cb85f9e55046776471fed05ec441581d1969.rb +62 -0
  106. data/lib/one_gadget/builds/libc-2.35-ab265082cac9486923c709d48ee5dde080e243ff.rb +41 -0
  107. data/lib/one_gadget/builds/libc-2.35-c376d41cff4473142a97ac1ff1eab433859dc3d4.rb +26 -0
  108. data/lib/one_gadget/builds/libc-2.35-dfca8b65dd2d2ca67f70dc7a556a6cfa8ba96ed8.rb +26 -0
  109. data/lib/one_gadget/cli.rb +1 -1
  110. data/lib/one_gadget/emulators/aarch64.rb +7 -8
  111. data/lib/one_gadget/emulators/amd64.rb +3 -0
  112. data/lib/one_gadget/emulators/lambda.rb +12 -4
  113. data/lib/one_gadget/emulators/processor.rb +9 -1
  114. data/lib/one_gadget/emulators/x86.rb +42 -19
  115. data/lib/one_gadget/fetchers/amd64.rb +2 -1
  116. data/lib/one_gadget/fetchers/base.rb +65 -34
  117. data/lib/one_gadget/gadget.rb +9 -5
  118. data/lib/one_gadget/update.rb +2 -2
  119. data/lib/one_gadget/version.rb +1 -1
  120. metadata +91 -5
@@ -16,6 +16,7 @@ module OneGadget
16
16
  def candidates
17
17
  # one basic block case
18
18
  cands = super do |candidate|
19
+ next true if candidate.include?('posix_spawn@')
19
20
  next false unless candidate.include?(bin_sh_hex) # works in x86-64
20
21
  next false unless candidate.lines.last.include?('execve') # only care execve
21
22
 
@@ -32,7 +33,7 @@ module OneGadget
32
33
  # ...
33
34
  # call execve
34
35
  def jmp_case_candidates
35
- `#{@objdump.command}|egrep 'rdi.*# #{bin_sh_hex}' -A 3`.split('--').map do |cand|
36
+ `#{@objdump.command}|egrep '# #{bin_sh_hex}' -A 8`.split('--').map do |cand|
36
37
  cand = cand.lines.map(&:strip).reject(&:empty?)
37
38
  jmp_at = cand.index { |c| c.include?('jmp') }
38
39
  next nil if jmp_at.nil?
@@ -7,12 +7,12 @@ module OneGadget
7
7
  module Fetcher
8
8
  # Define common methods for gadget fetchers.
9
9
  class Base
10
- # The absolute path of glibc.
10
+ # The absolute path to glibc.
11
11
  # @return [String] The filename.
12
12
  attr_reader :file
13
13
 
14
14
  # Instantiate a fetcher object.
15
- # @param [String] file Absolute path of target libc.
15
+ # @param [String] file Absolute path to the target libc.
16
16
  def initialize(file)
17
17
  @file = file
18
18
  arch = self.class.name.split('::').last.downcase.to_sym
@@ -30,7 +30,7 @@ module OneGadget
30
30
  (lines.size - 2).downto(0) do |i|
31
31
  processor = emulate(lines[i..-1])
32
32
  options = resolve(processor)
33
- next if options.nil? # impossible be a gadget
33
+ next if options.nil? # impossible to be a gadget
34
34
 
35
35
  offset = offset_of(lines[i])
36
36
  gadgets << OneGadget::Gadget::Gadget.new(offset, **options)
@@ -41,7 +41,7 @@ module OneGadget
41
41
 
42
42
  # Fetch candidates that end with call exec*.
43
43
  #
44
- # Give a block to filter gadget candidates.
44
+ # Provide a block to filter gadget candidates.
45
45
  # @yieldparam [String] cand
46
46
  # Is this candidate valid?
47
47
  # @yieldreturn [Boolean]
@@ -49,7 +49,7 @@ module OneGadget
49
49
  # @return [Array<String>]
50
50
  # Each +String+ returned is multi-lines of assembly code.
51
51
  def candidates(&block)
52
- call_regexp = "#{call_str}.*<exec[^+]*>$"
52
+ call_regexp = "#{call_str}.*<(exec[^+]*|posix_spawn[^+]*)>$"
53
53
  cands = []
54
54
  `#{@objdump.command}|egrep '#{call_regexp}' -B 30`.split('--').each do |cand|
55
55
  lines = cand.lines.map(&:strip).reject(&:empty?)
@@ -69,7 +69,7 @@ module OneGadget
69
69
 
70
70
  private
71
71
 
72
- # Generating constraints to be a valid gadget.
72
+ # Generating constraints for being a valid gadget.
73
73
  # @param [OneGadget::Emulators::Processor] processor The processor after executing the gadgets.
74
74
  # @return [Hash{Symbol => Array<String>, String}?]
75
75
  # The options to create a {OneGadget::Gadget::Gadget} object.
@@ -79,28 +79,28 @@ module OneGadget
79
79
  # If the constraints can never be satisfied, +nil+ is returned.
80
80
  def resolve(processor)
81
81
  call = processor.registers[processor.pc].to_s
82
- # This costs cheaper, so check first.
83
- # check call execve / execl
84
- return unless %w[execve execl].any? { |n| call.include?(n) }
85
- # check first argument contains /bin/sh
86
- # since the logic is different between amd64 and i386,
87
- # invoke str_bin_sh? for checking
88
- return unless str_bin_sh?(processor.argument(0).to_s)
89
-
90
- if call.include?('execve')
91
- resolve_execve(processor)
92
- elsif call.include?('execl')
93
- resolve_execl(processor)
94
- end
82
+ return resolve_posix_spawn(processor) if call.include?('posix_spawn')
83
+ return resolve_execve(processor) if call.include?('execve')
84
+ return resolve_execl(processor) if call.include?('execl')
95
85
  end
96
86
 
97
87
  def resolve_execve(processor)
98
- # arg[1] == NULL || [arg[1]] == NULL
99
- # arg[2] == NULL || [arg[2]] == NULL || arg[2] == envp
88
+ arg0 = processor.argument(0).to_s
100
89
  arg1 = processor.argument(1).to_s
101
90
  arg2 = processor.argument(2).to_s
91
+ res = resolve_execve_args(processor, arg0, arg1, arg2)
92
+ return nil if res.nil?
93
+
94
+ { constraints: res[:constraints], effect: %(execve("/bin/sh", #{arg1}, #{res[:envp]})) }
95
+ end
96
+
97
+ def resolve_execve_args(processor, arg0, arg1, arg2, allow_null_argv: true)
98
+ return unless str_bin_sh?(arg0)
99
+
100
+ # arg1 == NULL || [arg1] == NULL
101
+ # arg2 == NULL || [arg2] == NULL || arg[2] == envp
102
102
  cons = processor.constraints
103
- cons << check_execve_arg(processor, arg1)
103
+ cons << check_execve_arg(processor, arg1, allow_null_argv)
104
104
  return nil unless cons.all?
105
105
 
106
106
  envp = 'environ'
@@ -109,38 +109,42 @@ module OneGadget
109
109
  envp = arg2
110
110
  end
111
111
 
112
- { constraints: cons, effect: %(execve("/bin/sh", #{arg1}, #{envp})) }
112
+ { constraints: cons, envp: envp }
113
113
  end
114
114
 
115
- # arg[1] == NULL || [arg[1]] == NULL
116
- def check_execve_arg(processor, arg)
115
+ # arg == NULL || [arg] == NULL
116
+ def check_execve_arg(processor, arg, allow_null)
117
117
  if arg.start_with?(processor.sp) # arg = sp+<num>
118
- # in this case, the only constraint is [sp+<num>] == NULL
118
+ # in this case, the only chance is [sp+<num>] == NULL
119
119
  num = Integer(arg[processor.sp.size..-1])
120
120
  slot = processor.stack[num].to_s
121
121
  return if global_var?(slot)
122
122
 
123
123
  "#{slot} == NULL"
124
- else
124
+ elsif allow_null
125
125
  "[#{arg}] == NULL || #{arg} == NULL"
126
+ else
127
+ "[#{arg}] == NULL"
126
128
  end
127
129
  end
128
130
 
129
131
  def check_envp(processor, arg)
130
- # if str starts with [[ and is global var,
131
- # believe it is environ
132
- # if starts with [[ but not global, drop it.
132
+ # If str starts with [[ and is a global variable,
133
+ # believe it is environ.
134
+ # If it starts with [[ but not a global var, drop it.
133
135
  return global_var?(arg) if arg.start_with?('[[')
134
136
 
135
137
  # normal
136
- cons = check_execve_arg(processor, arg)
138
+ cons = check_execve_arg(processor, arg, true)
137
139
  return nil if cons.nil?
138
140
 
139
141
  yield cons
140
142
  end
141
143
 
142
- # Resolve +call execl+ case.
144
+ # Resolve +call execl+ cases.
143
145
  def resolve_execl(processor)
146
+ return unless str_bin_sh?(processor.argument(0).to_s)
147
+
144
148
  args = []
145
149
  arg = processor.argument(1).to_s
146
150
  if str_sh?(arg)
@@ -151,10 +155,37 @@ module OneGadget
151
155
 
152
156
  args << arg
153
157
  cons = processor.constraints + ["#{arg} == NULL"]
154
- # now arg is the constraint.
155
158
  { constraints: cons, effect: %(execl("/bin/sh", #{args.join(', ')})) }
156
159
  end
157
160
 
161
+ # posix_spawn (*pid, *path, *file_actions, *attrp, argv[], envp[])
162
+ # Constraints are
163
+ # * pid == NULL || *pid is writable
164
+ # * file_actions == NULL || (int) (file_actions->__used) <= 0
165
+ # * attrp == NULL || attrp->flags == 0
166
+ # Meet all constraints then posix_spawn eventually calls execve(path, argv, envp)
167
+ def resolve_posix_spawn(processor)
168
+ args = Array.new(6) { |i| processor.argument(i) }
169
+ res = resolve_execve_args(processor, args[1].to_s, args[4].to_s, args[5].to_s, allow_null_argv: false)
170
+ return nil if res.nil?
171
+
172
+ cons = res[:constraints]
173
+ arg0 = args[0]
174
+ if arg0.to_s != '0'
175
+ if arg0.deref_count.zero? && arg0.to_s.include?(processor.sp)
176
+ # Assume stack is always writable, no additional constraints.
177
+ else
178
+ cons << "#{arg0} == NULL || writable: #{arg0}"
179
+ end
180
+ end
181
+ arg2 = args[2]
182
+ cons << "#{arg2} == NULL || (s32)#{(arg2 + 4).deref} <= 0" if arg2.to_s != '0'
183
+ arg3 = args[3]
184
+ cons << "#{arg3} == NULL || (u16)#{arg3.deref} == NULL" if arg3.to_s != '0'
185
+
186
+ { constraints: cons, effect: %(posix_spawn(#{arg0}, "/bin/sh", #{arg2}, #{arg3}, #{args[4]}, #{res[:envp]})) }
187
+ end
188
+
158
189
  def global_var?(_str); raise NotImplementedError
159
190
  end
160
191
 
@@ -192,7 +223,7 @@ module OneGadget
192
223
  end
193
224
 
194
225
  def str_offset(str)
195
- IO.binread(file).index("#{str}\x00") ||
226
+ File.binread(file).index("#{str}\x00") ||
196
227
  raise(Error::ArgumentError, "File #{file.inspect} doesn't contain string #{str.inspect}, not glibc?")
197
228
  end
198
229
 
@@ -62,12 +62,15 @@ module OneGadget
62
62
 
63
63
  # REG: OneGadget::ABI.all
64
64
  # IMM: [+-]0x[\da-f]+
65
+ # BITS: 8, 16, 32, 64
66
+ # CAST: (<s|u><BITS>)
65
67
  # Identity: <REG><IMM>?
66
68
  # Identity: [<Identity>]
67
69
  # Expr: <REG> is the GOT address of libc
68
70
  # Expr: writable: <Identity>
69
- # Expr: <Identity> == NULL
71
+ # Expr: <CAST>?<Identity> == NULL
70
72
  # Expr: <REG> & 0xf == <IMM>
73
+ # Expr: (s32)[<Identity>] <= 0
71
74
  # Expr: <Expr> || <Expr>
72
75
  def calculate_score(expr)
73
76
  return expr.split(' || ').map(&method(:calculate_score)).max if expr.include?(' || ')
@@ -76,15 +79,16 @@ module OneGadget
76
79
  when / & 0xf/ then 0.95
77
80
  when /GOT address/ then 0.9
78
81
  when /^writable/ then 0.81
79
- when / == NULL$/ then calculate_null_score(expr)
82
+ when / == NULL$/ then calculate_null_score(expr.slice(0...expr.rindex(' == NULL')))
83
+ when / <= 0$/ then calculate_null_score(expr.slice(0...expr.rindex(' <= ')))
80
84
  end
81
85
  end
82
86
 
83
- def calculate_null_score(expr)
84
- identity = expr.slice(0...expr.rindex(' == NULL'))
87
+ def calculate_null_score(identity)
88
+ # remove <CAST>
89
+ identity.sub!(/^\([s|u]\d+\)/, '')
85
90
  # Thank God we are already able to parse this
86
91
  lmda = OneGadget::Emulators::Lambda.parse(identity)
87
- # raise Error::ArgumentError, expr unless OneGadget::ABI.all.include?(lmda.obj)
88
92
  # rax == 0 is easy; rax + 0x10 == 0 is damn hard.
89
93
  return lmda.immi.zero? ? 0.9 : 0.1 if lmda.deref_count.zero?
90
94
 
@@ -42,7 +42,7 @@ module OneGadget
42
42
  # don't check if not CLI
43
43
  return false unless $stdout.tty?
44
44
  return false if cache.nil? # cache file fails, no update check.
45
- return false if IO.binread(cache).strip == 'never'
45
+ return false if File.binread(cache).strip == 'never'
46
46
 
47
47
  Time.now >= last_check + FREQUENCY
48
48
  end
@@ -57,7 +57,7 @@ module OneGadget
57
57
  def cache_file
58
58
  dir = File.dirname(CACHE_FILE)
59
59
  FileUtils.mkdir_p(dir) unless File.directory?(dir)
60
- IO.binwrite(CACHE_FILE, '') unless File.exist?(CACHE_FILE)
60
+ File.binwrite(CACHE_FILE, '') unless File.exist?(CACHE_FILE)
61
61
  CACHE_FILE
62
62
  rescue Errno::EACCES # prevent dir is not writable
63
63
  nil
@@ -2,5 +2,5 @@
2
2
 
3
3
  module OneGadget
4
4
  # Current gem version.
5
- VERSION = '1.7.4'
5
+ VERSION = '1.8.0'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: one_gadget
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.4
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - david942j
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-13 00:00:00.000000000 Z
11
+ date: 2022-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: elftools
@@ -78,14 +78,20 @@ dependencies:
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 0.18.5
81
+ version: '0.17'
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '0.18'
82
85
  type: :development
83
86
  prerelease: false
84
87
  version_requirements: !ruby/object:Gem::Requirement
85
88
  requirements:
86
89
  - - "~>"
87
90
  - !ruby/object:Gem::Version
88
- version: 0.18.5
91
+ version: '0.17'
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '0.18'
89
95
  - !ruby/object:Gem::Dependency
90
96
  name: yard
91
97
  requirement: !ruby/object:Gem::Requirement
@@ -637,6 +643,7 @@ files:
637
643
  - lib/one_gadget/builds/libc-2.23-11ae3441756e6c2ebf5c962434bf9f07b3ea3deb.rb
638
644
  - lib/one_gadget/builds/libc-2.23-131c254aed46e6a24cb08f3abe802ea0ef50e5f9.rb
639
645
  - lib/one_gadget/builds/libc-2.23-1800a4bdb0c42a7bb7a570ed90724fa04de8a4fe.rb
646
+ - lib/one_gadget/builds/libc-2.23-18f761287ed46e213bec29c2e440e73fd72373be.rb
640
647
  - lib/one_gadget/builds/libc-2.23-1b1d19add6d861e16e04e4b8e9864a7bc16c1327.rb
641
648
  - lib/one_gadget/builds/libc-2.23-1ca54a6e0d76188105b12e49fe6b8019bf08803a.rb
642
649
  - lib/one_gadget/builds/libc-2.23-1e80992437b5e1cb76bf56605ee8991e76e85f69.rb
@@ -647,6 +654,7 @@ files:
647
654
  - lib/one_gadget/builds/libc-2.23-29e38445a740bba5a77b86691e3c51a7e48dc79b.rb
648
655
  - lib/one_gadget/builds/libc-2.23-2aedae2bb27ac85cf14c36da79747dd88bb2b633.rb
649
656
  - lib/one_gadget/builds/libc-2.23-2c4ed1bebc9ede033fbbb422f84da9a93cacd88e.rb
657
+ - lib/one_gadget/builds/libc-2.23-30773be8cf5bfed9d910c8473dd44eaab2e705ab.rb
650
658
  - lib/one_gadget/builds/libc-2.23-336976f90c600be7c95a68be6c2f0652cc22347c.rb
651
659
  - lib/one_gadget/builds/libc-2.23-3612e20f3e2705dcf8fd81ac494a0e20b9e16764.rb
652
660
  - lib/one_gadget/builds/libc-2.23-369de0e1d833caa693af17f17c83ba937f0a4dad.rb
@@ -660,6 +668,7 @@ files:
660
668
  - lib/one_gadget/builds/libc-2.23-5d511bfe32efcb567933d13ab9dc87f0a02d3651.rb
661
669
  - lib/one_gadget/builds/libc-2.23-60131540dadc6796cab33388349e6e4e68692053.rb
662
670
  - lib/one_gadget/builds/libc-2.23-60ea46dff84c256650d44c1a32ca609168bee1a6.rb
671
+ - lib/one_gadget/builds/libc-2.23-635101aec7213fdc442419bf65a92047a862ff32.rb
663
672
  - lib/one_gadget/builds/libc-2.23-6462f7cc95a34bd03f42ad150211db68fcf27d44.rb
664
673
  - lib/one_gadget/builds/libc-2.23-679ad41a6bc9e718a11a36cf9879cac97197e565.rb
665
674
  - lib/one_gadget/builds/libc-2.23-697f7d05a70ecde852a2eed480bea6a6779b4a27.rb
@@ -711,6 +720,7 @@ files:
711
720
  - lib/one_gadget/builds/libc-2.23-ee525f6c9b018c094beedd17b87a4573d7ea7e2e.rb
712
721
  - lib/one_gadget/builds/libc-2.23-f0c2e03955a845c9a7f9c85228b12c9700d66c50.rb
713
722
  - lib/one_gadget/builds/libc-2.23-f202f01f10e845e14e7d8ca44cf5d9e4742fca6a.rb
723
+ - lib/one_gadget/builds/libc-2.23-f2f2f2af4f3e8597cca1fdff1008a834c78de42b.rb
714
724
  - lib/one_gadget/builds/libc-2.23-f303ce47c562225a4f3475170333494965760a6a.rb
715
725
  - lib/one_gadget/builds/libc-2.23-f33f3937b8f458ffd96cf10a22deea1bd85ac61a.rb
716
726
  - lib/one_gadget/builds/libc-2.23-f4490657edfef482025fff60e85acd5928e0d05b.rb
@@ -746,11 +756,13 @@ files:
746
756
  - lib/one_gadget/builds/libc-2.24-2ee9e1740da616757f2e6d5ba58576c0c7302fff.rb
747
757
  - lib/one_gadget/builds/libc-2.24-30acfe88fed30ad3f8cb88425b80ea96899655aa.rb
748
758
  - lib/one_gadget/builds/libc-2.24-33801a6f55c5c3cdf7d83590b433adcbab08a688.rb
759
+ - lib/one_gadget/builds/libc-2.24-349119af9e223829ea24f6b7226bdff0182e73f2.rb
749
760
  - lib/one_gadget/builds/libc-2.24-35764bd71c58942e9131e3547b7c343098212d03.rb
750
761
  - lib/one_gadget/builds/libc-2.24-389260a6758c3f1dbc741c197e747341ed277cd2.rb
751
762
  - lib/one_gadget/builds/libc-2.24-3b24749bb184473f81819312e3d86903915eaf65.rb
752
763
  - lib/one_gadget/builds/libc-2.24-3ea4c67e60e49b8164b692166115bbf927e521db.rb
753
764
  - lib/one_gadget/builds/libc-2.24-3f89db5baa7e88162377fab6a1590f732a355401.rb
765
+ - lib/one_gadget/builds/libc-2.24-3fce81d490804af9759c70bf197380bc05a584c2.rb
754
766
  - lib/one_gadget/builds/libc-2.24-43adbb1e7368c94fba1ba9020d8ef0808bff5bc4.rb
755
767
  - lib/one_gadget/builds/libc-2.24-43faee19af5e1d20163c6492862fca1a4146b668.rb
756
768
  - lib/one_gadget/builds/libc-2.24-45adab2b0ad8604e35eeea0b30d6ec1ad11642af.rb
@@ -787,6 +799,7 @@ files:
787
799
  - lib/one_gadget/builds/libc-2.24-9b7db6636c9f2f03c9523b02db229741e2250550.rb
788
800
  - lib/one_gadget/builds/libc-2.24-9e638553dc7a08748d03c42455ecd6bb9bd8f8cd.rb
789
801
  - lib/one_gadget/builds/libc-2.24-a4c01d397b6584f7040ef266b16a5d4da0b7a087.rb
802
+ - lib/one_gadget/builds/libc-2.24-a51ace667ccae6a8887837efb18259a906704bed.rb
790
803
  - lib/one_gadget/builds/libc-2.24-a822e789c3428254f309f81600b9e5ae551a3461.rb
791
804
  - lib/one_gadget/builds/libc-2.24-aad7dbe330f23ea00ca63daf793b766b51aceb5d.rb
792
805
  - lib/one_gadget/builds/libc-2.24-acd08eb60d44e32e85530f0537d46f8cd422403e.rb
@@ -810,6 +823,7 @@ files:
810
823
  - lib/one_gadget/builds/libc-2.24-da518391ad926bb7535f2095df0be265180eeed5.rb
811
824
  - lib/one_gadget/builds/libc-2.24-dab413a7e3b33dde527af308a09a55ade6b41e84.rb
812
825
  - lib/one_gadget/builds/libc-2.24-dc799b9197929f88cebc6aa72e3be388cacfb1df.rb
826
+ - lib/one_gadget/builds/libc-2.24-deefae132c5a39ba892bc189edd91f73c1ea1f14.rb
813
827
  - lib/one_gadget/builds/libc-2.24-dff06414a29b97b865ef938e06a7751fe8b1b2d0.rb
814
828
  - lib/one_gadget/builds/libc-2.24-e0206d9b8d7ad3abc39a94dbc37bb3b42c9f1345.rb
815
829
  - lib/one_gadget/builds/libc-2.24-e5dc6c0caa39828fa10ed37e642723a581acdb6d.rb
@@ -838,35 +852,49 @@ files:
838
852
  - lib/one_gadget/builds/libc-2.26-fb587bc4429e7d1b0de31a3b9ee8ae78ee797eb0.rb
839
853
  - lib/one_gadget/builds/libc-2.27-06a8004be6e10c4aeabbe0db74423ace392a2d6b.rb
840
854
  - lib/one_gadget/builds/libc-2.27-0e188ec5f09c187a7a92784d4b97aa251b15a93c.rb
855
+ - lib/one_gadget/builds/libc-2.27-14cd15d2eb0bc25c89045873cf807f7533e4788d.rb
841
856
  - lib/one_gadget/builds/libc-2.27-2d1c5e0b85cb06ff47fa6fa088ec22cb6e06074e.rb
842
857
  - lib/one_gadget/builds/libc-2.27-4b06dfe2c46f5e537b3d0a310ab0bda11bcbd681.rb
843
858
  - lib/one_gadget/builds/libc-2.27-53f40c1d2f3739ae017dcdcef1a17314786e3709.rb
844
859
  - lib/one_gadget/builds/libc-2.27-63b3d43ad45e1b0f601848c65b067f9e9b40528b.rb
860
+ - lib/one_gadget/builds/libc-2.27-71f0f3074a929e519e85f6a5c03a7d1fd976bfe4.rb
861
+ - lib/one_gadget/builds/libc-2.27-73cd526a553b3b47c6dd0d6dc62175263cdc646e.rb
845
862
  - lib/one_gadget/builds/libc-2.27-9dd0bb57f81671704475d1e5163405f7b4d4b454.rb
863
+ - lib/one_gadget/builds/libc-2.27-a5e88eb34369fb48113b9eda7a92e07b372f3cb7.rb
846
864
  - lib/one_gadget/builds/libc-2.27-afdabd83c53f0fc60a059c3305c4f3b57198e51b.rb
847
865
  - lib/one_gadget/builds/libc-2.27-b417c0ba7cc5cf06d1d1bed6652cedb9253c60d0.rb
866
+ - lib/one_gadget/builds/libc-2.27-ba63c4a5f5c2b51e6e7e5df94017dc98b20e397a.rb
848
867
  - lib/one_gadget/builds/libc-2.27-cc6dd208d3af4bc505f599a90ef8af52f16116e4.rb
868
+ - lib/one_gadget/builds/libc-2.27-ce450eb01a5e5acc7ce7b8c2633b02cc1093339e.rb
849
869
  - lib/one_gadget/builds/libc-2.27-cf1599aa8b3cb35f79dcaea7a8b48704ecf42a19.rb
850
870
  - lib/one_gadget/builds/libc-2.27-d1237c55f6778f53b369cf22ff81979b2fe340bb.rb
851
871
  - lib/one_gadget/builds/libc-2.27-d3cf764b2f97ac3efe366ddd07ad902fb6928fd7.rb
872
+ - lib/one_gadget/builds/libc-2.27-d831493b564a8632d1da5cc0fe44af45713cfeb6.rb
873
+ - lib/one_gadget/builds/libc-2.27-f4929d2a8af4629477103af6f1cfb3bebce80883.rb
852
874
  - lib/one_gadget/builds/libc-2.28-26b3c1a40c8a0bd026975a262774bf52aec55107.rb
853
875
  - lib/one_gadget/builds/libc-2.28-44f5a3efb0e5733fa9d97e690cb36cd4c682bcdb.rb
854
876
  - lib/one_gadget/builds/libc-2.28-5784a31a1c26f6d2157e585205ebb63dd19ff90f.rb
855
877
  - lib/one_gadget/builds/libc-2.28-5b157f49586a3ca84d55837f97ff466767dd3445.rb
878
+ - lib/one_gadget/builds/libc-2.28-65ed813688b116fdce9e866ad2fef2e734167337.rb
856
879
  - lib/one_gadget/builds/libc-2.28-6ee9454b96efa9e343f9e8105f2fa4529265ea05.rb
857
880
  - lib/one_gadget/builds/libc-2.29-2195ff86b0ddead43a7c08f46b95b0887cdb96fa.rb
881
+ - lib/one_gadget/builds/libc-2.29-5b7203920d3d786ac40af8e0d5104683335f11be.rb
858
882
  - lib/one_gadget/builds/libc-2.29-6d8abbab5b004d65bfdf909fd4982103499cd1c9.rb
859
883
  - lib/one_gadget/builds/libc-2.29-85d5020664b11fd2708859275de41d5ab9d104cf.rb
860
884
  - lib/one_gadget/builds/libc-2.29-9a1100ebab15d22bbc31836b0656d2fa5a6a1252.rb
885
+ - lib/one_gadget/builds/libc-2.29-a8af6c81cb28a37bf3a546970bf64224402f8bd4.rb
886
+ - lib/one_gadget/builds/libc-2.29-c19c88c33b60742ca906e0f9f96fe31b8b79ea9c.rb
861
887
  - lib/one_gadget/builds/libc-2.29-d389232dd725501db38f08e2aca0b44ab3af314f.rb
862
888
  - lib/one_gadget/builds/libc-2.29-d561ec515222887a1e004555981169199d841024.rb
863
889
  - lib/one_gadget/builds/libc-2.30-00854a16b9b4b73893627ccb730d97907837e320.rb
864
890
  - lib/one_gadget/builds/libc-2.30-135c0b4a030ec9b6306ed6b621e1e0dedfd614a3.rb
865
891
  - lib/one_gadget/builds/libc-2.30-2155f455ad56bd871c8225bcca85ee25c1c197c4.rb
892
+ - lib/one_gadget/builds/libc-2.30-33d1f350f13728651d74dd2a56bad1e4e4648f5e.rb
866
893
  - lib/one_gadget/builds/libc-2.30-3f72ae987c135c35f2e721c61991ec46df8816ab.rb
867
894
  - lib/one_gadget/builds/libc-2.30-4ab6143b59defc12c3d50d176c78b4e6e5a2c179.rb
868
895
  - lib/one_gadget/builds/libc-2.30-71373fd43ed6a83e0aab983c3a971e32d459e15f.rb
869
896
  - lib/one_gadget/builds/libc-2.30-75e3e2d9596aae251330ae7ef3f91a847fc62641.rb
897
+ - lib/one_gadget/builds/libc-2.30-7a1e2ae26cef50584af2c60a5ad3a7ae3e9b1446.rb
870
898
  - lib/one_gadget/builds/libc-2.30-884362aa891ab565e4cf904cd60be984a7941acd.rb
871
899
  - lib/one_gadget/builds/libc-2.30-93abe093a13b9b10f83b5e6de4a63a0d29175c89.rb
872
900
  - lib/one_gadget/builds/libc-2.30-bef538440d5b4b0ac6b4575acb3aac4a65316061.rb
@@ -879,23 +907,81 @@ files:
879
907
  - lib/one_gadget/builds/libc-2.30-e3e238714a7998a958651faa0a5e97fafa229ec3.rb
880
908
  - lib/one_gadget/builds/libc-2.30-f07144cc3d0ac50415f3a2e061be6da672c914ba.rb
881
909
  - lib/one_gadget/builds/libc-2.30-f44469d65b4efd2e5951513ed7cbf773657f1283.rb
910
+ - lib/one_gadget/builds/libc-2.31-012f3f1e614cb9c829b8d1590d228cc6a9506a03.rb
882
911
  - lib/one_gadget/builds/libc-2.31-05dd8f45f3f82869e5ca8cb214475816e41f469a.rb
912
+ - lib/one_gadget/builds/libc-2.31-099b9225bcb0d019d9d60884be583eb31bb5f44e.rb
913
+ - lib/one_gadget/builds/libc-2.31-0d1b3211736c4ca528a32ea0d565d41a2ede3b58.rb
883
914
  - lib/one_gadget/builds/libc-2.31-0df979b8b244294bbc29bbe8f7f6dd6bf89c6820.rb
915
+ - lib/one_gadget/builds/libc-2.31-12e412d1938ec3ff79751f0e85f31bc52f7e3722.rb
916
+ - lib/one_gadget/builds/libc-2.31-2886817dc06a87bdeef50544c0d6c12de13a8148.rb
917
+ - lib/one_gadget/builds/libc-2.31-4d4d0853eb075b8b0cfaee0aee7cdf4254a3e877.rb
918
+ - lib/one_gadget/builds/libc-2.31-58a58f2fcdafddacb4a08439ea2ee163ff645d1d.rb
884
919
  - lib/one_gadget/builds/libc-2.31-634252e0c5f8b03957a2e529719d4101699a894a.rb
920
+ - lib/one_gadget/builds/libc-2.31-6b143503744b9d6c22e479941488d6a9e6e3f1c5.rb
885
921
  - lib/one_gadget/builds/libc-2.31-6c6ea8a57519f219a10c9d6a6d199dd813680226.rb
922
+ - lib/one_gadget/builds/libc-2.31-6dbad1709854c527793f6401666e45a791b7c793.rb
886
923
  - lib/one_gadget/builds/libc-2.31-6fe07009bc57e6917030d052370d8bed414dd7c0.rb
887
924
  - lib/one_gadget/builds/libc-2.31-78702aff0796336ccdd432310ba6f84c728c9b3c.rb
925
+ - lib/one_gadget/builds/libc-2.31-85d7bb2dad0f8172d1c02c0311a00c4695933beb.rb
888
926
  - lib/one_gadget/builds/libc-2.31-8614995a8f0152ad4b1b45e28070588546ca7ac8.rb
927
+ - lib/one_gadget/builds/libc-2.31-8629fa2eea681f639a0c18305d4548850dde3450.rb
928
+ - lib/one_gadget/builds/libc-2.31-94761ae31db09ce9140ca55cb6986a5ea9110abc.rb
929
+ - lib/one_gadget/builds/libc-2.31-9fdb74e7b217d06c93172a8243f8547f947ee6d1.rb
889
930
  - lib/one_gadget/builds/libc-2.31-a9053cb60c51ead85c68c941ca4d02f9381844f9.rb
890
931
  - lib/one_gadget/builds/libc-2.31-b61d34c10e608722a90d339bd9a7ff28b18cd501.rb
932
+ - lib/one_gadget/builds/libc-2.31-c9d56de82ddd00d822d6100034f3075ef1709cd2.rb
891
933
  - lib/one_gadget/builds/libc-2.31-cdaf4c7a78acdea7ede78ea0240a3d8d5833110f.rb
934
+ - lib/one_gadget/builds/libc-2.31-e67e80e70619717709e3180e552a11a285036a54.rb
892
935
  - lib/one_gadget/builds/libc-2.31-eb3c5cf73a0a6b7f2b3895a56dbc443806700971.rb
893
936
  - lib/one_gadget/builds/libc-2.31-f3aa1ef59e51e64ff8438f46d225e4ae256c1b03.rb
894
937
  - lib/one_gadget/builds/libc-2.31-f3ff3fda80b817c464a56eed59ff09dc864eaeb0.rb
938
+ - lib/one_gadget/builds/libc-2.31-fb7626dd8b8a50f7685920487e992528834f6775.rb
895
939
  - lib/one_gadget/builds/libc-2.32-0e5c8d8738927eb715941480b3726fa764cc50ed.rb
940
+ - lib/one_gadget/builds/libc-2.32-1e3fb06b8c86b5e282e3e11bd207d399fb4952e2.rb
896
941
  - lib/one_gadget/builds/libc-2.32-7ec3e74da842ca3c6a9ba20b21303ce1bc7a45af.rb
942
+ - lib/one_gadget/builds/libc-2.32-7fba7abef941659c229c2636aa0905c28652ee3f.rb
943
+ - lib/one_gadget/builds/libc-2.32-82f6b69e698bb579baefb35a3fb0346632fa2c4d.rb
944
+ - lib/one_gadget/builds/libc-2.32-87f011a7e4cc3fc60a54d0d3dd690e7438decc8d.rb
945
+ - lib/one_gadget/builds/libc-2.32-92199dd358616182fb49c992330fb05e42eaa423.rb
946
+ - lib/one_gadget/builds/libc-2.32-9d60d4bd625a7fe2439db781a5fc91bb69684903.rb
897
947
  - lib/one_gadget/builds/libc-2.32-a75b0c335a4987f12d17d3b4adb8dc430432b082.rb
948
+ - lib/one_gadget/builds/libc-2.32-ac287babd169c70013b752da2713dfb96d9a503f.rb
949
+ - lib/one_gadget/builds/libc-2.32-aebd80372a00285a5c486ef72917f935eb8f91be.rb
950
+ - lib/one_gadget/builds/libc-2.32-bd0e9dc4e27475b5ab7dc59141daaa2626b8a760.rb
951
+ - lib/one_gadget/builds/libc-2.32-bddeb6374fc99723cef3b3baafe48ac78fce13b4.rb
952
+ - lib/one_gadget/builds/libc-2.32-cb91dd613d38b806a16bed1b364c084ad63d1a1f.rb
953
+ - lib/one_gadget/builds/libc-2.32-d3f1cf7f55b985fd6d989880ec3599724fe40a26.rb
898
954
  - lib/one_gadget/builds/libc-2.32-e13b24f94b260dd6394bdb2433d2a78e37078d5c.rb
955
+ - lib/one_gadget/builds/libc-2.32-e1596c76d0d93d8a36378ba976f034f140618d59.rb
956
+ - lib/one_gadget/builds/libc-2.32-f45b67ab28af1581cba8e4713e0fd3b2bc004b2e.rb
957
+ - lib/one_gadget/builds/libc-2.33-18edf6b683a2f9768cc0ee9cc64ae6fbb545deb2.rb
958
+ - lib/one_gadget/builds/libc-2.33-1c943bf313b5b4546e47b830e70de6bbd6a0ba57.rb
959
+ - lib/one_gadget/builds/libc-2.33-2b48299781548c9bc452eac6df39902547c884ed.rb
960
+ - lib/one_gadget/builds/libc-2.33-37169e68b33cad12e272bb4896d71fd0d4fd98bb.rb
961
+ - lib/one_gadget/builds/libc-2.33-54a6e404e7dc1de7c1434a00b7b1ad325b81f22a.rb
962
+ - lib/one_gadget/builds/libc-2.33-7983d313db4a441a3762c8861ca405aa0331c0c8.rb
963
+ - lib/one_gadget/builds/libc-2.33-8fdc2b2c65f3d782e52c01b546399eee8aa466dc.rb
964
+ - lib/one_gadget/builds/libc-2.33-9143da129b44b931a1c180e2b103e993dd2474fd.rb
965
+ - lib/one_gadget/builds/libc-2.33-97c8d90bd86bc698d156630e8803de433a640090.rb
966
+ - lib/one_gadget/builds/libc-2.33-9bf4c513db255ab7248cef9f0f96b4403df29852.rb
967
+ - lib/one_gadget/builds/libc-2.33-9e592d3efa165bc2bab8b40426370bd50cb0b027.rb
968
+ - lib/one_gadget/builds/libc-2.33-abf3b2a9815c0cd6e4280cd99474d34102804eb2.rb
969
+ - lib/one_gadget/builds/libc-2.33-b046eecd056a0c30995703f6cfca7a8e3a9ef5fa.rb
970
+ - lib/one_gadget/builds/libc-2.33-b2262bfa6f1bffd1e9ddc845276dfaebb7c8f0b9.rb
971
+ - lib/one_gadget/builds/libc-2.33-f462ab2b79c7f29fb866da6e087e45261570a09c.rb
972
+ - lib/one_gadget/builds/libc-2.33-f4af69206091c7f14a941f2dd77a79a7682a1184.rb
973
+ - lib/one_gadget/builds/libc-2.34-140609514178a4bb96a3cd44ffdfede398a77610.rb
974
+ - lib/one_gadget/builds/libc-2.34-25594d4b6cbecda86ec968fa940c6c09937db70f.rb
975
+ - lib/one_gadget/builds/libc-2.34-387920279e1c7892042ff27d76315d55e4651db9.rb
976
+ - lib/one_gadget/builds/libc-2.34-7e46fbc4d85f5df8b6f18630787ad281786a3512.rb
977
+ - lib/one_gadget/builds/libc-2.34-8d631c824a37b236d1dc9686b224a573fd6048b4.rb
978
+ - lib/one_gadget/builds/libc-2.34-b8037b6260865346802321dd2256b8ad1d857e63.rb
979
+ - lib/one_gadget/builds/libc-2.34-ba4777827fe1fb729ca35acd99c8013936172a0d.rb
980
+ - lib/one_gadget/builds/libc-2.34-f0fc29165cbe6088c0e1adf03b0048fbecbc003a.rb
981
+ - lib/one_gadget/builds/libc-2.35-89c3cb85f9e55046776471fed05ec441581d1969.rb
982
+ - lib/one_gadget/builds/libc-2.35-ab265082cac9486923c709d48ee5dde080e243ff.rb
983
+ - lib/one_gadget/builds/libc-2.35-c376d41cff4473142a97ac1ff1eab433859dc3d4.rb
984
+ - lib/one_gadget/builds/libc-2.35-dfca8b65dd2d2ca67f70dc7a556a6cfa8ba96ed8.rb
899
985
  - lib/one_gadget/cli.rb
900
986
  - lib/one_gadget/emulators/aarch64.rb
901
987
  - lib/one_gadget/emulators/amd64.rb
@@ -941,7 +1027,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
941
1027
  - !ruby/object:Gem::Version
942
1028
  version: '0'
943
1029
  requirements: []
944
- rubygems_version: 3.1.2
1030
+ rubygems_version: 3.1.6
945
1031
  signing_key:
946
1032
  specification_version: 4
947
1033
  summary: one_gadget