fix: Zlib decryption for wuwa

For wuwa 2.4Beta+
This commit is contained in:
Ranny 2025-05-30 01:55:04 -04:00
parent 86e6144d9e
commit a7c0d3d6df

View file

@ -347,7 +347,23 @@ impl Entry {
return Err(super::Error::Encrypted);
};
use aes::cipher::BlockDecrypt;
for block in data.chunks_mut(16) {
let mut data_len = data.len();
#[cfg(feature = "wuthering-waves")]
{
data_len = match self.compression_slot.and_then(|c| compression[c as usize]) {
Some(Compression::Zlib) => {
if data_len > 2048 {
2048
} else {
data_len
}
},
_ => data_len,
};
}
for block in data[..data_len].chunks_mut(16) {
key.decrypt_block(aes::Block::from_mut_slice(block))
}
data.truncate(self.compressed as usize);