ConfuserEx projects (*.crproj) is an XML formatted document describing the ConfuserEx project.
For details of the format, please refer to the XML schema at Confuser.Core\Project\ConfuserPrj.xsd
.
Element project
is the root element of the project document.
Attributes:
outputDir
:
The directory which ConfuserEx stores the output files.
baseDir
:
The base directory of all relative path used in the project document.
If this attribute value is also a relative path, the result depends on the implementation.
In the offical implementation (Confuser.CLI), it would be based on the location of project file.
seed
:
The seed of the random generator in protection process.
debug
:
Indicates whether the debug symbols (*.pdb) are generated.
Currently unused.
Elements:
rule
:
The global protection rules applied to all modules.
Optional.
packer
:
The packer setting.
Optional.
Currently unused.
module
:
The settings of individual modules.
probePath
:
The directories in which ConfuserEx searches for dependencies.
Element module
describes the settings of individual modules.
Attributes:
path
:
The path of the module.
snKey
:
The path to the Strong Name Key used to sign the module.
Optional.
snKeyPass
:
The password of the SNK if a PFX container is used in snKey
.
Optional.
Elements:
rule
:
The protection rules applied to the module.
Element rule
describes a rule that determine how the protections are applied.
Attributes:
inherit
:
Indicates whether this rule inherits the settings from the previous rules.
Default to true
.
pattern
:
The pattern expression used to match the target components of this rule.
preset
:
The protection preset of the rule.
Possible values are none
, minimum
, normal
, aggressive
and maximum
.
Default to none
.
Elements:
protection
:
The protection settings.
Element protection
and packer
describe the settings of individual protection/packer.
Attributes:
action
:
Indicates whether the protection are to be added or removed from settings.
Possible values are add
and remove
.
Default to add
.
id
:
The identifier of the protection/packer.
Elements:
argument
:
The arguments that passed to the protection.
Optional.
An argument that is passed to a protection.
Attributes:
name
:
The name of the argument.
value
:
The value of the argument.
The rules are applied from global rules (in project
element) to local rules (in module
element), from begin to end.
ConfuserEx will keep a list of protections for every items, and applies the rules in order.
For each rules, ConfuserEx will do:
- If the item does not match with the rule's pattern, skip the rule.
- If the rule does not inherit previous settings (i.e. no
inherit
), clear the marking on the item. - Mark the items with the protections contained in the specified
preset
value of the rule. - For each protection settings in the rule:
- If
action
is remove, remove the protection from the marking. - If
action
is add, add the protection settings to marking.
The pattern is a simple function-based expression that evaluated for every items. If it is evaluated to true
, the item is matched with the pattern.
Here are some example expressions:
true
: Matches all items.
name('X')
: Matches all items that has name 'X'.
member-type('type') and full-name('NS.Type')
: Matches types that have full name 'NS.Type'.
ConfuserEx projects that work for ILSpy and PaintDotNet can be found under additional
directory as examples.