fix: 修复一个todo问题
This commit is contained in:
10
src/pe.rs
10
src/pe.rs
@@ -301,7 +301,7 @@ pub trait ReadOnlyPE: Deref<Target = [u8]> + Sized + AsRef<[u8]> {
|
||||
|
||||
|
||||
/// 获取导出函数的RVA地址,类似于GetProcAddress
|
||||
fn get_export_function_rva(&self, proc_name: ProcName) -> Result<u32, PEParseError>{
|
||||
fn get_export_function_rva(&self, proc_name: ProcName) -> Result<Option<u32>, PEParseError>{
|
||||
let export_table_dir = self.get_data_directory(ImageDirectoryEntry::Export)?;
|
||||
let export_table_rva = export_table_dir.virtual_address;
|
||||
let export_table = self.parse_export_table(export_table_rva)?;
|
||||
@@ -335,7 +335,7 @@ pub trait ReadOnlyPE: Deref<Target = [u8]> + Sized + AsRef<[u8]> {
|
||||
let functions_table_foa = self.rva_to_foa(export_table.address_of_functions)?;
|
||||
let function_item_foa = functions_table_foa + ordinal as u32 * std::mem::size_of::<u32>() as u32;
|
||||
let rva = self.get_ref::<u32>(function_item_foa as usize)?.clone();
|
||||
return Ok(rva);
|
||||
return Ok(Some(rva));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -349,13 +349,11 @@ pub trait ReadOnlyPE: Deref<Target = [u8]> + Sized + AsRef<[u8]> {
|
||||
let functions_table_foa = self.rva_to_foa(export_table.address_of_functions)?;
|
||||
let function_item_foa = functions_table_foa + find_ordinal * std::mem::size_of::<u32>() as u32;
|
||||
let rva = self.get_ref::<u32>(function_item_foa as usize)?.clone();
|
||||
return Ok(rva);
|
||||
return Ok(Some(rva));
|
||||
}
|
||||
}
|
||||
|
||||
todo!()
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
}
|
||||
/// 可修改的PE trait
|
||||
pub trait MutablePE: ReadOnlyPE + DerefMut<Target = [u8]> + AsMut<[u8]> {
|
||||
|
||||
Reference in New Issue
Block a user