Module: Ronin::Payloads::Mixins::Binary

Defined in:
lib/ronin/payloads/mixins/binary.rb

Overview

Adds support for packing binary data.

Instance Method Summary collapse

Instance Method Details

#pack(type, value) ⇒ String

Packs a binary value for the given type.

Parameters:

  • type (Symbol)

    The type name to pack for.

  • value (Integer, Float, String)

    The value to pack.

Returns:

  • (String)

    The packed value.



99
100
101
# File 'lib/ronin/payloads/mixins/binary.rb', line 99

def pack(type,value)
  platform[type].pack(value)
end

#perform_validateObject

Validates that the payload defines an arch method and that all required params are set.

Raises:



47
48
49
50
51
52
53
54
55
56
57
# File 'lib/ronin/payloads/mixins/binary.rb', line 47

def perform_validate
  unless respond_to?(:arch)
    raise(ValidationError,"payload #{self.class} did not include Ronin::Payloads::Metadata::Arch")
  end

  unless arch
    raise(ValidationError,"payload #{self.class} did not include define an architecture")
  end

  super()
end

#platformRonin::Support::Binary::CTypes, ...

The target platform.

Returns:

  • (Ronin::Support::Binary::CTypes, Ronin::Support::Binary::CTypes::LittleEndian, Ronin::Support::Binary::CTypes::BigEndian, Ronin::Support::Binary::CTypes::Network, Ronin::Support::Binary::CTypes::Arch::ARM, Ronin::Support::Binary::CTypes::Arch::ARM::BigEndian, Ronin::Support::Binary::CTypes::Arch::ARM64, Ronin::Support::Binary::CTypes::Arch::ARM64::BigEndian, Ronin::Support::Binary::CTypes::Arch::MIPS, Ronin::Support::Binary::CTypes::Arch::MIPS::LittleEndian, Ronin::Support::Binary::CTypes::Arch::MIPS64, Ronin::Support::Binary::CTypes::Arch::MIPS64::LittleEndian, Ronin::Support::Binary::CTypes::Arch::PPC, Ronin::Support::Binary::CTypes::Arch::PPC64, Ronin::Support::Binary::CTypes::Arch::X86, Ronin::Support::Binary::CTypes::Arch::X86_64, Ronin::Support::Binary::CTypes::OS)


80
81
82
83
84
85
# File 'lib/ronin/payloads/mixins/binary.rb', line 80

def platform
  @platform ||= Support::Binary::CTypes.platform(
                  arch: arch,
                  os:   (os if kind_of?(Metadata::OS))
                )
end