2个版本
0.1.1 | 2024年6月23日 |
---|---|
0.1.0 | 2024年6月23日 |
#641 in 编码
36KB
654 行
Shellcoder:快速编写shellcode有效负载!
最低支持的Rust版本: 1.61.0
文档: docs.rs/shellcoder。
功能标志
shellcoder
包含以下功能标志
名称 | 描述 | 默认启用 |
---|---|---|
std |
使用标准库。提供对I/O支持和Vec 支持实现的访问。 |
no |
将 shellcoder
添加到您的库中
要将 shellcoder
添加到Rust库中,您可以使用 Cargo
$ cargo add shellcoder
或者,编辑您的 Cargo.toml
并在 dependencies
部分下添加以下行
shellcoder = "0.1.0"
示例
以下代码编写了一个简单的shellcode,包含两个地址,它们之间有一个8字节的间隔。它使用静态实现,即不进行动态内存分配。
use shellcoder::{
Op as _,
Shellcoder as _,
};
use shellcoder::r#static::Shellcoder;
use shellcoder::Result;
pub fn main() -> Result<()> {
// We define a scratch buffer to be used by [`Shellcoder`].
let mut scratch_buffer = [0u8; 0x18];
// We instantiate a _shellcoder_, the _static_ one.
let mut shellcoder = Shellcoder::new(&mut scratch_buffer);
// We build the shellcode.
let shellcode = shellcoder
.write_le(0x10000abccu64)? // writes little-endian encoded 0x10000abcc.
.fill(8, b'A')? // moves the cursor 8 bytes ahead,
// filling the gap with 'A'
.write_le(0x10000fffc)? // writes little-endian encoded 0x10000fffc.
.get();
assert_eq!(shellcode, &[
0xcc, 0xab, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0xfc, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
]);
Ok(())
}
许可证
Apache2,见 许可证。
依赖关系
~0–310KB