diff --git a/src/unlocker/dbdcrypt.cpp b/src/unlocker/dbdcrypt.cpp index 129f0b7..cd73416 100644 --- a/src/unlocker/dbdcrypt.cpp +++ b/src/unlocker/dbdcrypt.cpp @@ -133,8 +133,9 @@ std::string DBDCrypt::decType2(const std::string& data, const std::string& key, for (char& c : decrypted) c = (char)((unsigned char)c + 1); - while (!decrypted.empty() && (unsigned char)decrypted.back() == 1) - decrypted.pop_back(); + decrypted.erase(std::remove(decrypted.begin(), decrypted.end(), (char)0x01), decrypted.end()); + decrypted.erase(std::remove(decrypted.begin(), decrypted.end(), (char)0x00), decrypted.end()); + for (size_t offset : {0ULL, 4ULL}) { @@ -174,8 +175,9 @@ std::string DBDCrypt::decType3(const std::string& data, const std::string& key, for (char& c : decrypted) c = (char)((unsigned char)c + 1); - while (!decrypted.empty() && (unsigned char)decrypted.back() == 1) - decrypted.pop_back(); + decrypted.erase(std::remove(decrypted.begin(), decrypted.end(), (char)0x01), decrypted.end()); + decrypted.erase(std::remove(decrypted.begin(), decrypted.end(), (char)0x00), decrypted.end()); + for (size_t offset : {0ULL, 4ULL}) {