(sections: &[(u32, u32, u32)], rva: u32)
| 17 | } |
| 18 | |
| 19 | fn rva_to_offset(sections: &[(u32, u32, u32)], rva: u32) -> Option<usize> { |
| 20 | for &(vaddr, vsize, raw_offset) in sections { |
| 21 | if rva >= vaddr && rva < vaddr + vsize { |
| 22 | return Some((rva - vaddr + raw_offset) as usize); |
| 23 | } |
| 24 | } |
| 25 | None |
| 26 | } |
| 27 | |
| 28 | fn read_cstring(data: &[u8], offset: usize) -> Option<String> { |
| 29 | let end = data[offset..].iter().position(|&b| b == 0)?; |