Skip to main content

Context

Struct Context 

Source
#[repr(C)]
pub struct Context {
Show 19 fields pub rflags: u64, pub rax: u64, pub rbx: u64, pub rcx: u64, pub rdx: u64, pub rsi: u64, pub rdi: u64, pub rbp: u64, pub rsp: u64, pub r8: u64, pub r9: u64, pub r10: u64, pub r11: u64, pub r12: u64, pub r13: u64, pub r14: u64, pub r15: u64, pub rip: u64, pub xmm: [Xmm; 16],
}
Expand description

The x86-64 registers at an injection site: general-purpose registers, flags, instruction pointer and SSE registers.

inspect callbacks read it; modify callbacks can also change it before the original code resumes, and redirect with rip.

Fields§

§rflags: u64

The rflags register.

§rax: u64

The rax register.

§rbx: u64

The rbx register.

§rcx: u64

The rcx register.

§rdx: u64

The rdx register.

§rsi: u64

The rsi register.

§rdi: u64

The rdi register.

§rbp: u64

The rbp register.

§rsp: u64

The stack pointer at the injection site.

In modify, a changed rsp only takes effect along with a changed rip; otherwise the original code resumes on its own stack.

§r8: u64

The r8 register.

§r9: u64

The r9 register.

§r10: u64

The r10 register.

§r11: u64

The r11 register.

§r12: u64

The r12 register.

§r13: u64

The r13 register.

§r14: u64

The r14 register.

§r15: u64

The r15 register.

§rip: u64

The address of the injection site, the patched instruction.

In modify, setting it to another address jumps there with the (maybe changed) rsp, and the displaced instructions don’t run.

§xmm: [Xmm; 16]

The SSE registers xmm0–xmm15.

Trait Implementations§

Source§

impl Clone for Context

Source§

fn clone(&self) -> Context

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Context

Source§

impl Debug for Context

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Context

Source§

impl PartialEq for Context

Source§

fn eq(&self, other: &Context) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Context

Auto Trait Implementations§

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.