#api-bindings #rwx #rwx-memory

无需std virtual-memory

用于Unix和Windows上分配RWX内存的库

2个版本

0.1.1 2022年12月25日
0.1.0 2022年12月21日

#710 in 内存管理

24次每月下载
shellexec中使用

MIT许可证

7KB
89

virtual-memory

Build Status Latest Version Documentation

用于Unix和Windows上分配RWX内存的库。

有关更多详细信息,请参阅https://github.com/StackOverflowExcept1on/shellexec

示例

use virtual_memory::*;

let buf = &[
    //mov eax, 1337
    0xb8, 0x39, 0x05, 0x00, 0x00,
    //ret
    0xc3,
];

let mut memory = VirtualMemory::new(buf.len()).expect("failed to allocate rwx memory");
memory.copy_from_slice(buf);

let f: extern "C" fn() -> u32 = unsafe { std::mem::transmute(memory.as_ptr()) };
assert_eq!(f(), 1337);

lib.rs:

用于Unix和Windows上分配RWX内存的库

use virtual_memory::*;

let buf = &[
    //mov eax, 1337
    0xb8, 0x39, 0x05, 0x00, 0x00,
    //ret
    0xc3,
];

let mut memory = VirtualMemory::new(buf.len()).expect("failed to allocate rwx memory");
memory.copy_from_slice(buf);

let f: extern "C" fn() -> u32 = unsafe { std::mem::transmute(memory.as_ptr()) };
assert_eq!(f(), 1337);

依赖项

~0–13MB
~97K SLoC