pub trait PeReader<R: Read + Seek> {
Show 14 methods
// Required methods
fn get_viewer(&mut self) -> &mut R;
fn add_diagnostics(&mut self, error: impl Into<GaiaError>);
fn get_section_headers(&mut self) -> Result<&[SectionHeader], GaiaError>;
fn set_section_headers(
&mut self,
headers: Vec<SectionHeader>,
) -> Vec<SectionHeader>;
fn get_pe_header(&mut self) -> Result<&PeHeader, GaiaError>;
fn set_pe_header(&mut self, head: PeHeader) -> Option<PeHeader>;
fn get_program(&mut self) -> Result<&PeProgram, GaiaError>;
fn set_program(&mut self, program: PeProgram) -> Option<PeProgram>;
// Provided methods
fn get_position(&mut self) -> Result<u64, GaiaError>
where R: Seek { ... }
fn set_position(&mut self, offset: u64) -> Result<u64, GaiaError>
where R: Seek { ... }
fn rva_to_file_offset(
&self,
rva: u32,
sections: &[PeSection],
) -> Result<u32, 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> { ... }
}Expand description
PE 文件读取器的通用 trait
Required Methods§
Sourcefn get_viewer(&mut self) -> &mut R
fn get_viewer(&mut self) -> &mut R
获取二进制读取器的可变引用
Sourcefn add_diagnostics(&mut self, error: impl Into<GaiaError>)
fn add_diagnostics(&mut self, error: impl Into<GaiaError>)
获取诊断信息的可变引用
Sourcefn get_section_headers(&mut self) -> Result<&[SectionHeader], GaiaError>
fn get_section_headers(&mut self) -> Result<&[SectionHeader], GaiaError>
获取缓存的节头信息
Sourcefn set_section_headers(
&mut self,
headers: Vec<SectionHeader>,
) -> Vec<SectionHeader>
fn set_section_headers( &mut self, headers: Vec<SectionHeader>, ) -> Vec<SectionHeader>
设置缓存的节头信息
Sourcefn get_pe_header(&mut self) -> Result<&PeHeader, GaiaError>
fn get_pe_header(&mut self) -> Result<&PeHeader, GaiaError>
读取 PE 头部信息(通用实现)
fn set_pe_header(&mut self, head: PeHeader) -> Option<PeHeader>
fn set_program(&mut self, program: PeProgram) -> Option<PeProgram>
Provided Methods§
fn get_position(&mut self) -> Result<u64, GaiaError>where
R: Seek,
fn set_position(&mut self, offset: u64) -> Result<u64, GaiaError>where
R: Seek,
Sourcefn rva_to_file_offset(
&self,
rva: u32,
sections: &[PeSection],
) -> Result<u32, GaiaError>
fn rva_to_file_offset( &self, rva: u32, sections: &[PeSection], ) -> Result<u32, GaiaError>
将 RVA 转换为文件偏移(通用实现)
Sourcefn parse_import_table(
&mut self,
header: &PeHeader,
sections: &[PeSection],
) -> Result<ImportTable, GaiaError>
fn parse_import_table( &mut self, header: &PeHeader, sections: &[PeSection], ) -> Result<ImportTable, GaiaError>
解析导入表(通用实现)
Sourcefn parse_export_table(
&mut self,
header: &PeHeader,
sections: &[PeSection],
) -> Result<ExportTable, GaiaError>
fn parse_export_table( &mut self, header: &PeHeader, sections: &[PeSection], ) -> Result<ExportTable, GaiaError>
解析导出表(通用实现)
Sourcefn create_pe_info(&mut self) -> Result<PeInfo, GaiaError>
fn create_pe_info(&mut self) -> Result<PeInfo, GaiaError>
创建 PE 信息视图(通用实现)
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.