added readme
This commit is contained in:
Родитель
9e120dff55
Коммит
00a0b8a9c2
|
@ -0,0 +1,23 @@
|
|||
ConfuserEx is licensed under MIT license.
|
||||
|
||||
----------------
|
||||
|
||||
Copyright (c) 2014 yck1509
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,144 @@
|
|||
ConfuserEx Project Format
|
||||
=======================
|
||||
|
||||
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`
|
||||
-----------------
|
||||
|
||||
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`
|
||||
----------------
|
||||
|
||||
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`
|
||||
--------------
|
||||
|
||||
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 RegEx pattern 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`
|
||||
---------------------------------
|
||||
|
||||
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.
|
||||
|
||||
|
||||
Applying rules
|
||||
--------------
|
||||
The rules are applied from local to global, from begin to end.
|
||||
ConfuserEx will keep a list of protections for every components, and applies matching rules in order.
|
||||
|
||||
For each rules, ConfuserEx will do:
|
||||
|
||||
1. If the component does not match with the rule's pattern, skip the rule.
|
||||
2. If the rule does not inherit previous settings (i.e. no `inherit`), clear the current protection list.
|
||||
3. Fill the protection list with the protections contained in the specified `preset` value of the rule.
|
||||
4. For each protection settings in the rule:
|
||||
5. If `action` is remove, remove the protection from the list.
|
||||
6. If `action` is add, add the protection settings to the list.
|
||||
|
||||
The value of the component that used to match with rules' patterns is basically the full name provided by dnlib.
|
||||
Here's some examples:
|
||||
|
||||
Type: `Namespace.Type/NestedType`
|
||||
Method: `System.Void Namespace.Type::Method<!!0,!!1>(System.String,System.Int32)`
|
||||
Field: `System.String Namespace.Type::Field`
|
||||
Property: `System.String Namespace.Type::Property`
|
||||
Indexer: `System.String Namespace.Type::Items(System.Int32)`
|
||||
Event: `System.EventHandler Namespace.Type::Event`
|
||||
|
||||
Examples
|
||||
----------------
|
||||
ConfuserEx projects that are working for ILSpy and PaintDotNet can be found under `additional` directory as examples.
|
|
@ -0,0 +1,45 @@
|
|||
ConfuserEx
|
||||
========
|
||||
ConfuserEx is a open-source protector for .NET applications.
|
||||
It is the successor of [Confuser](http://confuser.codeplex.com) project.
|
||||
|
||||
Features
|
||||
--------
|
||||
* Supports .NET Framework 2.0/3.0/3.5/4.0/4.5
|
||||
* Symbol renaming
|
||||
* Protection against debuggers/profilers
|
||||
* Protection against memory dumping
|
||||
* Control flow obfuscation
|
||||
* Reference hiding proxies
|
||||
* Extensible plugin API
|
||||
* Many more are coming!
|
||||
|
||||
Usage
|
||||
-----
|
||||
`Confuser.CLI <path to project file>`
|
||||
|
||||
The project file is a ConfuserEx Project (*.crproj).
|
||||
The format of project file can be found in ProjectFormat.md
|
||||
|
||||
Bug Report
|
||||
----------
|
||||
If your application does not work with ConfuserEx, feel free to submit a bug report!
|
||||
|
||||
If you decided to submit a bug report, please include the following information:
|
||||
|
||||
1. The version of ConfuserEx you are using.
|
||||
2. The protection and packer settings you used.
|
||||
3. The input and output sample files that does not work.
|
||||
If you can't disclose the application, you can try reducing it to a minimum case that does not work in ConfuserEx,
|
||||
or you can sent it to me through email to <confuser.net@gmail.com> if you prefer not to disclose it publicly.
|
||||
4. If it sometimes works and sometimes does not work, it might be better to include the seed since ConfuserEx uses random mechanism in protection.
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
See LICENSE file for details.
|
||||
|
||||
Credits
|
||||
-------
|
||||
**[0xd4d](http://bitbucket.org/0xd4d)** for his awesome work and extensive knowledge!
|
||||
Members of **[Black Storm Forum](http://board.b-at-s.info/)** for their help!
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project baseDir="." outputDir="Confused" xmlns="http://confuser.codeplex.com">
|
||||
<rule preset="none" pattern=".*">
|
||||
<protection id="rename">
|
||||
<argument name="mode" value="unicode" />
|
||||
</protection>
|
||||
<protection id="anti ildasm" />
|
||||
<protection id="anti debug" />
|
||||
<protection id="rename">
|
||||
<argument name="mode" value="unicode" />
|
||||
</protection>
|
||||
<protection id="ref proxy" />
|
||||
<protection id="ctrl flow" />
|
||||
</rule>
|
||||
<module path="ICSharpCode.AvalonEdit.dll" />
|
||||
<module path="ICSharpCode.Decompiler.dll" />
|
||||
<module path="ICSharpCode.NRefactory.dll" />
|
||||
<module path="ICSharpCode.NRefactory.CSharp.dll" />
|
||||
<module path="ICSharpCode.NRefactory.VB.dll" />
|
||||
<module path="ICSharpCode.TreeView.dll" />
|
||||
<module path="ILSpy.BamlDecompiler.Plugin.dll" />
|
||||
<module path="ILSpy.exe" />
|
||||
<module path="ILSpy.SharpDevelop.LGPL.dll" />
|
||||
<module path="Mono.Cecil.dll" />
|
||||
<module path="Mono.Cecil.Pdb.dll" />
|
||||
</project>
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project baseDir="." outputDir="Confused" xmlns="http://confuser.codeplex.com">
|
||||
<rule preset="none" pattern=".*">
|
||||
<protection id="rename">
|
||||
<argument name="mode" value="unicode" />
|
||||
</protection>
|
||||
<protection id="anti ildasm" />
|
||||
<protection id="anti debug" />
|
||||
<protection id="rename">
|
||||
<argument name="mode" value="unicode" />
|
||||
</protection>
|
||||
<protection id="ref proxy" />
|
||||
<protection id="ctrl flow" />
|
||||
</rule>
|
||||
<rule preset="none" pattern="PaintDotNet.Menus\..*Menu(|Item|Base)$">
|
||||
<protection id="rename" action="remove" />
|
||||
</rule>
|
||||
<rule preset="none" pattern="PaintDotNet.Menus\..*Menu::menu.*$">
|
||||
<protection id="rename" action="remove" />
|
||||
</rule>
|
||||
<rule preset="none" pattern="PaintDotNet.Tools\..*Tool(|Base)$">
|
||||
<protection id="rename" action="remove" />
|
||||
</rule>
|
||||
<rule preset="none" pattern="PaintDotNet.IndirectUI\..*PropertyControl.*\(\)$">
|
||||
<protection id="rename" action="remove" />
|
||||
</rule>
|
||||
<module path="PaintDotNet.Base.dll" />
|
||||
<module path="PaintDotNet.Core.dll" />
|
||||
<module path="PaintDotNet.Data.dll" />
|
||||
<module path="PaintDotNet.Effects.dll" />
|
||||
<module path="PaintDotNet.exe" />
|
||||
<module path="PaintDotNet.SystemLayer.dll" />
|
||||
</project>
|
Загрузка…
Ссылка в новой задаче