support for sections
This commit is contained in:
@@ -215,6 +215,10 @@ impl ImageBase {
|
||||
&mut *(self.offset(self.dos().e_lfanew) as *mut ImageNTHeaders64)
|
||||
}
|
||||
|
||||
pub unsafe fn sections(&self) -> &[ImageSectionHeader] {
|
||||
self.nt_header().sections()
|
||||
}
|
||||
|
||||
pub unsafe fn exports(&self) -> Option<ExportIter> {
|
||||
let directory = &self.nt_header().optional_header.data_directory[ImageBase::DIRECTORY_ENTRY_EXPORT];
|
||||
if directory.size == 0 || directory.virtual_address == 0 { return None; }
|
||||
@@ -228,6 +232,19 @@ impl ImageBase {
|
||||
|
||||
}
|
||||
|
||||
impl ImageNTHeaders64 {
|
||||
pub fn sections(&self) -> &[ImageSectionHeader] {
|
||||
let section_base
|
||||
= ( &self.optional_header as *const _ as usize )
|
||||
+ self.file_header.size_of_optional_header as usize;
|
||||
unsafe {
|
||||
core::slice::from_raw_parts(
|
||||
section_base as *const ImageSectionHeader,
|
||||
self.file_header.number_of_sections as usize)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct ExportIter<'a> {
|
||||
image: &'a ImageBase,
|
||||
export_dir: &'a ImageExportDirectory,
|
||||
|
||||
Reference in New Issue
Block a user