mirror of
https://git.intege.rs/xlib/x.git
synced 2025-12-05 20:35:01 +00:00
support for sections
This commit is contained in:
@@ -215,6 +215,10 @@ impl ImageBase {
|
|||||||
&mut *(self.offset(self.dos().e_lfanew) as *mut ImageNTHeaders64)
|
&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> {
|
pub unsafe fn exports(&self) -> Option<ExportIter> {
|
||||||
let directory = &self.nt_header().optional_header.data_directory[ImageBase::DIRECTORY_ENTRY_EXPORT];
|
let directory = &self.nt_header().optional_header.data_directory[ImageBase::DIRECTORY_ENTRY_EXPORT];
|
||||||
if directory.size == 0 || directory.virtual_address == 0 { return None; }
|
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> {
|
pub struct ExportIter<'a> {
|
||||||
image: &'a ImageBase,
|
image: &'a ImageBase,
|
||||||
export_dir: &'a ImageExportDirectory,
|
export_dir: &'a ImageExportDirectory,
|
||||||
|
|||||||
Reference in New Issue
Block a user