web-dev-qa-db-fra.com

Comment utiliser ConfuserEx?

J'aimerais essayer ce programme mais je n'arrivais pas à comprendre comment l'utiliser.

J'ai cherché sur le site de l'auteur https://github.com/yck1509/ConfuserEx mais l'exemple sur ce site n'est pas assez clair pour quelqu'un de nouveau dans la programmation comme moi.

Je poste donc ma question ici dans l'espoir que quelqu'un me montre comment l'utiliser en anglais simple et avec quelques exemples. Ce serait tellement génial et très apprécié.

31
andrewfam

Obtenez la dernière version des binaires à partir d'ici: https://github.com/yck1509/ConfuserEx/releases

Pour une utilisation en ligne de commande (Confuser.CLI.exe):

Confuser.CLI.exe  myProjectFile.crproj

Exemple de fichier de projet:

<?xml version="1.0" encoding="utf-8"?>
<project baseDir="c:\" outputDir="c:\Confused" xmlns="http://confuser.codeplex.com">
    <rule preset="none" pattern="true">
        <protection id="anti debug" />
        <protection id="anti dump" />
        <protection id="anti ildasm" />
        <protection id="anti tamper" />
        <protection id="constants" />
        <protection id="ctrl flow" />
        <protection id="invalid metadata" />
        <protection id="ref proxy" />
        <protection id="rename" />
        <protection id="resources" />
    </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>

cmd line

Format de fichier de configuration: https://github.com/yck1509/ConfuserEx/blob/master/docs/ProjectFormat.md

Pour une utilisation avec l'interface graphique (ConfuserEx.exe):

gui

  1. Dans l'onglet Projet
    1. Choisissez un répertoire de base
    2. Cliquez sur le bouton + pour ajouter des DLL (modules)
  2. Dans l'onglet Paramètres
    1. Cliquez sur <Paramètres globaux>
    2. Cliquez sur le bouton +. Une nouvelle règle est ajoutée. Lorsque le modèle correspond, la règle est exécutée, donc "True" signifie que la règle sera toujours exécutée.
    3. Cliquez sur le bouton Modifier.
    4. Choisissez le préréglage "Maximum" puis fermez
  3. Dans l'onglet Protéger
    1. Cliquez sur Protéger!
62
Naster

Cette réponse couvre les cas où vous avez une solution avec (A) plusieurs projets qui peuvent se référencer les uns les autres, et (B) vous cherchez à automatiser l'obscurcissement dans un projet d'installation de Visual Studio.

1) Ajoutez sur chacun de vos projets un fichier texte Confuser.crproj, directement dans le dossier du projet. Dans ce dossier, vous devriez voir à l'intérieur des dossiers "bin", "ob", "resources", etc. Il y a non besoin de joindre ces fichiers à votre solution dans Visual Studio. Le fichier texte doit ressembler à ceci:

<?xml version="1.0" encoding="utf-8"?>
<project baseDir="obj\Release" outputDir="..\Release" xmlns="http://confuser.codeplex.com">
    <rule preset="none" pattern="true">
        <protection id="anti debug" />
        <protection id="anti dump" />
        <protection id="anti ildasm" />
        <protection id="anti tamper" />
        <protection id="constants" />
        <protection id="ctrl flow" />
        <protection id="invalid metadata" />
        <protection id="ref proxy" />
        <protection id="resources" />
    </rule>
    <module path="MyLibrary.dll" />
    <probePath>..\..\bin\Release</probePath>
</project>

Remplacez MyLibrary.dll pour la sortie de votre projet. (Et remplacez .dll par .exe s'il s'agit d'un exécutable.)

ConfuserEX choisit différents points de départ pour les chemins relatifs, c'est pourquoi les chemins semblent étranges dans le fichier.

L'élément clé de cette étape est d'obscurcir la sortie "obj" de chacun de vos projets. C'est pour aider votre projet d'installation de Windows à récupérer les versions obscurcies.

2) Dans l'événement post-build de chacun de vos projets, ajoutez un événement post-build comme celui-ci:

if "$(ConfigurationName)" == "Release" $(SolutionDir)..\ConfuserEX\Confuser.CLI.exe $(ProjectDir)Confuser.crproj

La première condition est de ne masquer que lors de la construction dans Release. Ici, vous devrez ajuster les chemins pour qu'ils correspondent au chemin de votre Confuser.CLI.exe. J'ai mon dossier ConfuserEX à côté du dossier racine de la solution.

3) Dans votre projet d'installation, le problème que nous devons résoudre est de s'assurer que l'emballage récupère vos versions obscurcies. Le programme d'installation a une logique obscure pour décider à partir de quel dossier chaque assembly est récupéré. Nous le forcerons à choisir les bons. Pour cela, vous devez:

(3a) ajoutez tous vos projets en tant que "Sortie de projet", cela garantit que les fichiers obscurcis dans vos dossiers "obj" arrivent dans le package.

(3b) vérifiez la section "dépendances détectées" de votre projet d'installation. Chaque fois que vous voyez une dépendance générée par l'un de vos projets, accédez à ses propriétés et marquez-la comme Exclude = True. Cela garantit que vos versions obscurcies dans le package ne sont pas remplacées par des versions non obscurcies en raison du processus d'inférence.

2
integrative.io

Pour toute autre personne aux prises avec des problèmes: je l'ai téléchargée et le maître n'a pas le dnlib. Vous pouvez télécharger séparément le dnlib le copier dans le dossier dnlib et ensuite le compiler.

Cela devrait fonctionner pour la plupart, mais pour moi contre mon exe, cela a donné une erreur de "format de dos incorrect" sur n'importe quel exe. Pensé peut-être depuis que j'avais mis à jour vers vs2015 et 4.5.3 (.net 5 ou 6 ou comme ils veulent l'appeler maintenant). J'ai pensé que c'était peut-être ça. mais ce n'était pas le cas (la compilation la plus élevée était de 4,5).

En regardant sur Google, je supposais qu'il ne pouvait pas mettre à jour les fichiers, donc j'ai passé 1 heure + à convertir les tuples de votre classe en .net 4 tuples. et mettre à jour tous les projets en 4.5.

Si vous le pouvez, vous devez vérifier votre fork github et cliquer sur télécharger puis compiler .. il devrait compiler à partir du site et ne le fait pas. Je suis sûr que c'est un excellent produit. Juste un peu difficile car il n'est pas fait pour les juniors. Peut-être pourriez-vous simplement avoir un lien vers un EXE? Cela peut aider les gens à ne pas traiter les problèmes de compilation.

Btw vraiment de bonnes choses, on dirait que cela fait beaucoup de choses, même celles payées ne font pas seulement un peu de courbe sur l'apprentissage.

Une autre note, il semble que vous ayez une RuntimeEnvironment.GetSystemVersion()[1] == 4 dedans, elle devrait probablement être (avec quelques analyses) RuntimeEnvironment.GetSystemVersion()[1] > 3.9 donc vous obtenez 4 et 4,5

**mise à jour. Mis à jour à 4.5 et le glisser-déposer a cessé de fonctionner, fonctionne toujours comme vous l'avez décrit ci-dessus. allait avec 4.5.3 mais vous n'utilisez aucune des nouvelles fonctionnalités.

Ce que je me suis retrouvé, je le modifierai plus tard pour indiquer si cela fonctionne. https://OneDrive.live.com/redir?resid=88D92E4D40C0593C%21105

Aller avec ci-dessus.

2
Mark Rowe