GadgetType

Enum GadgetType 

Source
pub enum GadgetType {
Show 14 variants JmpRbx, JmpRax, JmpRcx, JmpRdx, JmpR8, JmpR9, JmpIndirectRbx, JmpIndirectRax, CallRbx, CallRax, Ret, AddRspRet { offset: u8, }, PopRet { register: u8, }, PushRbxRet,
}
Expand description

type of gadget instruction sequence

Variants§

§

JmpRbx

jmp rbx - jump to address in rbx

§

JmpRax

jmp rax - jump to address in rax

§

JmpRcx

jmp rcx - jump to address in rcx

§

JmpRdx

jmp rdx - jump to address in rdx

§

JmpR8

jmp r8 - jump to address in r8

§

JmpR9

jmp r9 - jump to address in r9

§

JmpIndirectRbx

jmp [rbx] - indirect jump through rbx

§

JmpIndirectRax

jmp [rax] - indirect jump through rax

§

CallRbx

call rbx - call address in rbx

§

CallRax

call rax - call address in rax

§

Ret

ret - simple return

§

AddRspRet

add rsp, N; ret - stack cleanup before return

Fields

§offset: u8
§

PopRet

pop reg; ret - pop register then return

Fields

§register: u8
§

PushRbxRet

push rbx; ret - push rbx onto stack and return (for setting up returns)

Implementations§

Source§

impl GadgetType

Source

pub fn bytes(&self) -> &'static [u8]

get the bytes that make up this gadget type

Source

pub fn name(&self) -> &'static str

get friendly name for this gadget type

Source

pub fn from_pattern(pattern: &str) -> Option<GadgetPattern>

parse a gadget type from a pattern string supports wildcards: “jmp ???” matches any jmp reg

Trait Implementations§

Source§

impl Clone for GadgetType

Source§

fn clone(&self) -> GadgetType

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for GadgetType

Source§

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

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

impl Hash for GadgetType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for GadgetType

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for GadgetType

Source§

impl Eq for GadgetType

Source§

impl StructuralPartialEq for GadgetType

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.