String Encryption
String Encryption — Options
The String Encryption — Options panel controls the encryption of strings, the encryption techniques, and allows you to control the location where the decryption method is placed.
Encrypt Strings
Enables or disables string encryption obfuscation globally. You can control the portions of the application to which string encryption is applied by using include and exclude rules. If you do not specify any rules then all methods will have their strings encrypted.
Level
This control selects the level of string encryption to use. Level 1
uses a simple and fast decryption technique while level 10
uses a more complex but slower technique. Increasing this value configures DashO to use various expressions to increase the complexity of decompilation as well as adding randomness factors to the implementation of decryption methods. The default level is 2
.
Decrypters
This controls the number of decryption methods that will be generated and added to classes included in each output. The names and signatures of the methods are randomly selected (except when using an input file). The default number of methods is 2
.
Note:
If you want decrypters to be placed globally (not kept internal to the jars where they are used) add a User Property namedINJECT_DECRYPTERS_GLOBALLY
and set it totrue
.
Decrypter Class
This setting lets you specify criteria that control which classes may serve as outer classes for generated anonymous static inner classes that will house the decrypters. If you do not specify any value, DashO will choose a class from the public classes in the inputs. To change the selection criteria click the Edit button to bring up a properties dialog.
Note:
If you specify criteria, the decrypters will be injected based on that criteria and will be used without regards to jar boundaries.
Input
The map input file specified is a file created by a previous DashO run. Using this file, DashO creates the same decrypters used in the previous run. This is necessary for an incremental obfuscation. It is used in addition to the renaming map file. When an input file is provided, settings for the level and number of decrypters and the decrypter class criteria will be ignored.
Output
The information created in this file can be used for the map input file in a future DashO run. It stores information about the types of decrypters, the method names used, and the classes where they were placed.
String Encryption — Include and Exclude
The String Encryption Include and Exclude panels let you compose rules that determine which parts of the application will have strings encrypted. Methods, classes, or entire packages can be selected. Since string encryption adds a size and runtime performance cost, you can selectively include parts of you application where sensitive string information is located or exclude sections where performance may be impacted by the runtime decryption.
See Graphical Rules Editor for details.
Custom Encryption
The Custom Encryption panel lets configure your own encryption/decryption methods to be used. This allows you to provide your own level of encryption. See Using Custom Encryption for the requirements of the encryption and decryption methods.
Use Custom Encryption
Enables or disables the use of custom encryption obfuscation globally. You can control the portions of the application to which custom string encryption is applied by using include rules. You must specify at least one rule for custom encryption to work.
Encryption Jar
The jar containing the encryption class and method. This jar is external to your project. It will be used to encrypt strings while obfuscating.
Encryption Class and Method
The class and method used to encrypt the text. This method will not be part of the output. Clicking Choose… will bring up a dialog with all the methods inside the encryption jar, which match the requirements.
Decryption Class and Method
The class and method used to decrypt the text. These classes must be part of the project inputs. The class and method you specify will remain in your output (but may be renamed/obfuscated based on other project settings). Clicking Choose… will bring up a dialog with all the methods from the inputs, which match the requirements.
Custom Encryption — Include
The Custom Encryption Include panels let you compose rules that determine which parts of the application will have strings encrypted using the custom encryption. Methods, classes, or entire packages can be selected. This should be considered a subset of overall string encryption. Any class/method specified here must not be excluded from string encryption.
See Graphical Rules Editor for details.