Skip to main content

Windows

Struct Windows 

Source
pub struct Windows<B> { /* private fields */ }

Implementations§

Source§

impl<B: Backend> Windows<B>

Source

pub fn create(backend: B, symbols: SymbolsIndexer) -> VmResult<Self>

Source

pub fn nt_os_version(&self) -> VmResult<(u32, u32)>

Trait Implementations§

Source§

impl<B: Backend> Buildable<B> for Windows<B>

Source§

fn quick_check(backend: &B) -> Option<OsBuilder>

Source§

fn build(backend: B, builder: OsBuilder) -> VmResult<Self>

Source§

impl<B: Backend> HasVcpus for Windows<B>

Source§

impl<B: Backend> Os for Windows<B>

Source§

fn read_virtual_memory( &self, mmu_addr: PhysicalAddress, addr: VirtualAddress, buf: &mut [u8], ) -> VmResult<()>

Source§

fn try_read_virtual_memory( &self, mmu_addr: PhysicalAddress, addr: VirtualAddress, buf: &mut [u8], ) -> VmResult<()>

Source§

fn read_process_memory( &self, proc: Process, mmu_addr: PhysicalAddress, addr: VirtualAddress, buf: &mut [u8], ) -> VmResult<()>

Source§

fn try_read_process_memory( &self, proc: Process, mmu_addr: PhysicalAddress, addr: VirtualAddress, buf: &mut [u8], ) -> VmResult<()>

Source§

fn kernel_pgd(&self) -> PhysicalAddress

Source§

fn init_process(&self) -> VmResult<Process>

Source§

fn for_each_kernel_module( &self, f: &mut dyn FnMut(Module) -> VmResult<ControlFlow<()>>, ) -> VmResult<()>

Source§

fn current_thread(&self, vcpu: VcpuId) -> VmResult<Thread>

Source§

fn process_is_kernel(&self, _proc: Process) -> VmResult<bool>

Source§

fn process_id(&self, proc: Process) -> VmResult<u64>

Source§

fn process_name(&self, proc: Process) -> VmResult<String>

Source§

fn process_pgd(&self, proc: Process) -> VmResult<PhysicalAddress>

Source§

fn process_path(&self, proc: Process) -> VmResult<Option<String>>

Source§

fn process_parent(&self, proc: Process) -> VmResult<Process>

Source§

fn process_parent_id(&self, proc: Process) -> VmResult<u64>

Source§

fn process_for_each_child( &self, proc: Process, f: &mut dyn FnMut(Process) -> VmResult<ControlFlow<()>>, ) -> VmResult<()>

Source§

fn process_for_each_thread( &self, proc: Process, f: &mut dyn FnMut(Thread) -> VmResult<ControlFlow<()>>, ) -> VmResult<()>

Source§

fn for_each_process( &self, f: &mut dyn FnMut(Process) -> VmResult<ControlFlow<()>>, ) -> VmResult<()>

Source§

fn process_for_each_vma( &self, proc: Process, f: &mut dyn FnMut(Vma) -> VmResult<ControlFlow<()>>, ) -> VmResult<()>

Source§

fn process_find_vma_by_address( &self, proc: Process, addr: VirtualAddress, ) -> VmResult<Option<Vma>>

Source§

fn process_for_each_module( &self, proc: Process, f: &mut dyn FnMut(Module) -> VmResult<ControlFlow<()>>, ) -> VmResult<()>

Source§

fn process_callstack_with_regs( &self, proc: Process, instruction_pointer: VirtualAddress, stack_pointer: VirtualAddress, base_pointer: Option<VirtualAddress>, f: &mut dyn FnMut(&StackFrame) -> VmResult<ControlFlow<()>>, ) -> VmResult<()>

Source§

fn thread_process(&self, thread: Thread) -> VmResult<Process>

Source§

fn thread_id(&self, thread: Thread) -> VmResult<u64>

Source§

fn thread_name(&self, thread: Thread) -> VmResult<Option<String>>

Source§

fn vma_path(&self, _vma: Vma) -> VmResult<Option<String>>

Source§

fn vma_start(&self, vma: Vma) -> VmResult<VirtualAddress>

Source§

fn vma_end(&self, vma: Vma) -> VmResult<VirtualAddress>

Source§

fn vma_flags(&self, vma: Vma) -> VmResult<VmaFlags>

Source§

fn module_span( &self, module: Module, proc: Process, ) -> VmResult<(VirtualAddress, VirtualAddress)>

Source§

fn module_name(&self, module: Module, proc: Process) -> VmResult<String>

Source§

fn module_path(&self, module: Module, proc: Process) -> VmResult<String>

Source§

fn module_symbols( &self, proc: Process, module: Module, ) -> VmResult<Option<&ModuleSymbols>>

Source§

fn read_kernel_memory( &self, addr: VirtualAddress, buf: &mut [u8], ) -> Result<(), VmError>

Source§

fn current_process(&self, vcpu: VcpuId) -> Result<Process, VmError>

Source§

fn find_process_by_name(&self, name: &str) -> Result<Option<Process>, VmError>

Source§

fn find_process_by_id(&self, pid: u64) -> Result<Option<Process>, VmError>

Source§

fn process_collect_children( &self, proc: Process, ) -> Result<Vec<Process>, VmError>

Source§

fn process_collect_threads(&self, proc: Process) -> Result<Vec<Thread>, VmError>

Source§

fn process_collect_modules(&self, proc: Process) -> Result<Vec<Module>, VmError>

Source§

fn collect_processes(&self) -> Result<Vec<Process>, VmError>

Source§

fn process_collect_vmas(&self, proc: Process) -> Result<Vec<Vma>, VmError>

Source§

fn process_callstack( &self, proc: Process, f: &mut dyn FnMut(&StackFrame) -> Result<ControlFlow<()>, VmError>, ) -> Result<(), VmError>

Source§

fn vma_contains(&self, vma: Vma, addr: VirtualAddress) -> Result<bool, VmError>

Source§

fn module_contains( &self, module: Module, proc: Process, addr: VirtualAddress, ) -> Result<bool, VmError>

Source§

fn find_module_by_address( &self, proc: Process, addr: VirtualAddress, ) -> Result<Option<Module>, VmError>

Source§

fn module_resolve_symbol_exact( &self, addr: VirtualAddress, proc: Process, module: Module, ) -> Result<Option<&str>, VmError>

Source§

fn module_resolve_symbol( &self, addr: VirtualAddress, proc: Process, module: Module, ) -> Result<Option<(&str, u64)>, VmError>

Source§

fn resolve_symbol_exact( &self, addr: VirtualAddress, proc: Process, ) -> Result<Option<&str>, VmError>

Source§

fn resolve_symbol( &self, addr: VirtualAddress, proc: Process, ) -> Result<Option<(&str, u64)>, VmError>

Source§

fn format_symbol( &self, proc: Process, addr: VirtualAddress, demangle: bool, ) -> Result<String, VmError>

Source§

fn format_symbol_with_module( &self, proc: Process, module: Module, addr: VirtualAddress, fun_start: Option<VirtualAddress>, demangle: bool, ) -> Result<String, VmError>

Source§

fn format_stackframe_symbol( &self, proc: Process, frame: &StackFrame, demangle: bool, ) -> Result<String, VmError>

Auto Trait Implementations§

§

impl<B> !RefUnwindSafe for Windows<B>

§

impl<B> !UnwindSafe for Windows<B>

§

impl<B> Freeze for Windows<B>
where B: Freeze,

§

impl<B> Send for Windows<B>
where B: Send,

§

impl<B> Sync for Windows<B>
where B: Sync,

§

impl<B> Unpin for Windows<B>
where B: Unpin,

§

impl<B> UnsafeUnpin for Windows<B>
where B: UnsafeUnpin,

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> 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.