www.beebyte.co.uk Open in urlscan Pro
3.160.150.63  Public Scan

Submitted URL: http://www.beebyte.co.uk/
Effective URL: https://www.beebyte.co.uk/
Submission: On May 20 via api from US — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

BEEBYTE'S OBFUSCATOR FAQ


WHICH VERSIONS OF UNITY® DO YOU SUPPORT?

The same Unity versions that are currently supported by Unity itself, i.e.
supported LTS releases and the latest official releases.


DO YOU SUPPORT THE ASSEMBLY DEFINITION FILES INTRODUCED IN 2017.3?

Yes, simultaneously obfuscating multiple assemblies has been a feature for a
long time.

Methods called between the two (or more) assemblies can still be safely
obfuscated.


WHY SHOULD I USE AN OBFUSCATOR?

The .dll produced from compiling C# code is extremely easy to read and reverse
engineer. It's almost equivalent to having access to the source code itself!
Obfuscation leaves your source code unchanged but modifies the produced .dll
making it illegible and considerably harder for someone to reverse engineer.
Have a look at your code by using a tool like ILSpy on your Assembly-CSharp.dll


WHAT MAKES YOUR OBFUSCATOR DIFFERENT FROM OTHERS?

It's specially designed for use in the Unity software, and seamlessly integrates
with the build process. These are its features:

 * Recognises Unity related code that must not be changed
 * Supports IL2CPP
 * Supports Unity Assembly Definition Files
 * Renames Classes (including MonoBehaviours (Standalone non-compressed
   non-xcode builds only for Unity 2018.2 or later))
 * Renames Methods
 * Renames Parameters
 * Renames Fields
 * Renames Properties
 * Renames Events
 * Removes Namespaces without any conflicts
 * String literal obfuscation
 * Adds fake methods
 * Easy customisation using the Unity® inspector window
 * Consistent name translations are possible across multiple builds and
   developers


IS THIS FOR PERSONAL OR PRO?

Both.


HOW EASY IS IT TO USE?

It is designed to work out of the box. Once the package has been installed you
can build your project as normal and a console message will appear to say it has
been obfuscated. Configuration can be done through an asset in the Inspector
window within the Unity® software.


ISN'T ENCRYPTING THE DLL BETTER THAN OBFUSCATING IT?

When encrypted dlls are decrypted (to run the game) the resultant code is the
same as it was before encrypting, i.e. plain to read/reverse engineer.
Obfuscation, however, is not reversed. For maximum protection, you'll want to
both obfuscate and encrypt. Just be aware that encryption can mean longer load
times while it decrypts and it's been shown to be relatively simple for a
miscreant to grab the decrypted code while the game is running.


IF SOMEONE SENDS ME A CRASH REPORT WITH A STACK TRACE, HOW CAN I READ IT?

A nameTranslation.txt file can be created when you build your project that shows
what new names were assigned. There is no automated translation tool provided,
but it's possible to manually translate a stack trace using that file.


WHICH PLATFORMS CAN I TARGET?

Supported platforms include: Standalone Windows 32&64 bit, Android®, iOS, WebGL.
Other platforms are not guaranteed or supported but may become supported at a
future date.


WHICH LANGUAGES ARE OBFUSCATED?

The Obfuscator targets DLLs rather than a specific language, but only C# is
officially supported.


WHICH ASSEMBLIES ARE OBFUSCATED?

Assembly-CSharp.dll is obfuscated by default.


IS IT POSSIBLE TO OBFUSCATE OTHER DLLS TOO?

Yes, it is possible to obfuscate any number of DLLs including those created by
assembly definitions, and including assemblies that have been precompiled.


IS IT POSSIBLE TO OBFUSCATE DLLS THAT AREN'T IN A UNITY PROJECT?

Yes, an example file included in the asset shows you how you can achieve this
through a Unity MenuItem command.


HOW CAN I KEEP MY OLD SETTINGS WHEN I UPGRADE TO A NEW VERSION?

The next time you build after upgrading to the latest version will result in a
prompt asking whether you'd like to keep your old settings.


WHERE CAN I BUY IT?




HOW CAN I CONTACT SUPPORT?

Please first read Obfuscator.pdf in Assets/Editor/Beebyte but if you're still
stuck then the best way is to send an email to support@beebyte.co.uk providing
as much information as possible and we'll be happy to look into it.


VERSION HISTORY

3.13.0 - 23rd April 2024

 * Improved obfuscation when using [SerializeField]. If you use Addressables and
   also obfuscate public MonoBehaviour fields then you should check you are
   preserving those annotated with [SerializeField]. If you wish to preserve all
   [SerializeField] instances you could define it as an equivalent attribute for
   [SkipRename].
 * Minor changes to the UI help texts to use the term "Addressables" alongside
   "Streaming Assets".

3.12.0 - 18th January 2024

 * Parameters on public or protected methods can now be excluded from
   obfuscation via the IDE. Previously these could only be excluded by a manual
   edit of the ObfuscatorOptions.asset file.
 * [ObfuscateLiterals] now correctly applies string obfuscation to yielding
   methods.

3.11.7 - 5th December 2023

 * Added an explicit statement that the Obfuscator should never be relied on to
   secure sensitive information (for example, login credentials). If you are at
   all unsure please do get in touch.

3.11.6 - 28th November 2023

 * Fixed a CRITICAL security issue.
 * Improved obfuscation strength.
 * With this version, you must regenerate your salt (if using default options
   this will happen on your next build).

3.11.5 - 13th November 2023

 * Fixed an issue with the protected checkboxes when using the internal keyword.

3.11.4 - 28th October 2023

 * Fixed a TypeLoadException cross-obfuscating assemblies when a custom
   attribute contains a named argument whose value is an obfuscated enum from a
   different assembly.

3.11.3 - 28th September 2023

 * Fixed a build issue when using 2021.3

3.11.2 - 19th September 2023

 * [Unity 2021.3 or newer] Reimplementation of the logic for 'obfuscate all
   assembly definitions' to fix an issue when a define constraint that excludes
   the editor was set against an assembly definition

3.11.1 - 18th September 2023

 * Fixed an issue with the 'Obfuscate all assembly definitions' option when a
   define constraint was set against an assembly definition

3.11.0 - 12th September 2023

 * Added SkipClassesByRegex option that will preserve classes matching any of
   the regex strings provided
 * Fixed a Unity IDE crash issue on 2022.3 that could happen when an obfuscated
   DLL is moved into the Assets folder

3.10.2 - 26th June 2023

 * An alternative implementation that bypasses a now partially fixed Unity bug
   (fixed in 2022.3.3 but not 2023.1.1) will allow previously affected versions
   2022.2.2 and onwards (including 2023.1.0+) to enable/disable the 'Obfuscate
   development builds' feature again.

3.10.1 - 26th June 2023

 * A Unity bug in versions 2022.2.2-2022.3.2 & 2023.1.0+ causes release builds
   not to obfuscate if the option 'Obfuscate development builds' is disabled. A
   temporary workaround is in place that means development builds must also be
   obfuscated for versions 2022.2.2 onwards

3.10.0 - 25th April 2023

 * Added a helper class to generate proposed obfuscated names before obfuscation
   is run
 * Added instructions to an exception that can be thrown in 2022.2 onwards

3.9.10 - 17th January 2023

 * Fixed an AssemblyResolutionException for Unity 2022 that references Unity
   packages

3.9.9 - 2nd October 2022

 * Fixed a runtime crash when reflection is used to access a 'fake code'
   generated method of an overridden base class when compiled to IL2CPP backend

3.9.8 - 31st May 2022

 * Fixed an IDE crash when building development versions on 2021.2 or above

3.9.7 - 25th May 2022

 * Fixed an IDE crash when using the Scripts Only Build option

3.9.6 - 19th May 2022

 * Fixed a CRITICAL obfuscation bug introduced in Unity 2022.1
 * Fixed an IDE crash the second time a build is made in 2022.1

3.9.4 - 7th April 2022

 * Reduced the obfuscated DLL size when using String literal obfuscation

3.9.3 - 5th April 2022

 * Fixed an issue introduced in 3.9.2. where a class defined within 'Skip
   Classes' in options may not have its methods skipped

3.9.2 - 6th January 2022

 * Fixed method obfuscation within anonymous types

3.9.1 - 28th December 2021

 * Fixed an InvalidCastException on build when using Burst

3.9.0 - 9th October 2021

 * Reimplementation of string literal obfuscation resulting in faster build and
   run times

3.8.2 - 26th April 2021

 * Fixed a FieldAccessException under rare conditions

3.8.1 - 15th April 2021

 * Fixed a Unity 2018 issue when scripts call the CompatibilityBuildPipeline

3.8.0 - 14th April 2021

 * [ObfuscateLiterals] can now be applied at the class level for it to apply to
   the methods and fields within it
 * Fixed a Unity 2017.3 compatibility issue

3.7.3 - 30th March 2021

 * Fixed the hidden option 'inheritBeebyteAttributes'

3.7.2 - 29th March 2021

 * Prevented some AssemblyResolutionExceptions

3.7.1 - 22nd March 2021

 * Fixed an IL2CPP NullReferenceException build error with simultaneous assembly
   obfuscation

3.7.0 - 20th March 2021

 * "Extra Assembly Directories" has been replaced by "Referenced Assemblies"
   that can take either directories or files
 * Fixed a build error around method parameters being a nested obfuscated enum
   type belonging to another simultaneously obfuscated assembly
 * Fixed an error around incorrect DLL versions being used for some checks
 * Prevented some AssemblyResolutionExceptions

3.6.7 - 16th March 2021

 * Fixed an IL2CPP NullReferenceException build error

3.6.6 - 15th March 2021

 * Added debug around an object reference exception error

3.6.5 - 10th March 2021

 * Fixed an IL2CPP build exception when generating fake code

3.6.4 - 1st March 2021

 * Prevented an Obfuscation build exception

3.6.3 - 15th February 2021

 * Fixed an obfuscation issue with constructor parameters
 * Allow [ObfuscateLiterals] to be applied to constructors

3.6.2 - 17th December 2020

 * Fixed obfuscation using optional "Scriptable Build Pipeline" package 1.13.1
   and higher when run on Unity versions 2019.2.7 or older

3.6.1 - 19th November 2020

 * Fixed an exception when obfuscation of MonoBehaviour class names and 'Create
   Visual Studio Solution' are both enabled

3.6.0 - 22nd October 2020

 * Added hidden option to allow obfuscation of compiler generated fields on
   Serializable classes

3.5.3 - 29th August 2020

 * Fixed an issue renaming MonoBehaviour classes when using Generic
   MonoBehaviour types
 * Coroutine anonymous types are now obfuscated by default

3.5.2 - 27th August 2020

 * Events on ScriptableObjects are now obfuscated

3.5.1 - 26th August 2020

 * Fixed renaming MonoBehaviour classes for MacOS builds (when not creating
   Xcode projects)
 * Renaming MonoBehaviour classes is no longer applied when creating Xcode
   project target builds

3.5.0 - 20th August 2020

 * The option to rename MonoBehaviour classes for standalone builds only
   (Windows, Linux, MacOS) has been extended to include 2018.2 onwards
 * Obfuscation of explicit interface implementation method names
 * Fixed a "Sequence contains no matching element" error that occurs when
   building to IL2CPP when explicitly forcing obfuscation of an enum

3.4.0 - 27th July 2020

 * Added option to rename MonoBehaviour classes for Unity 2020 (this is still an
   experimental feature!).
 * Disable option to rename MonoBehaviour classes for the WebGL build target.
 * Paths to DLLs are now accepted within the Assemblies and Compiled Assemblies
   section of options meaning it's not only custom scripts that can now handle
   external DLLs.
 * Updated documentation on guidance for compatibility with well known assets.
   Odin users in particular are encouraged to look at this if using AOT
   generation to prevent code stripping.

3.3.1 - 23rd July 2020

 * Fixed an issue with PlayFab's ExecuteCloudScriptRequest not being correctly
   sent.
 * Anonymous types are now skipped by default. Set a hidden option of
   options.obfuscateAnonymousTypes = true to override this if required.
 * Fixed an issue with [SuppressLog] not being applied to generated fake code.

3.3.0 - 17th July 2020

 * Reintroduced the option to rename MonoBehaviour classes for Unity 2019.3 and
   2019.4

3.2.1 - 17th June 2020

 * Unity reflection methods (such as SendMessage) are now properly detected when
   the 2nd and 3rd arguments of the reflection calls are complex.
 * A warning message is now logged should the Obfuscator fail to find the string
   reference for a Unity reflection method (for example a variable 1st
   argument).
 * A new attribute [SuppressLog] exists that can prevent certain warning
   messages from being printed.

3.2.0 - 15th June 2020

 * Faster obfuscation build times for very large projects.

3.1.2 - 9th June 2020

 * Fixed an issue with Inner/Nested classes and skip namespaces.

3.1.1 - 25th May 2020

 * Fixed a System.ArgumentNullException on build when obfuscating a string const
   assigned to be null.

3.1.0 - 3rd May 2020

 * A build exception is now thrown if the length of the salt used for name
   translation is too short.
 * New button that will regenerate the salt used for name generation.
 * New option to randomise the salt each build.
 * A new option to include the hash salt must now be enabled for it to appear in
   the name translation file.
 * String literals containing only null characters are no longer obfuscated.
 * Added 'Photon' to the list of namespaces to skip when using fresh settings.

3.0.1 - 10th March 2020

 * Potentially fixed the 'Copying assembly from '' to '' failed after builds.

3.0.0 - 10th March 2020

 * Namespaces whose name start with a skipped namespace no longer assume they
   should be skipped when skipping recursively (i.e. 'ABC' is no longer skipped
   when only 'AB' is specified, however AB.X would be skipped).
 * Namespaces whose name start with an explicitly obfuscated namespace no longer
   assume to be obfuscated when obfuscating recursively.
 * Classes that are the base class to a Serializable class are now also treated
   as Serializable.
 * Improvements to string literal obfuscation.
 * Updated the default options to include the following 'Unity Methods':
   OnJointBreak2D, OnParticleSystemStopped, OnParticleTrigger,
   OnParticleUpdateJobScheduled

2.8.1 - 8th January 2020

 * Visual Studio no longer reports a FormatException warning when obfuscating.
 * Fixed a UI issue with ObfuscatorOptions when 'Use RSA' is unselected.

2.8.0 - 18th November 2019

 * Compatibility with the Unity Test Framework for Unity 2019.3 onwards.

2.7.6 - 5th November 2019

 * Fixed a pipeline issue affecting Unity 2018.1

2.7.5 - 30th October 2019

 * Fixed a CRITICAL obfuscation bug introduced with Unity 2019.2.8 and newer on
   pipeline builds when enabling the option to obfuscate all assembly
   definitions.

2.7.4 - 20th October 2019

 * Fixed a CRITICAL obfuscation bug introduced with Unity 2019.2.8 and newer on
   pipeline builds. It is vital to install this version if using the latest
   versions of Unity.

2.7.3 - 12th October 2019

 * Added a Unity incompatibility warning due to a critical bug introduced by
   recent changes to the Unity build pipeline.

2.7.2 - 24th September 2019

 * Fixed an issue with calls to StopCoroutine.

2.7.1 - 5th September 2019

 * Nested classes declared to be skipped via the "Skip Classes" section of
   options are now correctly skipped when their parents are obfuscated.

2.7.0 - 1st September 2019

 * Prevented an issue that could lead to the Obfuscator not being run. As a
   result the build pipeline scripts have been restructured and are more robust.
 * Removed a warning message about duplicate method names that was only relevant
   to a legacy option that is no longer available.

2.6.0 - 3rd July 2019

 * Alternative attribute names can now be specified for the [Rename] attribute.

2.5.4 - 30th June 2019

 * Fixed a minor issue with nameTranslation.txt.
 * Added 'LapinerTools' to the default list of namespaces to skip.

2.5.3 - 4th June 2019

 * Updated the default options to be compatible with Photon Bolt (skipped some
   namespaces and classes).

2.5.2 - 18th May 2019

 * Fixed a namespace incompatiblity issue caused by using an obfuscated assembly
   within another project that uses Bolt 2.0.

2.5.1 - 25th April 2019

 * Fixed an IL2CPP build bug when referencing a generic type in another assembly
   definition as a parameter to a custom attribute.

2.5.0 - 19th April 2019

 * Added an option to remove specified custom attributes, defaulting to Unity
   attributes used to interact with the Unity IDE.
   If you are obfuscating assets to submit to the Unity Asset Store then please
   check that menus and Inspector windows still work as intended. If they don't
   then either remove elements from the new options list or [SkipRename] the
   methods that are called from the IDE.

2.4.2 - 18th March 2019

 * Fixed an error with string obfuscation.

2.4.1 - 17th March 2019

 * Fixed a NET 4.x issue (IL2CPP build error) with string obfuscation for some
   methods (dependant on size).

2.4.0 - 16th March 2019

 * Added a toggle to obfuscate development builds (default is true).
 * Fixed an exception when referencing a nested class type across multiple
   assembly definitions.

2.3.5 - 28th February 2019

 * Added Photon.Pun.PunRPC to the list of alternative RPC annotations (PUN2).

2.3.4 - 17th February 2019

 * Fixed a CheckedResolve exception on build.

2.3.3 - 30th January 2019

 * Fixed a rare case where an animation would fail to play.

2.3.2 - 5th December 2018

 * Adjusted the AssemblySelector.cs to cater for player-only native assemblies
   as well as future proof it against new base Unity packages being added.

2.3.1 - 27th November 2018

 * Fixed an IL2CPP issue brought about from 2.3.0

2.3.0 - 25th November 2018

 * Slightly improved obfuscation.
 * Fixed a runtime exception that could occur after obfuscating multiple
   assemblies.

2.2.0 - 13th November 2018

 * Optimisation - added option (Misc) to set the progress bar detail which can
   affect obfuscation time for large projects. By default this is now set to a
   summary view.

2.1.0 - 8th November 2018

 * Added option to allow/disallow 'public' fake code methods from being created.

2.0.11 - 3rd November 2018

 * Fixed issues with complex custom attributes.

2.0.10 - 29th October 2018

 * Fixed an error about duplicate types in Beebyte.Cecil (ECS related bug).

2.0.9 - 20th October 2018

 * Fixed a TypeLoadException for generic instance methods referencing obfuscated
   types from another assembly.
 * Fixed a TypeLoadException for custom attributes that had parameters of arrays
   of type definitions.

2.0.8 - 14th October 2018

 * Fixed a runtime MissingMethodException that could happen after obfuscating
   multiple assemblies.

2.0.7 - 9th October 2018

 * Fixed a TypeLoadException when using named arguments in custom attributes
   across assembly definitions.

2.0.6 - 28th September 2018

 * Fixed a "Mono.Cecil.ResolutionException: Failed to resolve FKENQJFIROA"
   exception that could happen when obfuscating multiple assembly definitions.

2.0.5 - 27th August 2018

 * Added Com.Google to the list of skipped namespaces, for Google Play Games
   compatibility.
 * Added a warning about renaming MonoBehaviour classes in 2018.2, until a
   fix/workaround can be found.

2.0.4 - 28th May 2018

 * Updated default settings for Photon Networking (PUN) to allow WebGL builds to
   log in, and to allow stronger obfuscation rules to be enabled.

2.0.3 - 23rd May 2018

 * Fixed a bug where the Options Inspector window would not save the 'enabled'
   or 'Obfuscate all assembly definition' checkboxes.
 * Relaxed the default options to only obfuscate Assembly-CSharp.dll instead of
   all assembly definitions. It is recommended to enable it when you're ready to
   increase obfuscation strength.

2.0.2 - 20th May 2018

 * [UWP] Implemented a workaround for a UnityException on build for the UWP
   build target.

2.0.1 - 13th May 2018

 * Fixed "dll was not found" errors for certain assembly definition files.

2.0.0 - 7th May 2018

 * New Documentation added in PDF format.
 * Assembly Definitions introduced in 2017.3 can now be automated into the build
   process.
 * New options added to automatically obfuscate all assembly definitions.
 * 'permanentDLLs' in Config.cs is now defined in the inspector options file
   under the heading 'compiledAssemblies' (synchronising with Unity's name in
   the CompilationPipeline).
 * 'temporaryDLLs' in Config.cs is now defined in the inspector options file
   under the heading 'assemblies' (synchronising with Unity's name in the
   CompilationPipeline).
 * extraAssemblyDirectories in Config.cs is now defined in the inspector options
   file.
 * Priority of nested "[System.Reflection.Obfuscation]/[Skip]/[SkipRename]/Skip
   Namespaces" etc is no longer undefined behaviour - instead priority is
   awarded to the deepest level.
 * Classes annotated with [System.Reflection.Obfuscation(ApplyToMembers=true)]
   (or [Skip]) will now also skip any nested classes.
 * New option to skip literal obfuscation on methods that have been skipped.
 * New option to apply literal obfuscation on all methods by default.
 * Public nested classes and nested enums are no longer obfuscated if the public
   checkbox is disabled for class obfuscation.
 * Fixed a "Fatal error in Unity CIL Linker" that could occur when running with
   'development' enabled build targets.
 * Obfuscating MonoBehaviour class names is no longer considered an experimental
   feature.

1.26.0 - 23rd September 2017

 * New options to give other attributes the same effect as Beebyte specific
   attributes. i.e. you can configure [JsonProperty] to have the additional
   effect of [SkipRename].

1.25.2 - 16th September 2017

 * Added ChartboostSDK to the list of Skipped Namespaces in the default options
   to fix a problem with delegates not being called.

1.25.1 - 7th September 2017

 * Fixed a bug with methods that have the [RuntimeInitializeOnLoadMethod]
   attribute.

1.25.0 - 24th August 2017

 * Reduced the memory footprint within the Editor following obfuscation.

1.24.12 - 2nd August 2017

 * Fixed issues with Attributes that take an inner class as a parameter.

1.24.11 - 27th July 2017

 * Fixed issues with Attributes that take a class as a parameter.

1.24.10 - 16th July 2017

 * Fixed a bug where an enum in a parameter as a default value from a second
   assembly would cause a failed resolution exception on a CheckedResolve.

1.24.9 - 13th July 2017

 * Fixed a bug breaking inheritence checks when generic types were nested within
   other generic types.

1.24.8 - 22nd June 2017

 * Added some exclusion for messages sent to UnityEditor classes.
 * Fixed an Object reference exception that could sometimes occur when
   obfuscating literals.

1.24.7 - 17th June 2017

 * Small bug fixes.

1.24.6 - 1st May 2017

 * Some Unity reflection calls are now found when using chained and complex
   arguments.
 * Compatibility fixes when linking with newer .NET versions.

1.24.5 - 26th April 2017

 * Fixed some errors that occurred when building with the old legacy procedural
   naming policy.
 * The stacktrace for any Obfuscator errors is visible once again.

1.24.4 - 13th April 2017

 * Fixed a rare ArgumentException that could happen if two fields in the same
   class share the same name.
 * Improved the build process.

1.24.3 - 8th April 2017

 * Optimisation when obfuscating MonoBehaviour class names.
 * Hidden option to obfuscate Beebyte attributes. This can help resolve imported
   types being defined multiple times (external DLLs).

1.24.2 - 17th March 2017

 * Fixed a rare TypeLoadException.
 * Fixed a "redefinition of parameter" error in IL2CPP when a delegate's
   parameter names are inferred from default declaration i.e. delegate { .. }
   instead of an explicit delegate(bool a, bool b) { .. }.

1.24.1 - 12th February 2017

 * Fixed a bug where a coroutine invoked by name from a different class would
   fail to execute if the coroutine is not annotated with [SkipRename] or
   [ReplaceLiteralsWithName]. This also fixes coroutines launched from within
   coroutines.

1.24.0 - 27th January 2017

 * Multiple DLLs can be simultaneously obfuscated by declaring them within
   Config.cs (new file). Endpoints in the referenced DLL are updated in the
   calling DLL. This new feature is experimental and has no interface.
 * Fixed a TypeLoadException that happened when a class extending an external
   class implements a custom interface that declares one of the external methods
   and where the implementing class doesn't override it.
 * Optimisation.

1.23.9 - 17th November 2016

 * Optimisation - Method obfuscation is now really quick compared to previous
   lengthy times seen with some projects that focused heavily on reflection
   (mostly NGUI).
 * Extra information added to the progress bar for method obfusation.
 * Forcing obfuscation on serialized fields with
   [System.Reflection.Obfuscation(Exclude=false)] was sometimes being ignored.

1.23.8 - 3rd November 2016

 * Added option to include fake code method names to the nameTranslation file.
 * Added new Attribute to exclude fake code being created from particular
   methods or classes.
 * Custom attributes now have their string arguments searched for when
   considering [ReplaceLiteralsWithName].
 * Added hidden option to provide canonical names of attributes to be searched
   for strings that add to the array of method names to be treated as
   [ReplaceLiteralsWithName].
 * Fixed a compile NullReferenceException under certain conditions when
   cryptographic hashes are disabled.
 * Fixed an ArgumentException that could occur when obfuscating literals using
   the simplified non-RSA algorithm.

1.23.5 - 4th September 2016

 * Fixed an IL2CPP compile error.

1.23.3 - 17th August 2016

 * Fixed a "NotSupportedException: The invoked member is not supported in a
   dynamic module." exception when using dynamically created libraries.
 * Fixed an IL2CPP compile error when fake code tries to clone extern methods.

1.23.1 - 8th August 2016

 * Improvements to fake code generation.

1.23.0 - 27th July 2016

 * Experimental new option to obfuscate MonoBehaviour class names.
 * New option to supply method names that will automatically have
   [ReplaceLiteralsWithName] applied.
 * New option to strip namespaces from the build.
 * New defaults added for third party assets NGUI and UFPS.
 * Upgrading to a new version will now prompt whether to keep old settings or
   replace them (This happens when you build).
 * Updated the default ObfuscatorMenuExample.cs file to no longer leave a
   progress bar hovering after obfuscation.
 * Added hidden options includeParametersOnPublicMethods and
   includeParametersOnProtectedMethods, set to true by default.

1.21.2 - 16th June 2016

 * New option to skip Enum constants (Useful shortcut if your enums often rely
   on ToString() as an alternative to using [Skip]).
 * Obfuscating now updates the build progress bar.
 * Added default configuration for Photon Networking compatibility.
 * Fixed a bug where obfuscation times could be extremely long when using Fake
   Code generation and when huge methods exist in the code.
 * Fixed missing scripts exceptions in WebPlayer builds that occurred when using
   Fake Code generation on methods that declare default arguments.

1.18.4 - 3rd June 2016

 * Classes annotated with [System.Reflection.Obfuscation(Exclude=false)] will
   now be obfuscated even if its namespace is explicitly skipped in Options.
 * Fixed a bug where iOS builds could fail to compile in Xcode® when using the
   default string literal obfuscation method
   (options.useSimplifiedObfuscateLiterals=true provides a temporary fix before
   this release).
 * Fixed a bug with string literal obfuscation where a string of length greater
   than 1/8th the chosen RSA key length would appear garbled.

1.18.1 - 23rd May 2016

 * Optimisation.
 * New default option to derive obfuscated names from a cryptographically
   generated hash. This means names will be consistent throughout a project's
   lifecycle, removing the need to maintain up to date nameTranslation.txt
   files.
 * New attribute [ObfuscateLiterals] for methods that instructs all string
   literals within it to be obfuscated, without requiring delimiters within the
   literals.
 * New option to toggle whether attributes should be cloned for fake methods.
 * New "Preserve Prefixes" section that can keep part of a name, i.e.
   OnMessage_Victory() => OnMessage_yzqor(). This is mostly for the reflection
   used by Opsive's UFPS asset.
 * New default option to reverse the line order of the nameTranslation.txt.
 * New option to surround every obfuscated name with a specified delimiter.
 * Parameter obfuscation is now included in the nameTranslation.txt.
 * Fixed an ArgumentOutOfRangeException that could occur when the minimum number
   of fake methods is set to a large value.

1.16.2 - 1st April 2016

 * ScriptableObject classes are now treated as Serializable by default (i.e.
   fields and properties are not renamed). This can be overriden by setting
   options.treatScriptableObjectsAsSerializable to false, or on a case-by-case
   basis by making use of [System.Reflection.Obfuscation] on each field, or
   [System.Reflection.Obfuscation(Exclude = false, ApplyToMembers = true)] on
   the class.
 * Fixed a TypeLoadException for methods such as public abstract T Method()
   where a deriving class creates a method replacing the generic placeholder,
   i.e. public override int Method().
 * Added hidden option for classes to inherit Beebyte attributes Skip and
   SkipRename that are on an ancestor class. To use, set
   options.inheritBeebyteAttributes = true prior to obfuscation.

1.16.0 - 10th March 2016

 * Added an option to obfuscate Unity reflection methods instead of simply
   skipping them. In time this will become the default.
 * Methods replacing string literals that share the same name now also share the
   same obfuscated name, so that replaced literals correctly point to their
   intended method.
 * Faster obfuscation time for methods.
 * Fixed a TypeLoadException.
 * The name translation file now has a consistent order.

1.15.0 - 25th February 2016

 * Added option to search SkipNamespaces recursively (this was the default
   behaviour)
 * Added option to restrict obfuscation to user-specified Namespaces.
 * Added a master "enabled" option to easily turn obfuscation on/off through
   scripts or the GUI.
 * Add Fake Code is now available for WebPlayer builds.
 * Added option to include skipped classes and namespaces when searching for
   string literal replacement via [ReplaceLiteralsWithName] or through the RPC
   option.
 * Fixed a bug where classes within skipped namespaces could sometimes have
   their references broken if they link to obfuscated classes.
 * Fixed a NullReferenceException that could sometimes (very rarely but
   consistently) occur during the write process.
 * Future-proofing against errors that would otherwise occur if a new version of
   Mono.Cecil is shipped with Unity.
 * Fixed a "UnityException: Failed assemblies stripper" exception that occurs
   when selecting both fake code and player preference stripping levels.
 * Improvements to Fake Code generation.

1.12.0 - 12th February 2016

 * Added finer control to exclude public or protected classes, methods,
   properties, fields, events from being renamed.
 * Fixed a bug in the Options inspector that could revert some changes after an
   option's array's size is altered.

1.11.0 - 3rd February 2016

 * Added an option to specify annotations that should be treated in the same way
   as [RPC], to cater for third party RPC solutions.

1.10.0 - 28th January 2016

 * Previous obfuscation mappings can now be reused.
 * Unity Networking compatibility (old & new).
 * [RPC] annotated methods are no longer renamed unless an explicit
   [Rename("newName")] attribute is added, or if an option is enabled.
 * A new [ReplaceLiteralsWithName] attribute exists that can be applied to
   classes, methods, properties, fields, and events. It should be used with
   caution since it searches every string literal in the entire assembly
   replacing any instance of the old name with the obfuscated name. This is
   useful for certain situations such as replacing the parameters in
   nView.RPC("MyRPCMethod",..) method calls. It may also be useful for
   reflection, but note that only exact strings are replaced.

1.9.0 - 23rd January 2016

 * Added a new option "Skip Classes" that is equivalent to annotating a class
   with [Skip]. It's a good long-term solution for 3rd party assets that place
   files outside of a Plugin directory in the default namespace.
 * Added a way to resolve any future AssemblyResolutionExceptions via the
   Postscript.cs file without requiring a bespoke fix from Beebyte.
 * Fixed a bug in Postscript.cs for Unity 4.7
 * Added a workaround for an unusual Unity bug where the strings within the
   Options asset would sometimes be turned into hexadecimals, most noticable
   when swapping build targets often.

1.8.4 - 7th January 2016

 * Fixed an AssemblyResolutionException for UnityEngine that could sometimes
   happen during the Write process.
 * Various rare fixes for generics.
 * Properties can now be assigned Obfuscation attributes such as [Rename], etc.

1.8.1 - 1st January 2016

 * Various fixes for generics.
 * Fixed an AssemblyResolutionException for UnityEngine.UI when using interfaces
   from that assembly. This also fixes other extension Unity assemblies that
   have issues resolving.
 * Feature - Properties can be be obfuscated.

1.7.3 - 29th December 2015

 * Fixed TypeLoadException errors.
 * Fixed a "Script behaviour has a different serialization layout when loading."
   error.
 * Undocumented fix.
 * Private Fields marked with the [SerializeField] attribute are now preserved
   by default.

1.7.0.1 - 14th December 2015

 * Unity® 5.3 compatibility.

1.7.0 - 11th December 2015

 * Improved the "Works first time" experience by searching for reflection
   methods referenced by certain Unity® methods such as StartCoroutine. New
   option added to disable this feature.
 * WebPlayer support (string literal obfuscation, public field obfuscation, fake
   code are disabled for WebPlayer builds).
 * Added an option to strip string literal obfuscation markers from strings when
   choosing not to use string literal obfuscation.
 * ObfuscatorMenuExample.cs added showing how you can Obfuscate other dlls from
   within Unity®.
 * Added protection against accidently obfuscating the same dll multiple times.
 * Added an advanced option to skip rename of public MonoBehaviour fields.

1.6.1 - 16th November 2015

 * First public release.

PRIVACY CONTACT

Unity is a trademark of Unity Technologies.

Android, Google Play and the Google Play logo are trademarks of Google Inc.

Xcode is a trademark of Apple Inc.

© 2015-2023 Beebyte Limited. Registered in England and Wales No. 9489207. All
Rights Reserved.