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