pub use analyssa::scheduling::{DeobfuscationCapability, ModificationScope, SsaPass, SsaPassHost};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum CilCapability {
ResolvedStaticFields,
DecryptedStrings,
RestoredControlFlow,
SimplifiedPredicates,
DevirtualizedCalls,
InlinedMethods,
}
impl From<DeobfuscationCapability> for CilCapability {
fn from(cap: DeobfuscationCapability) -> Self {
match cap {
DeobfuscationCapability::ResolvedStaticFields => Self::ResolvedStaticFields,
DeobfuscationCapability::DecryptedStrings => Self::DecryptedStrings,
DeobfuscationCapability::RestoredControlFlow => Self::RestoredControlFlow,
DeobfuscationCapability::SimplifiedPredicates => Self::SimplifiedPredicates,
DeobfuscationCapability::DevirtualizedCalls => Self::DevirtualizedCalls,
DeobfuscationCapability::InlinedMethods => Self::InlinedMethods,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum PassPhase {
Structure,
Value,
Simplify,
Inline,
Normalize,
}
impl PassPhase {
#[must_use]
pub fn as_layer(self) -> usize {
match self {
Self::Structure => 0,
Self::Value => 1,
Self::Simplify => 2,
Self::Inline => 3,
Self::Normalize => 0,
}
}
}
pub type PassCapability = CilCapability;