PeReader

Trait PeReader 

Source
pub trait PeReader<R: Read + Seek> {
Show 14 methods // Required methods fn get_viewer(&mut self) -> &mut BinaryReader<R, LittleEndian>; fn add_diagnostics(&mut self, error: impl Into<GaiaError>); fn get_cached_section_headers(&self) -> Option<&Vec<SectionHeader>>; fn set_cached_section_headers(&mut self, headers: Vec<SectionHeader>); fn read_header_once(&mut self) -> Result<&PeHeader, GaiaError>; fn read_program_once(&mut self) -> Result<&PeProgram, GaiaError>; // Provided methods fn read_header_force(&mut self) -> Result<PeHeader, GaiaError> { ... } fn read_section_headers(&mut self) -> Result<Vec<SectionHeader>, GaiaError> { ... } fn rva_to_file_offset( &self, rva: u32, sections: &[PeSection], ) -> Result<u32, GaiaError> { ... } fn read_section_from_header( &mut self, header: &SectionHeader, ) -> Result<PeSection, GaiaError> { ... } fn parse_import_table( &mut self, header: &PeHeader, sections: &[PeSection], ) -> Result<ImportTable, GaiaError> { ... } fn parse_export_table( &mut self, header: &PeHeader, sections: &[PeSection], ) -> Result<ExportTable, GaiaError> { ... } fn create_pe_info(&mut self) -> Result<PeInfo, GaiaError> { ... } fn read_program_force(&mut self) -> Result<PeProgram, GaiaError> { ... }
}
Expand description

PE 文件读取器的通用 trait

Required Methods§

Source

fn get_viewer(&mut self) -> &mut BinaryReader<R, LittleEndian>

获取二进制读取器的可变引用

Source

fn add_diagnostics(&mut self, error: impl Into<GaiaError>)

获取诊断信息的可变引用

Source

fn get_cached_section_headers(&self) -> Option<&Vec<SectionHeader>>

获取缓存的节头信息

Source

fn set_cached_section_headers(&mut self, headers: Vec<SectionHeader>)

设置缓存的节头信息

Source

fn read_header_once(&mut self) -> Result<&PeHeader, GaiaError>

读取 PE 头部信息(通用实现)

Source

fn read_program_once(&mut self) -> Result<&PeProgram, GaiaError>

强制读取完整的 PeProgram,并缓存结果

Provided Methods§

Source

fn read_header_force(&mut self) -> Result<PeHeader, GaiaError>

解析 PE 头部(通用实现)

Source

fn read_section_headers(&mut self) -> Result<Vec<SectionHeader>, GaiaError>

读取节头信息(通用实现)

Source

fn rva_to_file_offset( &self, rva: u32, sections: &[PeSection], ) -> Result<u32, GaiaError>

将 RVA 转换为文件偏移(通用实现)

Source

fn read_section_from_header( &mut self, header: &SectionHeader, ) -> Result<PeSection, GaiaError>

从节头读取节数据(通用实现)

Source

fn parse_import_table( &mut self, header: &PeHeader, sections: &[PeSection], ) -> Result<ImportTable, GaiaError>

解析导入表(通用实现)

Source

fn parse_export_table( &mut self, header: &PeHeader, sections: &[PeSection], ) -> Result<ExportTable, GaiaError>

解析导出表(通用实现)

Source

fn create_pe_info(&mut self) -> Result<PeInfo, GaiaError>

创建 PE 信息视图(通用实现)

Source

fn read_program_force(&mut self) -> Result<PeProgram, GaiaError>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<W: Read + Seek> PeReader<W> for DllReader<W>

Source§

impl<W: Read + Seek> PeReader<W> for ExeReader<W>