Skip to main content

NoOS

Struct NoOS 

Source
pub struct NoOS<Driver>(pub PhantomData<Driver>)
where
    Driver: VmiDriver;
Expand description

Marker type for a missing OS implementation.

Tuple Fields§

§0: PhantomData<Driver>

Trait Implementations§

Source§

impl<Driver> VmiOs for NoOS<Driver>
where Driver: VmiDriver,

Source§

type Architecture = <Driver as VmiDriver>::Architecture

The architecture.
Source§

type Driver = Driver

The driver.
Source§

type Process<'a> = NoOS<Driver>

The process type.
Source§

type Thread<'a> = NoOS<Driver>

The thread type.
Source§

type Image<'a> = NoOS<Driver>

The image type.
Source§

type Module<'a> = NoOS<Driver>

The kernel module type.
Source§

type UserModule<'a> = NoOS<Driver>

The user-mode module type.
Source§

type Region<'a> = NoOS<Driver>

The memory region type.
Source§

type Mapped<'a> = NoOS<Driver>

The memory mapped region type.
Source§

fn kernel_image_base(_vmi: VmiState<'_, Self>) -> Result<Va, VmiError>

Retrieves the base address of the kernel image. Read more
Source§

fn kernel_information_string( _vmi: VmiState<'_, Self>, ) -> Result<String, VmiError>

Retrieves an implementation-specific string containing kernel information. Read more
Source§

fn kpti_enabled(_vmi: VmiState<'_, Self>) -> Result<bool, VmiError>

Checks if Kernel Page Table Isolation (KPTI) is enabled. Read more
Source§

fn modules<'a>( _vmi: VmiState<'a, Self>, ) -> Result<impl Iterator<Item = Result<Self::Module<'a>, VmiError>> + use<'a, Driver>, VmiError>

Returns an iterator over the loaded kernel modules. Read more
Source§

fn processes<'a>( _vmi: VmiState<'a, Self>, ) -> Result<impl Iterator<Item = Result<Self::Process<'a>, VmiError>> + use<'a, Driver>, VmiError>

Returns an iterator over the processes. Read more
Source§

fn process<'a>( _vmi: VmiState<'_, Self>, _process: ProcessObject, ) -> Result<Self::Process<'_>, VmiError>

Returns the process corresponding to the given process object.
Source§

fn current_process<'a>( _vmi: VmiState<'_, Self>, ) -> Result<Self::Process<'_>, VmiError>

Returns the currently executing process.
Source§

fn system_process<'a>( _vmi: VmiState<'_, Self>, ) -> Result<Self::Process<'_>, VmiError>

Returns the system process object. Read more
Source§

fn thread<'a>( _vmi: VmiState<'_, Self>, _thread: ThreadObject, ) -> Result<Self::Thread<'_>, VmiError>

Returns the thread corresponding to the given thread object.
Source§

fn current_thread( _vmi: VmiState<'_, Self>, ) -> Result<Self::Thread<'_>, VmiError>

Returns the currently executing thread.
Source§

fn image<'a>( _vmi: VmiState<'_, Self>, _image_base: Va, ) -> Result<Self::Image<'_>, VmiError>

Returns the image corresponding to the given base address.
Source§

fn module<'a>( _vmi: VmiState<'_, Self>, _module: Va, ) -> Result<Self::Module<'_>, VmiError>

Returns the kernel module corresponding to the given base address.
Source§

fn user_module<'a>( _vmi: VmiState<'_, Self>, _module: Va, _root: Pa, ) -> Result<Self::UserModule<'_>, VmiError>

Returns the user-mode module corresponding to the given base address.
Source§

fn region<'a>( _vmi: VmiState<'_, Self>, _region: Va, ) -> Result<Self::Region<'_>, VmiError>

Returns the memory region corresponding to the given address. Read more
Source§

fn syscall_argument( _vmi: VmiState<'_, Self>, _index: u64, ) -> Result<u64, VmiError>

Retrieves a specific syscall argument according to the system call ABI. Read more
Source§

fn function_argument( _vmi: VmiState<'_, Self>, _index: u64, ) -> Result<u64, VmiError>

Retrieves a specific function argument according to the calling convention of the operating system. Read more
Source§

fn function_return_value(_vmi: VmiState<'_, Self>) -> Result<u64, VmiError>

Retrieves the return value of a function. Read more
Source§

fn last_error(_vmi: VmiState<'_, Self>) -> Result<Option<u32>, VmiError>

Retrieves the last error value. Read more
Source§

impl<Driver> VmiOsImage<'_, Driver> for NoOS<Driver>
where Driver: VmiDriver,

Source§

type Os = NoOS<Driver>

The VMI OS type.
Source§

fn base_address(&self) -> Va

Returns the base address of the image.
Source§

fn architecture(&self) -> Result<Option<VmiOsImageArchitecture>, VmiError>

Returns the target architecture for which the image was compiled.
Source§

fn exports(&self) -> Result<Vec<VmiOsImageSymbol>, VmiError>

Returns the exported symbols.
Source§

impl<Driver> VmiOsMapped<'_, Driver> for NoOS<Driver>
where Driver: VmiDriver,

Source§

type Os = NoOS<Driver>

The VMI OS type.
Source§

fn path(&self) -> Result<Option<String>, VmiError>

Returns the path to the file backing the region. Read more
Source§

impl<Driver> VmiOsModule<'_, Driver> for NoOS<Driver>
where Driver: VmiDriver,

Source§

type Os = NoOS<Driver>

The VMI OS type.
Source§

fn base_address(&self) -> Result<Va, VmiError>

Returns the base address of the module. Read more
Source§

fn size(&self) -> Result<u64, VmiError>

Returns the size of the module. Read more
Source§

fn name(&self) -> Result<String, VmiError>

Returns the name of the module. Read more
Source§

impl<'a, Driver> VmiOsProcess<'a, Driver> for NoOS<Driver>
where Driver: VmiDriver,

Source§

type Os = NoOS<Driver>

The VMI OS type.
Source§

fn id(&self) -> Result<ProcessId, VmiError>

Returns the process ID.
Source§

fn object(&self) -> Result<ProcessObject, VmiError>

Returns the process object.
Source§

fn name(&self) -> Result<String, VmiError>

Returns the name of the process. Read more
Source§

fn parent_id(&self) -> Result<ProcessId, VmiError>

Returns the parent process ID.
Source§

fn architecture(&self) -> Result<VmiOsImageArchitecture, VmiError>

Returns the architecture of the process.
Source§

fn translation_root(&self) -> Result<Pa, VmiError>

Returns the process’s page table translation root.
Source§

fn user_translation_root(&self) -> Result<Pa, VmiError>

Returns the user-mode page table translation root. Read more
Source§

fn image_base(&self) -> Result<Va, VmiError>

Returns the base address of the process image.
Source§

fn regions( &self, ) -> Result<impl Iterator<Item = Result<<Self::Os as VmiOs>::Region<'a>, VmiError>> + use<'a, Driver>, VmiError>

Returns an iterator over the process’s memory regions.
Source§

fn find_region( &self, _address: Va, ) -> Result<Option<<Self::Os as VmiOs>::Region<'a>>, VmiError>

Finds the memory region containing the given address.
Source§

fn threads( &self, ) -> Result<impl Iterator<Item = Result<<Self::Os as VmiOs>::Thread<'a>, VmiError>> + use<'a, Driver>, VmiError>

Returns an iterator over the threads in the process. Read more
Source§

fn is_valid_address(&self, _address: Va) -> Result<Option<bool>, VmiError>

Checks whether the given virtual address is valid in the process. Read more
Source§

impl<'a, Driver> VmiOsRegion<'a, Driver> for NoOS<Driver>
where Driver: VmiDriver,

Source§

type Os = NoOS<Driver>

The VMI OS type.
Source§

fn start(&self) -> Result<Va, VmiError>

Returns the starting virtual address of the memory region.
Source§

fn end(&self) -> Result<Va, VmiError>

Returns the ending virtual address of the memory region.
Source§

fn protection(&self) -> Result<MemoryAccess, VmiError>

Returns the memory protection of the memory region.
Source§

fn kind(&self) -> Result<VmiOsRegionKind<'a, Self::Os>, VmiError>

Returns the memory region’s kind.
Source§

impl<Driver> VmiOsThread<'_, Driver> for NoOS<Driver>
where Driver: VmiDriver,

Source§

type Os = NoOS<Driver>

The VMI OS type.
Source§

fn id(&self) -> Result<ThreadId, VmiError>

Returns the thread ID.
Source§

fn object(&self) -> Result<ThreadObject, VmiError>

Returns the thread object.
Source§

impl<Driver> VmiOsUserModule<'_, Driver> for NoOS<Driver>
where Driver: VmiDriver,

Source§

type Os = NoOS<Driver>

The VMI OS type.
Source§

fn base_address(&self) -> Result<Va, VmiError>

Returns the base address of the module. Read more
Source§

fn size(&self) -> Result<u64, VmiError>

Returns the size of the module. Read more
Source§

fn name(&self) -> Result<String, VmiError>

Returns the name of the module. Read more
Source§

impl<Driver> VmiVa for NoOS<Driver>
where Driver: VmiDriver,

Source§

fn va(&self) -> Va

Returns the virtual address.

Auto Trait Implementations§

§

impl<Driver> Freeze for NoOS<Driver>

§

impl<Driver> RefUnwindSafe for NoOS<Driver>
where Driver: RefUnwindSafe,

§

impl<Driver> Send for NoOS<Driver>
where Driver: Send,

§

impl<Driver> Sync for NoOS<Driver>
where Driver: Sync,

§

impl<Driver> Unpin for NoOS<Driver>
where Driver: Unpin,

§

impl<Driver> UnsafeUnpin for NoOS<Driver>

§

impl<Driver> UnwindSafe for NoOS<Driver>
where Driver: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more