Changelog
Changelog format is based on Keep a Changelog.
Types of changes:
- Added for new features.
- Changed for changes in existing functionality.
- Deprecated for soon-to-be removed features.
- Removed for now removed features.
- Security in case of vulnerabilities.
- Fixed for any bug fixes.
💡 Always remove previous plugin version before updating
[2024.3.2] - 2024-12-19
Fixed
- Fix a regression with error from empty ObscuredStrings editing in Inspector
[2024.3.1] - 2024-12-18
Changed
- Improve error handling in serialized data parser
Fixed
- Fix possible exceptions while parsing serialized data
- Fix invalid variables Inspector highlight inside nested items
- Fix possible edge case obscured false positives
[2024.3.0] - 2024-12-10
Added
- Add obscured types validation / migration in Build scenes
Changed
- Improve URP / HDRP compatibility
- Update icons
- Update changelog format and release as html
Security
- Fix SpeedHackDetector vulnerability
Fixed
- Fix deprecation warnings when migrating from PlayerPrefs to ObscuredPrefs
[2024.2.1] - 2024-11-18
Fixed
- Fix default ObscuredBool was rendered as True in Inspector (thx sol3breaker)
[2024.2.0] - 2024-11-17
Added
- Add Project View context menus to validate or migrate specified assets
Changed
- Improve RAM usage while validating or migrating assets
- Improve asset validation and migration API for more flexibility
Fixed
- Fix possible exceptions while iterating scripting objects
- Fix non-initialized obscured variables were marked as invalid
[2024.1.0] - 2024-11-04
Added
- Add Honeypot option to the ObscuredCheatingDetector
Changed
- Improve Obscured types cheating resistance
- Improve ObscuredTypesNewtonsoftConverter performance
- Improve ObscuredVector2Int API compatibility
- Improve ObscuredVector3Int API compatibility
Security
- Fix few reported vulnerabilities
Deprecated
- Deprecate ACTK_OBSCURED_AUTO_MIGRATION flag with auto-migration from legacy versions
Fixed
- Fix AndroidScreenRecordingBlocker example
- Fix rare ObscuredBigInteger data corruption
- Fix ObscuredUInt inspector couldn't be set to values more than 2147483647
[2024.0.0] - 2024-07-07
Added
- Add prevent screen recording feature for Android platform
Changed
- Improve Unity 6 compatibility
- Increase minimum Android supported version to Android 5.0 (API SDK 21)
Fixed
- Fix few compilation warnings
[2023.2.6] - 2024-01-14
Fixed
- Fix Obscured Types json serialization could produce exception in obfuscated build (thx Thiago)
[2023.2.5] - 2024-01-04
Fixed
- Fix ObscuredPrefs.HasKey() could return wrong value when migrating from v1 format (thx Avocco)
[2023.2.4] - 2023-12-19
Changed
- Make sure domain reload support is editor-only
Fixed
- Fix CodeHashGenerator warnings in Editor
[2023.2.3] - 2023-09-12
Fixed
- Fix harmless errors in console while using Prefs Editor (thx Rono)
- Fix rare RuntimeInitializeOnLoadMethodAttribute errors (thx Silent)
[2023.2.2] - 2023-07-08
Changed
- Improve disabled domain reload compatibility (thx KonstantGames)
[2023.2.1] - 2023-06-16
Fixed
- Fix ObscuredFilePrefs didn't allow saving after removing a key (thx Tyle)
[2023.2.0] - 2023-05-31
Changed
- Improve ObscuredDateTime compatibility
- ObscuredDateTime.GetDecrypted() now returns DateTime instead of binary long value
- Improve AppInstallationSource accuracy for PackageInstaller source
- Make ObscuredBigInteger serialize into JSON as human-readable string instead of b64 bytes
Fixed
- Fix wrong Culture could be used while deserializing obscured types from JSON (thx spikyworm5)
[2023.1.0] - 2023-05-20
Added
- Add ObscuredDateTime (thx spikyworm5)
Changed
- Include ObscuredDecimal into the obscured types validation
Fixed
- Fix ObscuredDecimal might not parse properly from the Inspector
- Fix ObscuredString equality check against regular string (thx haeggongs)
[2023.0.1] - 2023-05-11
Added
- Add switch for the ACTK_NEWTONSOFT_JSON conditional in ACTk Settings
Fixed
- Fix CodeHashGeneratorPostprocessor.HashesGenerated event didn't invoke on post build step (thx mhosoya)
[2023.0.0] - 2023-05-09
Added
- Add AppInstallationSourceValidator to easily figure out Android app installation source
- Add ObscuredCheatingDetector.LastDetectionInfo property with detection context
- Add built-in Newtonsoft Json Converter for Obscured Types
- Add CodeHashGenerator.GenerateAsync() API
- Add CodeHashGeneratorPostprocessor APIs:
- CalculateBuildReportHashesAsync() method
- CalculateExternalBuildHashesAsync() method
- Add HashGeneratorResult.PrintToConsole() API for debugging purposes
- Add state corruption checks when API accessed too early (before Awake)
- Add Windows build hashing progress bar in Editor
- Add Normalize() method and normalized property to ObscuredVector2, ObscuredVector3, ObscuredQuaternion
- Add buildPath argument to CalculateExternalBuildHashes so you could calculate hashes for any build path from CLI
- Add migration notes to the User Manual to help you migrate from v2021 to v2023
Changed
- Update minimum Unity version to 2019.4
- Improve Obscured Types equality checks
- Improve how ObscuredFile handles custom path in some rare cases
- Significantly improve CodeHashGenerator performance:
- Utilize all available cores in Editor's CodeHashGeneratorPostprocessor
- Utilize specified threads count in Runtime CodeHashGenerator
- Make Summary Hash generation magnitudes faster
- Change CodeHashGeneratorPostprocessor API:
- Refactor Instance.callbackOrder to static CallbackOrder
- Refactor Instance.HashesGenerated to static HashesGenerated
- Refactor HashesGenerated delegate
BuildHashes[]
hashedBuilds argument toIReadOnlyList<BuildHashes> hashedBuilds
- Refactor BuildHashes.FileHashes property type from Array to IReadOnlyList
- Refactor HashGeneratorResult.FileHashes property type from Array to IReadOnlyList
- Improve CodeHashGeneratorPostprocessor progress reporting in Editor
- Improve CodeHashGenerator filtering to include all .dex and .so files on Android
- Prepare CodeHashGenerator filtering to include content files so whole build could be covered in future
- Introduce various minor improvements
Removed
- Remove static CodeHashGeneratorPostprocessor.Instance property
Fixed
- Fix InjectionDetector build processor could keep the service temp file if build fails
- Fix ObscuredBigInteger.Equals(ObscuredBigInteger) check didn't work properly
- Fix ObscuredBigInteger.GetHashCode() did return value affected by random crypto key
- Fix ObscuredFile could have inconsistent path delimiters in the FilePath
- Fix some critical errors didn't print to console
- Fix regression where ACTK_PREVENT_READ_PHONE_STATE didn't remove permissions caused by SystemInfo.deviceUniqueIdentifier
[2021.6.4] - 2023-03-09
I know it's 2023 already, fine? xD
Changed
- Improve Unity 2023 compatibility
Fixed
- Fix inspector fields regression introduced at v2021.2.1 for Unity versions below 2022.2 (thx mrm83)
- Fix possible SpeedHackDetector false positives regression introduced at v2021.3.0, now DSP module is optional and off by default with proper warning about its sensitivity (thx mrm83, Kazeon, gpedrani and others 🙏)
- Fix some buttons didn't open Project Settings in Unity 2019+
[2021.6.3] - 2022-12-19
Added
- Add few more operators to the ObscuredBigInteger to better match BigInteger API.
Changed
- Change CodeHashGenerator Editor warning to error to make it more visible and reduce possible confusion
[2021.6.2] - 2022-11-12
Changed
- Make ObscuredCheatingDetector to print logs when ACTK_DETECTION_BACKLOGS is enabled
- Improve Obscured Types serialization Validation logs to include exact path and location
[2021.6.1] - 2022-11-10
Fixed
- Fix rare SpeedHackDetector false positive
[2021.6.0] - 2022-11-09
Added
- Add new WallHackDetector compatibility check and safety warning (thx naezith)
- Add serialization corruption detection for Obscured Types
Changed
- Improve ObscuredVector2Int and ObscuredVector3Int vector components access performance
Fixed
- Reduce rare SpeedHackDetector false positive possibility
- Fix few rare ObscuredCheatingDetector false positives (thx thiagolr)
[2021.5.1] - 2022-09-10
Changed
- Improve ObscuredFilePrefsAutoSaver behavior in Editor (thx YeahBoi)
Fixed
- Fix ObscuredBigInteger corruption (thx jaeyoung)
- Fix ambiguous APIs at the ObscuredBigInteger
[2021.5.0] - 2022-07-31
Added
- Add IDisposable implementation to the SHA1Wrapper class
- Add DurationSeconds property to the CodeHashGenerator results
Changed
- Improve CodeHashGenerator accuracy in Editor for IL2CPP platforms
- Deprecate few obsolete CodeHashGenerator APIs
- Improve Unity 2023 compatibility
Fixed
- Fix WebGL compilation regression
[2021.4.2] - 2022-07-25
Fixed
- ObscuredCheatingDetector: fix possible rare false positive (thx tbiz5270)
[2021.4.1] - 2022-07-21
Fixed
- SpeedHackDetector: fix possible rare false positive in Editor
[2021.4.0] - 2022-07-16
Added
- Add LastOnlineTimeResult instance property to the TimeCheatingDetector
- Add automatic ProGuard configuration to prevent errors due to minification
- Add new menu item to configure proguard-user.txt on demand
Changed
- Make ProGuard configuration more granular to obfuscate more of the native code
- Expose internal TimeCheatingDetector.IsReadyForForceCheck() API
Fixed
- Fix possible TimeCheatingDetector error due to certificate validation (thx murat303)
[2021.3.0] - 2022-07-10
Changed
- Improve Speed Hack Detector sensitivity in sandboxed environments
- Improve detectors' keepAlive logic when using additive scenes
- Improve WebGL file system compatibility at Obscured File and Obscured File Prefs
Fixed
- Fix possible undesired detector self-destroy on additive scene load
[2021.2.1] - 2022-07-04
Changed
- Change some property drawers to use Delayed fields to reduce CPU overhead while editing obscured fields in inspector
[2021.2.0] - 2022-06-29
Added
- Add ObscuredBigInteger type
- Add BigInteger type support to the ObscuredPrefs / ObscuredFilePrefs
- Add TriggerDetection() utility method to all detectors
- Add 'Trigger detection' context menu item to all detectors components
[2021.1.1] - 2022-05-04
Added
- Add TimeCheatingDetector.GetOnlineTimeTask() overloads with CancellationToken argument
[2021.1.0] - 2022-04-11
Added
- Add ObscuredFilePrefs Auto Save on mobile platforms (enabled by default)
- Automatically saves unsaved changes on app loose focus / pause
- Add API to disable ObscuredFilePrefs Auto Save (disables Auto Save on both mobile and non-mobile platforms)
- Introduce IObscuredFileSettings to improve API usage experience
Changed
- Add locks to the ObscuredFilePrefs sync operations to improve stability when accessing it from different threads
- Move ObscuredFilePrefs Save-On-Quit code to the Auto Save feature entity so it's disableable now
Fixed
- Prevent ObscuredFilePrefs Save-On-Quit while not initialized
- Fix ObscuredFilePrefs behavior with disabled Reload Domain
- Fix compilation error at Unity 2018 Android
- Fix compilation warnings for WebGL platform
[2021.0.10] - 2022-03-09
Fixed
- Fix ObscuredString name in Inspector might render incorrect in arrays (thx Sungmin An)
[2021.0.9] - 2022-03-06
Changed
- CodeHashGenerator's Summary Hash is no longer printed for AAB builds
- Skip Android Patch Packages hashing by CodeHashGenerator
Fixed
- Fix obsolete API usage leading to compilation error in Unity 2022.1
[2021.0.8] - 2022-02-08
Changed
- Minor Prefs Editor UI improvements
Fixed
- Fix Prefs Editor window didn't update properly under specific conditions (thx Todd Gillissie)
[2021.0.7] - 2021-11-18
Fixed
- Fix iOS Conditional compilation constants settings could not apply in some Unity versions (thx Hesham)
- Fix empty ObscuredString fields automatic migration (thx thiagolr)
[2021.0.6] - 2021-11-18
Changed
- Warn when trying to use ObscuredFile with StreamingAssets on Android and WebGL (thx Harama)
Fixed
- Fix automatic ObscuredString migration didn't happen properly in some cases (thx thiagolr)
- Fix exception in ObscuredFilePrefs on iOS could happen under rare conditions
- Fix ObscuredString example log
[2021.0.5] - 2021-10-26
Changed
- Improve ObscuredPrefs and ObscuredFilePrefs compatibility with Obscured types
Fixed
- Fix TimeUtils could be disposed unexpectedly (thx Hesham)
- Fix TimeUtils might not reinitialize properly in rare case
[2021.0.4] - 2021-10-02
Fixed
- Fix BehaviorDesigner integration package compilation errors (thx Levent)
[2021.0.3] - 2021-09-27
Changed
- Improve TimeCheatingDetector performance a bit
Fixed
- Fix missing script at the example scene
- Fix CodeHashGeneratorListener example compilation errors
[2021.0.2] - 2021-09-17
Fixed
- Fix empty string was read as null from ObscuredPrefs and ObscuredFilePrefs (thx C0dingschmuser)
[2021.0.1] - 2021-09-10
Changed
- Improve exceptions logging a bit
Fixed
- Fix compilation exception for iOS platform (thx Vladnee)
[2021.0.0] - 2021-09-06
Added
- Add new ObscuredFile and ObscuredFilePrefs tools to the ACTk 🧰
- Encrypted and plain modes
- All modes have data consistency validation
- All modes have lock to device feature
- ObscuredFilePrefs has simple and easy to use PlayerPrefs-like APIs
- Async compatible
- Supports UWP starting from Unity 2019.1
- BehaviorDesigner and PlayMaker Actions
- Add generic APIs to ObscuredPrefs
- Add new types support to ObscuredPrefs:
- rest of simple C# types (SByte, Byte, Int16, UInt16, Char)
- System.DateTime
- Color (it's possible to save HDR colors now)
- Matrix4x4, RangeInt, Ray, Ray2D, RectInt, Vector2Int, Vector3Int, Vector4
- Add ObscuredQuaternion property drawer (now it's editable from inspector)
- Add automatic link.xml generation option to complement fix for WallHack Detector false positives due to stripping
- Add additional information to the important error logs
- Make ThreadSafeRandom utility public
- Add Copy Player Prefs path context menu item to the Prefs Editor tab
- Add ObscuredPrefs Vector2Int and Vector3Int support to BehaviorDesigner integration
- Add new support contact, let's chat at Discord!
Changed
- Swap Changelog to md version to better match Unity packages format (Keep a Changelog)
- Rename following ObscuredPrefs API in order to better suite coding style:
- OnAlterationDetected -> NotGenuineDataDetected
- OnPossibleForeignSavesDetected -> DataFromAnotherDeviceDetected
- lockToDevice -> DeviceLockLevel
- Move ObscuredPrefs.DeviceLockLevel enum out from the ObscuredPrefs type
- Introduce DeviceLockTamperingSensitivity instead of readForeignSaves and emergencyMode settings for additional clarity
- Decimal values processing at ObscuredPrefs are much faster now with much lesser GC-allocations footprint
- Improve exceptions handling across whole codebase
- Improve incorrect type usage handling at ObscuredPrefs (thx David E)
- Improve Settings UI a bit
- Improve detectors startup a bit
- Improve Prefs Editor error handling
- Minor code refactoring and cleanup
- Update some API docs
Deprecated
- Deprecate non-generic ObscuredPrefs APIs (to be removed in future versions)
Removed
- Remove .NET 3.5 scripting runtime version support
Fixed
- Fix possible data corruption at all Obscured types in super rare scenarios (only one rare case for ObscuredBool was found)
- Fix possible false positives from WallHackDetector on Unity 2019.3 or newer when IL2CPP "Strip Engine Code" setting is used (thx Hesham)
- Fix compilation warning on UWP platform
- Fix redundant injection detector support were added into IL2CPP builds in some conditions
- Fix exceptions in Unity 2021.2 and newer while browsing ACTk settings
- Fix code hash pre-generation was run redundantly when building with Create Visual Studio Solution option enabled
- Fix Behavior Tree at BehaviorDesigner's integration ObscuredPrefsExample scene
- Fix other minor stuff here and there
[2.3.4] and older
See older versions changelog in legacy text format here