diff --git a/androscalpel/src/apk.rs b/androscalpel/src/apk.rs index 44fee62..0342c9f 100644 --- a/androscalpel/src/apk.rs +++ b/androscalpel/src/apk.rs @@ -268,7 +268,10 @@ impl Apk { *val as usize, dex, )?)), - EncodedValue::Enum(val) => Ok(DexValue::Enum(IdEnum(*val))), + EncodedValue::Enum(val) => Ok(DexValue::Enum(IdEnum(Self::get_id_field_from_idx( + *val as usize, + dex, + )?))), EncodedValue::Array(arr) => Ok(DexValue::Array(DexArray( arr.values .iter() diff --git a/androscalpel/src/dex_id.rs b/androscalpel/src/dex_id.rs index c4bbba8..89ebd7f 100644 --- a/androscalpel/src/dex_id.rs +++ b/androscalpel/src/dex_id.rs @@ -383,25 +383,25 @@ impl IdMethod { } #[pyclass] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct IdEnum(pub u32); +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct IdEnum(pub IdField); #[pymethods] impl IdEnum { #[new] - pub fn new(val: u32) -> Self { + pub fn new(val: IdField) -> Self { Self(val) } - pub fn get_value(&self) -> u32 { - self.0 + pub fn get_value(&self) -> IdField { + self.0.clone() } pub fn __str__(&self) -> String { - self.__repr__() + self.0.__str__() } pub fn __repr__(&self) -> String { - format!("DexEnum({})", self.0) + format!("DexEnum({})", self.__str__()) } }