module Ronin::Support::Binary::CTypes::Mixin

Adds a type system that can be used by {Memory} objects.

@api semipublic

Attributes

arch[R]

The desired architecture of the binary format.

@return [:x86, :x86_64, :ppc, :ppc64, :arm, :arm_be, :arm64,

:arm64_be, :mips, :mips_le, :mips64, :mips64_le, nil]

@api public

endian[R]

The endianness of the binary format.

@return [:little, :big, :net, nil]

@api public

os[R]

The desired Operating System (OS) of the binary format.

@return [:linux, :macos, :windows,

:android, :apple_ios, :bsd,
:freebsd, :openbsd, :netbsd, nil]

@api public

type_resolver[R]

The type resolver.

@return [Resolver]

@api semipublic

type_system[R]

The type system module or object to lookup type names in.

@return [Native, LittleEndian, BigEndian, Network,

Arch::ARM, Arch::ARM::BigEndian,
Arch::ARM64, Arch::ARM64::BigEndian,
Arch::MIPS, Arch::MIPS::LittleEndian,
Arch::MIPS64, Arch::MIPS64::LittleEndian,
Arch::PPC64, Arch::PPC, Arch::X86_64, Arch::X86,
OS::FreeBSD,
OS::NetBSD,
OS::OpenBSD,
OS::Linux,
OS::MacOS,
OS::Windows,
OS::Android,
OS::AppleIOS]

@api semipublic

Protected Instance Methods

initialize_type_system(type_system: nil, endian: nil, arch: nil, os: nil) click to toggle source

Initializes the type system.

@param [Native, LittleEndian, BigEndian, Network,

      Arch::ARM, Arch::ARM::BigEndian,
      Arch::ARM64, Arch::ARM64::BigEndian,
      Arch::MIPS, Arch::MIPS::LittleEndian,
      Arch::MIPS64, Arch::MIPS64::LittleEndian,
      Arch::PPC64, Arch::PPC, Arch::X86_64, Arch::X86,
      OS::FreeBSD,
      OS::NetBSD,
      OS::OpenBSD,
      OS::Linux,
      OS::MacOS,
      OS::Windows,
      OS::Android,
      OS::AppleIOS, nil] type_system
Optional type system to use instead.

@param [:little, :big, :net, nil] endian

The desired endianness to use.

@param [:x86, :x86_64,

      :ppc, :ppc64,
      :mips, :mips_le, :mips_be,
      :mips64, :mips64_le, :mips64_be,
      :arm, :arm_le, :arm_be,
      :arm64, :arm64_le, :arm64_be] arch
The desired architecture to use.

@param [:linux, :macos, :windows,

      :android, :apple_ios, :bsd,
      :freebsd, :openbsd, :netbsd] os
The Operating System (OS) to use.
# File lib/ronin/support/binary/ctypes/mixin.rb, line 119
def initialize_type_system(type_system: nil,
                           endian:      nil,
                           arch:        nil,
                           os:          nil)
  @endian = endian
  @arch   = arch
  @os     = os

  @type_system = type_system || CTypes.platform(
                                  endian: endian,
                                  arch:   arch,
                                  os:     os
                                )

  @type_resolver = CTypes::TypeResolver.new(@type_system)
end