mirror of
https://github.com/JessSystemV/zProtect.git
synced 2025-03-08 10:10:58 +00:00
330 lines
7 KiB
Markdown
330 lines
7 KiB
Markdown
# Configuration Options
|
|
|
|
## Introduction
|
|
|
|
zProtect uses the [YAML](https://en.wikipedia.org/wiki/YAML) data serialization language for configuring the behavior of the zProtect obfuscator. It is possible to hand-write the configuration file to upload on the web interface, however, you may wish to modify the [example file](#example) or generate one using the [command line tool](./commandline.md).
|
|
|
|
## Value Types
|
|
There are a few value types used in the zProtect configuration, which are listed below.
|
|
|
|
### Boolean
|
|
Only accepts `true` and `false` as the value.
|
|
|
|
For example:
|
|
```yaml
|
|
# A key with value as true
|
|
key1: true
|
|
|
|
# A key with value as false
|
|
key2: false
|
|
```
|
|
|
|
### String
|
|
Accepts any text character.
|
|
|
|
For example:
|
|
```yaml
|
|
# A key with a string value
|
|
key: value
|
|
```
|
|
|
|
### String Array
|
|
A list of [`strings`](#string), separated by a newline and prefixed with a dash.
|
|
|
|
For example:
|
|
```yaml
|
|
# An array with entries
|
|
key:
|
|
- something
|
|
- another thing
|
|
|
|
# An empty array
|
|
empty: []
|
|
```
|
|
|
|
### Simple Option
|
|
A [`string array`](#string-array) with a [`boolean`](#boolean) value `enabled`.
|
|
|
|
For example:
|
|
```yaml
|
|
# Option enabled
|
|
key:
|
|
enabled: true
|
|
```
|
|
|
|
### Option with Path
|
|
A [`string array`](#string-array) with a [`boolean`](#boolean) key `enabled` and a [`string`](#string) key `path`.
|
|
|
|
For example:
|
|
```yaml
|
|
# Option enabled
|
|
key:
|
|
enabled: true
|
|
path: something
|
|
```
|
|
|
|
|
|
## Options
|
|
These options specify runtime information and general configuration.
|
|
|
|
### libraries
|
|
Dependencies required to obfuscate your jar to prevent "Not found" errors.
|
|
|
|
Value type: [`string array`](#string-array)
|
|
|
|
### exclusions
|
|
Class files and directories that should be ignored by the obfuscator. They will not have any obfuscation applied to them.
|
|
|
|
Value type: [`string array`](#string-array)
|
|
|
|
### ForceExclusions
|
|
::: tip Note
|
|
Transformer priority will fix this in the future.
|
|
:::
|
|
Class files and directories that should be blacklisted by the obfuscator before processing. This will prevent issues with exclusions if the regular exclusions fail for some unknown reason.
|
|
|
|
Value type: [`string array`](#string-array)
|
|
|
|
### Watermark
|
|
Adds a watermark to the obfuscated JAR for advertisement. Only removable for users with a Commercial License.
|
|
|
|
Value type: [`boolean`](#boolean)
|
|
|
|
## Transformers
|
|
These options specify wherether to enable available obfuscation techniques.
|
|
|
|
### AntiDebug <Badge type="warning" text="incompatibilities" vertical="top" />
|
|
::: tip Warning!
|
|
This option may cause issues with certain programs.
|
|
:::
|
|
|
|
Blocks debugging options on terminal.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### DecompilerCrasher <Badge type="danger" text="issues" vertical="top" />
|
|
::: tip Warning!
|
|
This option is very buggy at the moment and will likely cause problems.
|
|
You are strongly advised not to use this.
|
|
:::
|
|
|
|
Manipulates instructions to crash decompilers.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### BadAnnotationCrasher
|
|
Manipulates annotations to break bad decompilers. This should not cause any major issues.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### Flow
|
|
Adds fake jumps, and such to code.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
## Renamers
|
|
Renames various components of your JAR's contents.
|
|
|
|
### ClassRenamer
|
|
Renames class files.
|
|
|
|
Value type: [`option with path`](#option-with-path)
|
|
|
|
### FieldRenamer
|
|
Renames field names.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### LocalVariableRenamer
|
|
Renames local variables.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### MethodRenamer
|
|
Renames methods.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
## Optimization
|
|
Modifies or removes various aspects of your jar file to make debugging harder.
|
|
|
|
### EnumOptimiser
|
|
Removes all clone call(s) and returns an array to optimize enum values.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### FinalRemover
|
|
Removes finals from your code.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### HideClassMembers
|
|
Mark classes as synthetic to hide them from bad decompilers.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### InsnRemover
|
|
Removes the instructions `const_.` and `tableswitch`.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### KotlinMetadataRemover
|
|
Removes Kotlin-specific Metadata such as `NotNull`, `Nullable`, etc.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### NOPInsnRemover
|
|
Removes extended type information.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### RemoveSignatures
|
|
Removes the signature attribute from classes and methods.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
## Poolers
|
|
Move values into an array to make the resulting JAR harder.
|
|
|
|
### NumberPooler
|
|
Moves numbers into an array.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### StringPooler
|
|
Moves strings into an array.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
## Shrinking
|
|
Remove various attributes to make it harder to understand the resulting JAR.
|
|
|
|
### LineNumberRemover
|
|
Removes line numbers so StackTraces show `(Unknown)` on errors.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### LocalVariableRemover
|
|
Removes the local variable attribute from methods.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### RemoveInnerClasses
|
|
Removes various attributes such as `outerClass`, `outerMethod`, etc. from the class.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### SourceDebugRemover
|
|
Removes the `SourceDebug` attribute from the class.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### SourceFileRemover
|
|
Removes the `SourceFile` attribute from the class.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
## Shufflers
|
|
Randomly shuffles various elements of your jar file to make it more difficult to find them.
|
|
|
|
### ShuffleFields
|
|
Randomly shuffles elements in the mutable list of fields.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### ShuffleMethods
|
|
Randomly shuffles elements in the mutable list of methods.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
### ShuffleClasses
|
|
Randomly shuffles elements in the mutable list of classes.
|
|
|
|
Value type: [`simple option`](#simple-option)
|
|
|
|
## Example
|
|
Below is a fully functional example configuration file with some zProtect transformers enabled and some disabled.
|
|
|
|
```yaml
|
|
# zProtect Configuration File Version 1
|
|
# Reference: https://docs.zprotect.dev/config.html
|
|
|
|
# May cause issues with certain programs.
|
|
antiDebug:
|
|
enabled: false
|
|
|
|
# Strongly advised not to use this.
|
|
decompilerCrasher:
|
|
enabled: false
|
|
|
|
badAnnotationCrasher:
|
|
enabled: true
|
|
|
|
flow:
|
|
enabled: false
|
|
|
|
classRenamer:
|
|
enabled: false
|
|
path: ""
|
|
|
|
fieldRenamer:
|
|
enabled: false
|
|
|
|
localVariableRenamer:
|
|
enabled: false
|
|
|
|
methodRenamer:
|
|
enabled: false
|
|
|
|
# Optimization
|
|
enumOptimiser:
|
|
enabled: false
|
|
|
|
finalRemover:
|
|
enabled: false
|
|
|
|
hideClassMembers:
|
|
enabled: false
|
|
|
|
insnRemover:
|
|
enabled: false
|
|
|
|
kotlinMetadataRemover:
|
|
enabled: false
|
|
|
|
NOPInsnRemover:
|
|
enabled: false
|
|
|
|
removeSignatures:
|
|
enabled: false
|
|
|
|
# Poolers
|
|
numberPooler:
|
|
enabled: false
|
|
|
|
stringPooler:
|
|
enabled: false
|
|
|
|
# Shrinking
|
|
lineNumberRemover:
|
|
enabled: false
|
|
|
|
localVariableRemover:
|
|
enabled: false
|
|
|
|
removeInnerClasses:
|
|
enabled: false
|
|
|
|
sourceDebugRemover:
|
|
enabled: false
|
|
|
|
sourceFileRemover:
|
|
enabled: false
|
|
|
|
# Shufflers
|
|
shuffleFields: false
|
|
|
|
shuffleMethods: false
|
|
|
|
shuffleClasses: false
|
|
``` |