Bonjour,
Je vous propose un nouvel �l�ment � utiliser : ConfuserEx
ConfuserEx est un projet open source cod� en C#, il permet de prot�ger vos applications cod� en DotNet.
Qu'en pensez-vous ?
Bonjour,
Je vous propose un nouvel �l�ment � utiliser : ConfuserEx
ConfuserEx est un projet open source cod� en C#, il permet de prot�ger vos applications cod� en DotNet.
Qu'en pensez-vous ?
Bonjour,
Il aurait �t� bien de pr�ciser contre quoi cela prot�ge
A priori, il s'agit d'obfusquer le code. Quel(s) atout(s) par rapport � des solutions d�j� existantes ?
Bonsoir Dorinf,
Avant toute chose ConfuserEx est le successeur du tr�s renomm� Confuser, et il est Open source donc modifiable � souhait pour peu que l'on respecte sa licence (MIT). Donc �a c'est un principal atout.
Ensuite, je vois d�j� venir les remarques du genre il ne prot�ge rien du tout car de4dot et d'autres outils home made permettent de rendre visible certaines portions de codes ....... Un obfuscateur dotnet n'a jamais eu la vocation de prot�ger un code source mais de le rendre un poil moins compr�hensible aux yeux de ceux qui souhaiteraient s'approprier la logique du projet ! Ceux qui stockent des informations sensibles dans leur projet et utilisent un obfuscateur pour �viter qu'on ne les voit n'ont absolument rien compris....... il existe des techniques plus �volu�es pour se pr�munir de cela en h�bergeant une portion du code sensible sur un serveur et en proc�dant � des requ�tes s�curis�es.....
Brefff..... je ne suis pas l� pour vendre un produit mais pour partager un projet opens source qui fait ses preuves compar� � d'autres �diteurs.
Voil� en quelques mots les fonctionnalit�s de ConfuserEx :
- Anti Debug, Anti ILDASM
Cela permet d'�viter tout profilage, d�bogage ou analyse statique de l'assembly (gr�ce aux APIs manag�s et non manag�s et antinet de 0xd4d)
- Anti Dump
Cela emp�che de r�cup�r� l'assembly charg�e en m�moire.
Cette protection produit des modules non v�rifiables.
- Anti IlDasm
Cette protection marque le module avec un attribut (SuppressIldasmAttribute) afin que ILDasm ne monte pas l'assembly.
- Anti Tamper (Encryption de M�thodes)
Cette protection assure l'int�grit� de l'application.
Elle crypte les m�thodes avec la somme de contr�le de l'ensemble du module pour s'assurer que le module ne sera charg� que si aucune modification n'a �t� apport�e � celui-ci.
--> Mode : Ce param�tre d�finit la mani�re dont ConfuserEx d�crypte les m�thodes. Les valeurs prises en charge sont:
*Normal : ConfuserEx valide la somme de contr�le et d�chiffre les m�thodes au lancement de l'application.
*Jit: ConfuserEx valide la somme de contr�le au d�but de l'application et d�crypte les m�thodes juste avant que chaque m�thode soit compil�e � l'aide de hooks JIT. (Probablement Incompatibile avec les futures version de .NET Framework. A Utiliser avec pr�cautions)
--> Key : Ce param�tre d�finit la mani�re dont ConfuserEx d�rive la cl� de d�cryptage. Les valeurs prises en charge sont:
*Normal: ConfuserEx utilise des algorithmes statiques avec des param�tres al�atoires pour d�river la cl� de d�chiffrement.
*Dynamic: ConfuserEx utilise des algorithmes g�n�r�s dynamiquement pour d�river la cl� de d�cryptage.
- Constantes :
Cette protection code et compresse des constantes (nombres, cha�nes et initialiseurs) dans le code.
--> Mode : Ce param�tre d�finit la mani�re dont ConfuserEx encode les constantes. Les valeurs prises en charge sont:
*Normal : ConfuserEx utilise des algorithmes statiques avec des param�tres al�atoires pour encoder les constantes.
*Dynamique : ConfuserEx utilise des algorithmes g�n�r�s dynamiquement pour encoder les constantes.
*X86 : ConfuserEx utilise dynamiquement des expressions g�n�r�es en native x86 pour encoder les constantes. (Produit des modules non v�rifiables)
--> DecoderCount : Ce param�tre est une valeur enti�re d�finissant combien de d�codeur constant ConfuserEx g�n�re. La valeur par d�faut est 5.
Comme chaque d�codeur a de l�g�res diff�rences, plus de d�codeurs rendraient le d�codage manuel des constantes par les attaquants plus ennuyeux, mais la taille du fichier de sortie augmenterait.
--> �l�ments : Ce param�tre d�finit quel type de constantes doivent �tre encod�es. Les valeurs possibles sont une combinaison de:
*S: Constantes de cha�ne (� l'exclusion des constantes primitives)
*N: Constantes num�riques (� l'exclusion des constantes primitives)
*P: Les constantes primitives (cha�nes vides et num�ros couramment utilis�s, par exemple 0, -1, 1, 2, etc.)
*I: Array initialisation (ceux utilisant RuntimeHelpers.InitializeArray)
La valeur est insensible � la casse. Par exemple, une valeur de "SI" indique des cha�nes non vides et les initialiseurs sont encod�s. La valeur par d�faut est "SI".
--> Cfg : Ce param�tre est une valeur bool�enne si le d�codage des constantes est bas� sur une variable d'�tat d�pendant du flux de contr�le. La valeur par d�faut est False.
L'activation de cette fonctionnalit� am�liore consid�rablement la r�sistance de la protection, mais la performance d'ex�cution pourrait avoir un impact.
- Control Flow Protection :
Cette protection d�forme le code dans le corps des m�thodes afin que les d�compileurs ne puissent pas d�compiler les m�thodes.
--> Type : Ce param�tre d�finit comment ConfuserEx manipule le code des m�thodes. Les valeurs prises en charge sont:
*Switch: ConfuserEx ins�re une machine d'�tat de base de commutateur pour r�organiser le code.
*Jump : ConfuserEx ins�re des sauts dans les m�thodes pour produire le code spaghetti traditionnel. (Produit des modules non v�rifiables)
--> Pr�dicat : Ce param�tre d�finit comment ConfuserEx stocke la variable d'�tat. Les valeurs prises en charge sont:
*Normal : ConfuserEx utilise la variable d'�tat directement.
*Expression : ConfuserEx code la variable d'�tat � l'aide d'expressions g�n�r�es dynamiquement.
*X86: ConfuserEx code la variable d'�tat � l'aide d'expressions x86 natives g�n�r�es dynamiquement. (Produit des modules non v�rifiables)
--> Intensit� : Ce param�tre est une valeur enti�re de 0 � 100, indique la taille de chaque bloc de code fractionn�. La valeur par d�faut est 60.
--> Depth : Ce param�tre d�finit la profondeur de l'expression g�n�r�e si predicate est d�fini sur expression ou x86. La valeur par d�faut est 4.
--> Junk : Ce param�tre est une valeur bool�enne qui indique si des codes ind�sirables sont ins�r�s. La valeur par d�faut est False. (Produit des modules non v�rifiables)
- Invalid Metadatas :
Cette protection ajoute des m�tadonn�es non valides aux modules pour emp�cher le d�sassemblage ou le d�compilateur de les ouvrir.
- Renommage :
Cette protection occultent le nom des symboles de sorte que le code source d�compil� ne peut ni �tre compil� ni lu.
--> Mode : Ce param�tre d�finit la mani�re dont ConfuserEx renomme les symboles. Les valeurs prises en charge sont:
*Empty : ConfuserEx renomme tous les symboles en une cha�ne vide.
Attendez-vous � de nombreux probl�mes lors de l'utilisation de ce mode.
*Unicode: ConfuserEx renomme les symboles en caract�res Unicode illisibles.
La r�flexion peut ne pas fonctionner dans ce mode.
*Ascii: ConfuserEx renomme les symboles en caract�res ASCII lisibles.
La r�flexion peut ne pas fonctionner dans ce mode.
*Lettres: ConfuserEx renomme les symboles en lettres anglaises.
*D�codable: ConfuserEx renomme les symboles en cha�ne d�codable. Le mappage de nom brouill� est enregistr� dans le dossier de sortie dans le fichier "symbols.map".
*S�quentiel: ConfuserEx renomme les symboles en cha�ne s�quentielle. Le mappage de nom brouill� est enregistr� dans le dossier de sortie dans le fichier "symbols.map".
*R�versible: ConfuserEx crypte les symboles. Les noms brouill�s peuvent �tre d�cod�s en fournissant le mot de passe utilis� dans l'obfuscation.
*Debug: ConfuserEx ajoute un caract�re "underscore" de soulignement avant les symboles. Non destin� � la production.
--> Password : valeur de cha�ne, indique le mot de passe ConfuserEx doit utiliser pour chiffrer les noms de symboles lorsque le mode r�versible est utilis�. Seulement efficace sur les modules.
--> RenameArgs : valeur bool�enne, indique si ConfuserEx doit supprimer le nom des param�tres des m�thodes.
--> Flatten : valeur bool�enne, indique si ConfuserEx doit aplatir les types en supprimant les espaces de noms.
--> ForceRen : valeur bool�enne, indique si ConfuserEx doit renommer les symboles m�me si l'analyseur indique qu'il ne doit pas �tre renomm�.
--> RenPublic : valeur bool�enne, indique si ConfuserEx doit renommer les symboles m�me si l'�l�ment est visible en dehors de l'assembly.
--> RenPdb : valeur bool�enne, qui indique si ConfuserEx doit renommer les noms de variables et les noms de fichiers dans PDB.
- References Proxy (types, m�thodes et champs) :
Cette protection encode et cache les r�f�rences des types, m�thodes et champs.
--> Mode : d�finit la mani�re dont ConfuserEx cache les r�f�rences. Les valeurs prises en charge sont:
*L�ger : ConfuserEx ajoute une m�thode d'indirection comme proxy.
*Strong: ConfuserEx ajoute un d�l�gu� de m�thode dynamique comme proxy.
*Ftn: ConfuserEx utilise le pointeur de fonction comme proxy.
--> Encoding : d�finit la mani�re dont ConfuserEx code les r�f�rences de m�thode. Les valeurs prises en charge sont:
*Normal : ConfuserEx utilise des algorithmes statiques avec des param�tres al�atoires pour encoder les r�f�rences.
*Expression : ConfuserEx utilise des expressions g�n�r�es dynamiquement pour encoder les r�f�rences.
*X86: ConfuserEx utilise des expressions natives x86 g�n�r�s dynamiquement pour encoder les r�f�rences. (Produit des modules non v�rifiables)
--> Internal : valeur bool�enne, indique si ConfuserEx doit �galement masquer les r�f�rences internes.
--> TypeErasure : valeur bool�enne, indique si ConfuserEx doit masquer les types de param�tres de m�thode.
*Depth : d�finit la profondeur de l'expression g�n�r�e si le codage est d�fini sur expression ou x86.
*InitCount : d�finit le nombre d'initiateurs d�l�gu�s � ajouter si le mode est d�fini sur strong. La valeur par d�faut est 16.
- Resources :
Cette protection encode et compresse les ressources int�gr�es.
- Packer :
Ce packer r�duit la taille du fichier de sortie en utilisant l'algorithme de compression LZMA. Un seul module ex�cutable peut �tre dans le projet et il est utilis� comme module d'entr�e principal.
--> Key : d�finit la mani�re dont ConfuserEx d�rive la cl� de d�cryptage. Les valeurs prises en charge sont:
*Normal: ConfuserEx utilise des algorithmes statiques avec des param�tres al�atoires pour d�river la cl� de d�chiffrement.
*Dynamic: ConfuserEx utilise des algorithmes g�n�r�s dynamiquement pour d�river la cl� de d�cryptage.
--> Compat : valeur bool�enne, indique si ConfuserEx doit utiliser le mode de compatibilit� qui fonctionne avec Mono.
Merci pour cette description plus que d�taill�e![]()
Partager