From a4e5679c7b4b648c18f483a2fca4b7e69d0e7442 Mon Sep 17 00:00:00 2001 From: Jean-Marie 'Histausse' Mineau Date: Thu, 31 Aug 2023 16:57:05 +0200 Subject: [PATCH] fix the endianess --- androscalpel_serializer/src/constant.rs | 4 +- androscalpel_serializer/src/core/mod.rs | 193 ++++++++++----------- androscalpel_serializer/src/file_reader.rs | 1 + androscalpel_serializer_derive/src/lib.rs | 8 +- 4 files changed, 98 insertions(+), 108 deletions(-) diff --git a/androscalpel_serializer/src/constant.rs b/androscalpel_serializer/src/constant.rs index ef36c2f..21d606d 100644 --- a/androscalpel_serializer/src/constant.rs +++ b/androscalpel_serializer/src/constant.rs @@ -257,10 +257,10 @@ mod test { fn test_endianconstant() { assert_eq!( EndianConstant::EndianConstant.serialize_to_vec().unwrap(), - vec![0x12, 0x34, 0x56, 0x78] + vec![0x78, 0x56, 0x34, 0x12] ); assert_eq!( - EndianConstant::deserialize_from_slice(&[0x12, 0x34, 0x56, 0x78]).unwrap(), + EndianConstant::deserialize_from_slice(&[0x78, 0x56, 0x34, 0x12]).unwrap(), EndianConstant::EndianConstant ); } diff --git a/androscalpel_serializer/src/core/mod.rs b/androscalpel_serializer/src/core/mod.rs index 5ccb3bf..3250e15 100644 --- a/androscalpel_serializer/src/core/mod.rs +++ b/androscalpel_serializer/src/core/mod.rs @@ -116,7 +116,7 @@ impl SerializableUntil for Vec { impl Serializable for u8 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize u8 to output: {err}")) })?; Ok(()) @@ -127,7 +127,7 @@ impl Serializable for u8 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for u8 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -137,7 +137,7 @@ impl Serializable for u8 { impl Serializable for i8 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize i8 to output: {err}")) })?; Ok(()) @@ -148,7 +148,7 @@ impl Serializable for i8 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for i8 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -158,7 +158,7 @@ impl Serializable for i8 { impl Serializable for u16 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize u16 to output: {err}")) })?; Ok(()) @@ -169,7 +169,7 @@ impl Serializable for u16 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for u16 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -179,7 +179,7 @@ impl Serializable for u16 { impl Serializable for i16 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize i16 to output: {err}")) })?; Ok(()) @@ -190,7 +190,7 @@ impl Serializable for i16 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for i16 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -200,7 +200,7 @@ impl Serializable for i16 { impl Serializable for u32 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize u32 to output: {err}")) })?; Ok(()) @@ -211,7 +211,7 @@ impl Serializable for u32 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for u32 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -221,7 +221,7 @@ impl Serializable for u32 { impl Serializable for i32 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize i32 to output: {err}")) })?; Ok(()) @@ -232,7 +232,7 @@ impl Serializable for i32 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for i32 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -242,7 +242,7 @@ impl Serializable for i32 { impl Serializable for u64 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize u64 to output: {err}")) })?; Ok(()) @@ -253,7 +253,7 @@ impl Serializable for u64 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for u64 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -263,7 +263,7 @@ impl Serializable for u64 { impl Serializable for i64 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize i64 to output: {err}")) })?; Ok(()) @@ -274,7 +274,7 @@ impl Serializable for i64 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for i64 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -284,7 +284,7 @@ impl Serializable for i64 { impl Serializable for u128 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize u128 to output: {err}")) })?; Ok(()) @@ -295,7 +295,7 @@ impl Serializable for u128 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for u128 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -305,7 +305,7 @@ impl Serializable for u128 { impl Serializable for i128 { fn serialize(&self, output: &mut dyn Write) -> Result<()> { - output.write_all(&self.to_be_bytes()).map_err(|err| { + output.write_all(&self.to_le_bytes()).map_err(|err| { Error::SerializationError(format!("Failed to write serialize i128 to output: {err}")) })?; Ok(()) @@ -316,7 +316,7 @@ impl Serializable for i128 { input.read_exact(&mut buffer).map_err(|_| { Error::InputTooSmall("Failed to read all bytes for i128 from the input".into()) })?; - Ok(Self::from_be_bytes(buffer)) + Ok(Self::from_le_bytes(buffer)) } fn size(&self) -> usize { @@ -347,13 +347,13 @@ mod test { #[test] fn serialize_u16() { - assert_eq!(0x1234u16.serialize_to_vec().unwrap(), vec![0x12u8, 0x34u8]); + assert_eq!(0x1234u16.serialize_to_vec().unwrap(), vec![0x34u8, 0x12u8]); } #[test] fn deserialize_u16() { assert_eq!( - u16::deserialize_from_slice(&[0x12u8, 0x34u8]).unwrap(), + u16::deserialize_from_slice(&[0x34u8, 0x12u8]).unwrap(), 0x1234u16 ); } @@ -367,14 +367,14 @@ mod test { fn serialize_u32() { assert_eq!( 0x12345678u32.serialize_to_vec().unwrap(), - vec![0x12u8, 0x34u8, 0x56u8, 0x78u8] + vec![0x78u8, 0x56u8, 0x34u8, 0x12u8] ); } #[test] fn deserialize_u32() { assert_eq!( - u32::deserialize_from_slice(&[0x12u8, 0x34u8, 0x56u8, 0x78u8]).unwrap(), + u32::deserialize_from_slice(&[0x78u8, 0x56u8, 0x34u8, 0x12u8]).unwrap(), 0x12345678u32 ); } @@ -388,7 +388,7 @@ mod test { fn serialize_u64() { assert_eq!( 0x123456789ABCDEF0u64.serialize_to_vec().unwrap(), - vec![0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8] + vec![0xF0u8, 0xDEu8, 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8] ); } @@ -396,7 +396,7 @@ mod test { fn deserialize_u64() { assert_eq!( u64::deserialize_from_slice(&[ - 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8 + 0xF0u8, 0xDEu8, 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8 ]) .unwrap(), 0x123456789ABCDEF0u64 @@ -415,8 +415,8 @@ mod test { .serialize_to_vec() .unwrap(), vec![ - 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, - 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8 + 0xF0u8, 0xDEu8, 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8, 0xF0u8, 0xDEu8, + 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8, ] ); } @@ -425,8 +425,8 @@ mod test { fn deserialize_u128() { assert_eq!( u128::deserialize_from_slice(&[ - 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, - 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8 + 0xF0u8, 0xDEu8, 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8, 0xF0u8, 0xDEu8, + 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8, ]) .unwrap(), 0x123456789ABCDEF0123456789ABCDEF0u128 @@ -462,10 +462,9 @@ mod test { assert_eq!( t.serialize_to_vec().unwrap(), vec![ - 42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, - 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8 + 0x2a, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12 ] ); } @@ -480,9 +479,9 @@ mod test { 0x123456789ABCDEF0123456789ABCDEF0u128, ); let serialized = vec![ - 42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, - 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, + 0x2a, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12, ]; assert_eq!( UnamedComposedTest::deserialize_from_slice(&serialized).unwrap(), @@ -537,19 +536,16 @@ mod test { assert_eq!( t.serialize_to_vec().unwrap(), vec![ - 42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, - 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, - 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, - 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, - 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, - 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, - 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8 + 0x2a, 0x34, 0x12, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, + 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, + 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, + 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, + 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, + 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12 ] ); } @@ -575,18 +571,16 @@ mod test { ], ); let serialized = vec![ - 42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, - 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, - 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, - 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, - 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, - 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, - 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, - 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, - 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, + 0x2a, 0x34, 0x12, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, + 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, + 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, + 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, + 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, + 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12, ]; assert_eq!( UnamedArrayComposedTest::deserialize_from_slice(&serialized).unwrap(), @@ -640,20 +634,17 @@ mod test { assert_eq!( t.serialize_to_vec().unwrap(), vec![ - 42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, - 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, - 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, - 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, - 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, - 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, - 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8 - ] + 0x2a, 0x34, 0x12, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, + 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, + 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, + 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, + 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, + 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12 + ], ); } @@ -678,18 +669,16 @@ mod test { ], }; let serialized = vec![ - 42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, - 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, - 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, - 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, - 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, - 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, - 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, - 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, - 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, - 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, - 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, + 0x2a, 0x34, 0x12, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, + 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, + 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, + 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, + 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, + 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, + 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, + 0x56, 0x34, 0x12, ]; assert_eq!( NamedArrayComposedTest::deserialize_from_slice(&serialized).unwrap(), @@ -790,7 +779,7 @@ mod test { }; assert_eq!( v.serialize_to_vec().unwrap(), - vec![0, 0, 1, 2, 3, 0, 0, 0x80, 0, 0, 0], + vec![0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0x80], ); } @@ -801,7 +790,7 @@ mod test { v: vec![1, 2, 3], ps: 0x80000000, }; - let s = &[0, 0, 1, 2, 3, 0, 0, 0x80, 0, 0, 0]; + let s = &[0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0x80]; assert_eq!( v, SerializableUntilNamed::deserialize_from_slice(s).unwrap() @@ -831,11 +820,11 @@ mod test { assert_eq!(TestEnum::Zero.serialize_to_vec().unwrap(), vec![0u8]); assert_eq!( TestEnum::One(42).serialize_to_vec().unwrap(), - vec![1u8, 0u8, 0u8, 0u8, 42u8] + vec![1u8, 42u8, 0u8, 0u8, 0u8] ); assert_eq!( TestEnum::Two { a: 1, b: 2 }.serialize_to_vec().unwrap(), - vec![2u8, 0u8, 1u8, 0u8, 0u8, 0u8, 2u8] + vec![2u8, 1u8, 0u8, 2u8, 0u8, 0u8, 0u8] ); } @@ -846,11 +835,11 @@ mod test { TestEnum::Zero ); assert_eq!( - TestEnum::deserialize_from_slice(&[1u8, 0u8, 0u8, 0u8, 42u8]).unwrap(), + TestEnum::deserialize_from_slice(&[1u8, 42u8, 0u8, 0u8, 0u8]).unwrap(), TestEnum::One(42) ); assert_eq!( - TestEnum::deserialize_from_slice(&[2u8, 0u8, 1u8, 0u8, 0u8, 0u8, 2u8]).unwrap(), + TestEnum::deserialize_from_slice(&[2u8, 1u8, 0u8, 2u8, 0u8, 0u8, 0u8]).unwrap(), TestEnum::Two { a: 1, b: 2 } ); assert!(TestEnum::deserialize_from_slice(&[255u8]).is_err()); @@ -866,7 +855,7 @@ mod test { #[test] fn deserialize_prefix_suffix() { assert_eq!( - TestPrefixSuffix::deserialize_from_slice(&[0x42, 0, 1, 2, 3, 0x66, 0x66]).unwrap(), + TestPrefixSuffix::deserialize_from_slice(&[0x42, 3, 2, 1, 0, 0x66, 0x66]).unwrap(), TestPrefixSuffix { a: 0x00010203 } ); } @@ -877,7 +866,7 @@ mod test { TestPrefixSuffix { a: 0x00010203 } .serialize_to_vec() .unwrap(), - vec![0x42, 0, 1, 2, 3, 0x66, 0x66] + vec![0x42, 3, 2, 1, 0, 0x66, 0x66] ); } @@ -910,19 +899,19 @@ mod test { ); assert_eq!( TestEnumUnnamedDef::One(42).serialize_to_vec().unwrap(), - vec![1u8, 0u8, 0u8, 0u8, 42u8] + vec![1u8, 42u8, 0u8, 0u8, 0u8] ); assert_eq!( TestEnumUnnamedDef::Two { a: 1, b: 2 } .serialize_to_vec() .unwrap(), - vec![2u8, 0u8, 1u8, 0u8, 0u8, 0u8, 2u8] + vec![2u8, 1u8, 0u8, 2u8, 0u8, 0u8, 0u8] ); assert_eq!( TestEnumUnnamedDef::Dft(42, 0x01234567) .serialize_to_vec() .unwrap(), - vec![42u8, 0x01u8, 0x23u8, 0x45, 0x67], + vec![42u8, 0x67, 0x45, 0x23, 0x01u8], ); } @@ -933,16 +922,16 @@ mod test { TestEnumUnnamedDef::Zero ); assert_eq!( - TestEnumUnnamedDef::deserialize_from_slice(&[1u8, 0u8, 0u8, 0u8, 42u8]).unwrap(), + TestEnumUnnamedDef::deserialize_from_slice(&[1u8, 42u8, 0u8, 0u8, 0u8]).unwrap(), TestEnumUnnamedDef::One(42) ); assert_eq!( - TestEnumUnnamedDef::deserialize_from_slice(&[2u8, 0u8, 1u8, 0u8, 0u8, 0u8, 2u8]) + TestEnumUnnamedDef::deserialize_from_slice(&[2u8, 1u8, 0u8, 2u8, 0u8, 0u8, 0u8]) .unwrap(), TestEnumUnnamedDef::Two { a: 1, b: 2 } ); assert_eq!( - TestEnumUnnamedDef::deserialize_from_slice(&[42u8, 0x01u8, 0x23u8, 0x45, 0x67]) + TestEnumUnnamedDef::deserialize_from_slice(&[42u8, 0x67, 0x45, 0x23u8, 0x01u8]) .unwrap(), TestEnumUnnamedDef::Dft(42, 0x01234567) ); diff --git a/androscalpel_serializer/src/file_reader.rs b/androscalpel_serializer/src/file_reader.rs index 5b116a5..ab1ad45 100644 --- a/androscalpel_serializer/src/file_reader.rs +++ b/androscalpel_serializer/src/file_reader.rs @@ -25,6 +25,7 @@ impl<'a> DexFileReader<'a> { pub fn new(data: &'a [u8]) -> Result { let mut buffer = Cursor::new(data); let header = HeaderItem::deserialize(&mut buffer)?; + println!("{header:x?}"); let mut tmp_file = Self { data, header, diff --git a/androscalpel_serializer_derive/src/lib.rs b/androscalpel_serializer_derive/src/lib.rs index a182d31..c700a73 100644 --- a/androscalpel_serializer_derive/src/lib.rs +++ b/androscalpel_serializer_derive/src/lib.rs @@ -81,15 +81,15 @@ use syn::{ /// Example::Zero /// ); /// assert_eq!( -/// Example::deserialize_from_slice(&[1u8, 0x01u8, 0x23u8, 0x45, 0x67]).unwrap(), +/// Example::deserialize_from_slice(&[1u8, 0x67, 0x45, 0x23u8, 0x01u8]).unwrap(), /// Example::One(0x01234567) /// ); /// assert_eq!( -/// Example::deserialize_from_slice(&[2u8, 0xFEu8, 0xDCu8, 0x01u8, 0x23u8, 0x45, 0x67]).unwrap(), +/// Example::deserialize_from_slice(&[2u8, 0xDCu8, 0xFEu8, 0x67, 0x45, 0x23u8, 0x01u8]).unwrap(), /// Example::Two { a: 0xFEDC, b: 0x01234567 } /// ); /// assert_eq!( -/// Example::deserialize_from_slice(&[42u8, 0x01u8, 0x23u8, 0x45, 0x67]).unwrap(), +/// Example::deserialize_from_slice(&[42u8, 0x67, 0x45, 0x23u8, 0x01u8]).unwrap(), /// Example::Dft(42, 0x01234567) /// ); /// ``` @@ -110,7 +110,7 @@ use syn::{ /// } /// /// assert_eq!( -/// Example::deserialize_from_slice(&[0x42, 0, 1, 2, 3, 0x66, 0x66]).unwrap(), +/// Example::deserialize_from_slice(&[0x42, 3, 2, 1, 0, 0x66, 0x66]).unwrap(), /// Example { a: 0x00010203 } /// ); /// ```