nop test
git-svn-id: file:///home/svn/incoming/trunk@3273 4d416f70-5f16-0410-b530-b9f4589650daunstable
parent
504168eda9
commit
da914742fc
|
@ -0,0 +1,39 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
#
|
||||||
|
# This file tests all x86 nops to ensure that they execute correctly.
|
||||||
|
#
|
||||||
|
|
||||||
|
$:.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
|
||||||
|
$:.unshift(File.join(File.dirname(__FILE__), '..', '..', 'dev', 'machinetest'))
|
||||||
|
|
||||||
|
require 'rex'
|
||||||
|
require 'msf/core'
|
||||||
|
require 'msf/base'
|
||||||
|
require 'machinetest'
|
||||||
|
|
||||||
|
$framework = Msf::Simple::Framework.create
|
||||||
|
|
||||||
|
$framework.nops.each_module { |name, mod|
|
||||||
|
e = mod.new
|
||||||
|
h = {}
|
||||||
|
failed = 0
|
||||||
|
passed = 0
|
||||||
|
|
||||||
|
next if (e.arch?(ARCH_X86) == false)
|
||||||
|
|
||||||
|
1000.times {
|
||||||
|
|
||||||
|
if (off = MachineTest.test(buf = e.generate_sled(64), true))
|
||||||
|
failed += 1
|
||||||
|
$stderr.puts("#{name.ljust(25)}: failure at byte #{off}: #{Rex::Text.to_hex(buf)}")
|
||||||
|
else
|
||||||
|
passed += 1
|
||||||
|
end
|
||||||
|
|
||||||
|
h[buf] = true
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$stderr.puts("#{name.ljust(25)}: Passed: #{passed}, Failed: #{failed}, Unique: #{h.keys.length}")
|
||||||
|
|
||||||
|
}
|
|
@ -25,7 +25,7 @@ class Opty2 < Msf::Nop
|
||||||
'Arch' => ARCH_X86)
|
'Arch' => ARCH_X86)
|
||||||
end
|
end
|
||||||
|
|
||||||
def generate_sled(length, opts)
|
def generate_sled(length, opts = {})
|
||||||
opty = Rex::Nop::Opty2.new(
|
opty = Rex::Nop::Opty2.new(
|
||||||
opts['BadChars'] || '',
|
opts['BadChars'] || '',
|
||||||
opts['SaveRegisters'])
|
opts['SaveRegisters'])
|
||||||
|
|
|
@ -6,9 +6,6 @@ module X86
|
||||||
|
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
# SingleByte
|
|
||||||
# ----------
|
|
||||||
#
|
|
||||||
# This class implements single-byte NOP generation for X86. It takes from
|
# This class implements single-byte NOP generation for X86. It takes from
|
||||||
# ADMmutate and from spoonfu.
|
# ADMmutate and from spoonfu.
|
||||||
#
|
#
|
||||||
|
@ -94,7 +91,7 @@ SINGLE_BYTE_SLED =
|
||||||
end
|
end
|
||||||
|
|
||||||
# Generate a single-byte NOP sled for X86
|
# Generate a single-byte NOP sled for X86
|
||||||
def generate_sled(length, opts)
|
def generate_sled(length, opts = {})
|
||||||
sled_hash = SINGLE_BYTE_SLED
|
sled_hash = SINGLE_BYTE_SLED
|
||||||
sled_max_idx = sled_hash.length
|
sled_max_idx = sled_hash.length
|
||||||
sled_cur_idx = 0
|
sled_cur_idx = 0
|
||||||
|
|
Loading…
Reference in New Issue