pub struct Mips32Shell { /* private fields */ }Implementations§
Source§impl Mips32Shell
impl Mips32Shell
pub fn New(endian: Endian) -> Self
pub fn Lui(&mut self, rt: Mips32Register, number: u16)
pub fn Ori(&mut self, rt: Mips32Register, rs: Mips32Register, number: u16)
pub fn Or(&mut self, rd: Mips32Register, rt: Mips32Register, rs: Mips32Register)
pub fn Li(&mut self, register: Mips32Register, number: u32)
pub fn Add( &mut self, rd: Mips32Register, rs: Mips32Register, rt: Mips32Register, )
pub fn Addi(&mut self, rt: Mips32Register, rs: Mips32Register, imm: i16)
pub fn Addiu(&mut self, rt: Mips32Register, rs: Mips32Register, imm: u16)
pub fn Sub( &mut self, rd: Mips32Register, rs: Mips32Register, rt: Mips32Register, )
pub fn Subu( &mut self, rd: Mips32Register, rs: Mips32Register, rt: Mips32Register, )
pub fn Subi(&mut self, rt: Mips32Register, rs: Mips32Register, imm: i16)
pub fn Xori(&mut self, rt: Mips32Register, rs: Mips32Register, imm: u16)
pub fn Mult(&mut self, rs: Mips32Register, rt: Mips32Register)
pub fn Multu(&mut self, rs: Mips32Register, rt: Mips32Register)
pub fn Mfhi(&mut self, rd: Mips32Register)
pub fn Mflo(&mut self, rd: Mips32Register)
pub fn Lb(&mut self, rt: Mips32Register, rs: Mips32Register, offset: i16)
pub fn Lhu(&mut self, rt: Mips32Register, rs: Mips32Register, offset: i16)
pub fn Lw(&mut self, rt: Mips32Register, rs: Mips32Register, offset: i16)
pub fn Sh(&mut self, rt: Mips32Register, rs: Mips32Register, offset: i16)
pub fn Sw(&mut self, rt: Mips32Register, rs: Mips32Register, offset: i16)
pub fn Slt( &mut self, rd: Mips32Register, rs: Mips32Register, rt: Mips32Register, )
pub fn Sltu( &mut self, rd: Mips32Register, rs: Mips32Register, rt: Mips32Register, )
pub fn Slti(&mut self, rt: Mips32Register, rs: Mips32Register, imm: i16)
pub fn Sltiu(&mut self, rt: Mips32Register, rs: Mips32Register, imm: u16)
Sourcepub fn Bne(&mut self, rs: Mips32Register, rt: Mips32Register, offset: i16)
pub fn Bne(&mut self, rs: Mips32Register, rt: Mips32Register, offset: i16)
Offset is instruction count, aka byte offset>>2
Sourcepub fn Beq(&mut self, rs: Mips32Register, rt: Mips32Register, offset: i16)
pub fn Beq(&mut self, rs: Mips32Register, rt: Mips32Register, offset: i16)
Offset is instruction count, aka byte offset>>2
pub fn Sync(&mut self)
Sourcepub fn Syscall(&mut self, imm: usize)
pub fn Syscall(&mut self, imm: usize)
Call syscall with provided 20 bits imm value imm value can be anything, 0x40404 is normally used to avoid null byte
Sourcepub fn PushU32(&mut self, value: u32)
pub fn PushU32(&mut self, value: u32)
Push 32 bits number Endian depend on shellcode endian Subtract $sp by 4
Sourcepub fn PushU64(&mut self, value: u64)
pub fn PushU64(&mut self, value: u64)
Push 64 bits number Endian depend on shellcode endian Subtract $sp by 8
Sourcepub fn PushU128(&mut self, value: u128)
pub fn PushU128(&mut self, value: u128)
Push 128 bits number Endian depend on shellcode endian Subtract $sp by 16
Sourcepub fn PushByteArray(&mut self, data: &[u8]) -> usize
pub fn PushByteArray(&mut self, data: &[u8]) -> usize
Push a byte array to stack Always pad data array to 8 bytes align with null byte Return the number of $sp subtracted
Sourcepub fn PushString(&mut self, string: &str) -> usize
pub fn PushString(&mut self, string: &str) -> usize
Push a string to stack, with null byte appended
Sourcepub fn GetLabel(&self) -> usize
pub fn GetLabel(&self) -> usize
Get a label to use in later branch call Label is number of instruction so far Label only valid in one shellcode instance
Sourcepub fn BeqLabel(&mut self, rs: Mips32Register, rt: Mips32Register, label: usize)
pub fn BeqLabel(&mut self, rs: Mips32Register, rt: Mips32Register, label: usize)
Branch to label if rs is equa to rt
Sourcepub fn BneLabel(&mut self, rs: Mips32Register, rt: Mips32Register, label: usize)
pub fn BneLabel(&mut self, rs: Mips32Register, rt: Mips32Register, label: usize)
Branch to label if rs is not equa to rt
Sourcepub fn ToByteArray(&self) -> Vec<u8> ⓘ
pub fn ToByteArray(&self) -> Vec<u8> ⓘ
Return the shellcode as byte array
Sourcepub fn ToAssemblySource(&self) -> String
pub fn ToAssemblySource(&self) -> String
Return the assembly source of this shellcode
Trait Implementations§
Source§impl Clone for Mips32Shell
impl Clone for Mips32Shell
Source§fn clone(&self) -> Mips32Shell
fn clone(&self) -> Mips32Shell
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more