feat: 封装代码
This commit is contained in:
@@ -106,7 +106,7 @@ pub fn command_get_pe_data_dos_header() -> Result<ResponseDOSHeaderData, AppErro
|
||||
let file_data = binding.as_ref().unwrap();
|
||||
let dos_header = file_data.get_dos_header()?;
|
||||
let result = ResponseDOSHeaderData {
|
||||
image_dos_header: dos_header.clone(),
|
||||
fields: dos_header.clone(),
|
||||
base_offset: 0,
|
||||
};
|
||||
Ok(result)
|
||||
|
||||
@@ -45,9 +45,27 @@ pub struct ImageFileHeader {
|
||||
pub size_of_optional_header: u16,
|
||||
pub characteristics: FileCharacteristics,
|
||||
}
|
||||
impl Serialize for FileCharacteristics{
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: serde::Serializer {
|
||||
// 直接返回bitflags的整数值
|
||||
serializer.serialize_u16(self.bits())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
impl Serialize for DLLCharacteristics{
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: serde::Serializer {
|
||||
serializer.serialize_u16(self.bits())
|
||||
}
|
||||
}
|
||||
|
||||
bitflags! {
|
||||
#[repr(C)]
|
||||
#[derive(Debug, Clone, Copy, Serialize)]
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct FileCharacteristics: u16 {
|
||||
const RELOCS_STRIPPED = 0x0001;
|
||||
const EXECUTABLE_IMAGE = 0x0002;
|
||||
@@ -66,7 +84,7 @@ bitflags! {
|
||||
const BYTES_REVERSED_HI = 0x8000;
|
||||
}
|
||||
#[repr(C)]
|
||||
#[derive(Debug, Clone, Copy, Serialize)]
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct DLLCharacteristics: u16 {
|
||||
const RESERVED1 = 0x0001;
|
||||
const RESERVED2 = 0x0002;
|
||||
|
||||
@@ -19,13 +19,13 @@ pub fn mmap_mut_file(file_path: &str) -> Result<Mmap, std::io::Error> {
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct ResponseDOSHeaderData {
|
||||
pub image_dos_header: ImageDosHeader,
|
||||
pub fields: ImageDosHeader,
|
||||
pub base_offset: usize,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct ResponseNTHeaderData {
|
||||
image_nt_header: ImageNTHeaders32,
|
||||
fields: ImageNTHeaders32,
|
||||
base_offset: usize,
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ pub fn get_nt_headers_data() -> Result<ResponseNTHeaderData, AppError> {
|
||||
let nt_header = file_data.get_nt_headers()?;
|
||||
let nt_offset = file_data.get_nt_headers_offset()?;
|
||||
let result = ResponseNTHeaderData {
|
||||
image_nt_header: nt_header.clone(),
|
||||
fields: nt_header.clone(),
|
||||
base_offset: nt_offset,
|
||||
};
|
||||
Ok(result)
|
||||
@@ -44,7 +44,7 @@ pub fn get_nt_headers_data() -> Result<ResponseNTHeaderData, AppError> {
|
||||
// 获取文件头数据
|
||||
#[derive(Serialize)]
|
||||
pub struct ResponseFileHeaderData {
|
||||
pub file_header: ImageFileHeader,
|
||||
pub fields: ImageFileHeader,
|
||||
pub base_offset: usize,
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ pub fn get_file_header_data() -> Result<ResponseFileHeaderData, AppError> {
|
||||
let file_header = file_data.get_file_header()?;
|
||||
let file_header_offset = file_data.get_file_header_offset()?;
|
||||
let result = ResponseFileHeaderData {
|
||||
file_header: file_header.clone(),
|
||||
fields: file_header.clone(),
|
||||
base_offset: file_header_offset,
|
||||
};
|
||||
Ok(result)
|
||||
|
||||
Reference in New Issue
Block a user