45 lines
982 B
Ruby
45 lines
982 B
Ruby
#!/usr/bin/env ruby
|
|
|
|
$:.unshift(File.join(File.dirname(__FILE__), '..', '..', '..', 'lib'))
|
|
$:.unshift(File.dirname(__FILE__))
|
|
|
|
require 'test/unit'
|
|
require 'rex/ui'
|
|
require 'msf/core'
|
|
require 'fnstenv_mov'
|
|
|
|
class Msf::Encoders::X86::FnstenvMov::UnitTest < Test::Unit::TestCase
|
|
|
|
Klass = Msf::Encoders::X86::FnstenvMov
|
|
|
|
def test_encoder
|
|
|
|
k = Klass.new
|
|
|
|
{
|
|
"\xcc\xcc\xcc\xcc" =>
|
|
[
|
|
"\x6a\x01\x59\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x3e" +
|
|
"\x33\x75\x05\x83\xeb\xfc\xe2\xf4\xf2\xff\xb9\xc9",
|
|
4
|
|
],
|
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" =>
|
|
[
|
|
"\x6a\x07\x59\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x39" +
|
|
"\xaf\x73\x32\x83\xeb\xfc\xe2\xf4\x78\xed\x30\x76\x7c\xe9" +
|
|
"\x34\x7a\x70\xe5\x38\x7e\x74\xe1\x3c\x62\x68\xfd\x20\x66" +
|
|
"\x6c\xf9\x24\x6a\x60\xf5\x73\x32",
|
|
4
|
|
]
|
|
}.each_pair { |raw, real|
|
|
offset = real[1] || 0
|
|
|
|
encoded = k.encode(raw, '')
|
|
|
|
assert_equal(real[0][offset, -1], encoded[offset, -1])
|
|
}
|
|
|
|
end
|
|
|
|
end
|