31 lines
962 B
Rust
31 lines
962 B
Rust
use thiserror::Error;
|
|
|
|
#[derive(Error, Debug)]
|
|
pub enum PEParseError {
|
|
#[error("无效的DOSMagic值")]
|
|
InvalidDOSMagic,
|
|
#[error("Invalid NT header signature")]
|
|
InvalidNTSignature,
|
|
#[error("Invalid optional header magic number")]
|
|
InvalidOptionalMagic,
|
|
#[error("Invalid optional header size")]
|
|
InvalidOptionalSize,
|
|
#[error("解析超出了文件范围")]
|
|
OutOfBounds,
|
|
}
|
|
/// PE操作的错误
|
|
#[derive(Error, Debug)]
|
|
pub enum MutablePEError {
|
|
// 兼容PE解析错误
|
|
#[error(transparent)]
|
|
PEParseError(#[from] PEParseError),
|
|
// 头部映射无法扩容,超出最大可扩容范围
|
|
#[error("头部映射无法扩容, 需要扩容大小:{0:#X},超过了最大可扩容范围:{1:#X}")]
|
|
CannotExpandHeader(u32, u32),
|
|
|
|
// 文件大小不足,无法扩容
|
|
#[error("文件大小不足,无法扩容! 需要的大小:{0:#X}, 当前的文件大小:{1:#X}")]
|
|
CannotExpandFileSize(u32, u32),
|
|
|
|
}
|