morpheus_persistent/pe/header/
utils.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//! Raw memory read utilities for PE parsing

#[inline]
pub unsafe fn read_u16(base: *const u8, offset: usize) -> u16 {
    u16::from_le_bytes([*base.add(offset), *base.add(offset + 1)])
}

#[inline]
pub unsafe fn read_u32(base: *const u8, offset: usize) -> u32 {
    u32::from_le_bytes([
        *base.add(offset),
        *base.add(offset + 1),
        *base.add(offset + 2),
        *base.add(offset + 3),
    ])
}

#[inline]
pub unsafe fn read_u64(base: *const u8, offset: usize) -> u64 {
    u64::from_le_bytes([
        *base.add(offset),
        *base.add(offset + 1),
        *base.add(offset + 2),
        *base.add(offset + 3),
        *base.add(offset + 4),
        *base.add(offset + 5),
        *base.add(offset + 6),
        *base.add(offset + 7),
    ])
}