J'aimerais savoir comment la salamandre fait ce qu'elle fait? Je vais inclure quelques points im particulièrement intéressés parSalamander .NET Linker - Comment ça marche?
-
Lien à la demande
L'éditeur de liens commence par les méthodes d'entrée (que vous pouvez configurer), et des promenades récursive l'appel graphique pour lier uniquement les bits requis du code MSIL. Le code non utilisé ne sera pas lié à l'assemblage final. Par conséquent, votre code devient plus efficace et la taille du fichier diminue.
-
lien dans API cadre
L'éditeur de liens est si puissant que même les ensembles de Microsoft .NET Framework, comme System.Windows.Forms.dll, peuvent être liés dans vos propres assemblages .NET. Comme il est lié à la demande, seule la partie requise sera liée. Ceci est très utile pour protéger votre code, le déploiement d'applications simples et le dépannage en déboguant dans le code du framework lui-même.
-
Compliation natif
Le compilateur natif convertit tous les ensembles gérés, y compris les ensembles de système, en code natif x86. Aucune instruction MSIL ne sera envoyée, aucune compilation JIT lors de l'exécution. Cela fournit la meilleure protection contre le désassemblage et la décompilation, et améliore également les performances et le temps de démarrage.
-
Déploiement simple et rapide sans installation complète de Microsoft .NET Framework
L'outil mini-déploiement met ensemble l'ensemble minimal de fichiers d'exécution CLR et ensembles dépendants qui peuvent être simplement copié dans un seul dossier sur une machine cible, et votre application s'exécute comme si tout le framework était installé. Puisque l'installation est isolée dans un seul dossier, il n'y aura aucun conflit avec l'installation future de .NET. Lorsque la liaison est utilisée pour les assemblages dépendants, elle réduit davantage la taille du fichier.
-
Code de protection Il y a un problème aucun des adresse obfuscators actuelle, qui est, peu importe la qualité du obscurcissement est, il y a des appels à la bibliothèque du système et d'autres références externes dispersés dans votre code (voir en rouge ci-dessous). Puisque ces appels sont des références externes, les obfuscateurs devront les laisser inchangés. Cependant, ces références aident beaucoup à comprendre le code décompilé, car ils sont bien documentés et les API publiques.L'éditeur de liens supprime ou réduit ces API publiques en liant les API du framework dans votre propre code, ce qui rend votre code beaucoup plus difficile à décompiler après l'obfuscation. Ci-dessous montre l'exemple de code MSIL avant et après l'utilisation de l'éditeur de liens.
avant: (pas obfuscators sont en mesure de renommer le code suivant, car ils sont des API publiques externes)
IL_0000: ldarg.0
IL_0001: call instance void [System.Windows.Forms]System.Windows.Forms.Form::.ctor()
IL_0006: ldarg.0
IL_0007: newobj instance void [System.Windows.Forms]System.Windows.Forms.TextBox::.ctor()
IL_000c: stfld class [System.Windows.Forms]System.Windows.Forms.TextBox A.A::A
IL_0011: ldarg.0
IL_0012: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox A.A::A
IL_0017: call valuetype [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color::get_Cyan()
IL_001c: callvirt instance void [System.Windows.Forms]System.Windows.Forms.TextBoxBase::set_BackColor(valuetype [System.Drawing]System.Drawing.Color)
IL_0021: ldarg.0
après: (absolument aucune API de Windows.Forms d'indice sont utilisés, un haut obstacle à un pirate de comprendre cette ordure )
IL_0000: ldarg.0
IL_0001: call instance void a.A::.ctor()
IL_0006: ldarg.0
IL_0007: newobj instance void D.c::.ctor()
IL_000c: stfld class D.c A.A::A
IL_0011: ldarg.0
IL_0012: ldfld class f.aA.A::A
IL_0017: call valuetype a.B()
IL_001c: callvirt instance void D.c(valuetype g.e)
IL_0021: ldarg.0
Certaines de ces choses me chicane , et je me demandais si quelqu'un d'autre savait comment tout cela a fonctionné?
Je suis désolé, mais il y a à peine une question ici. Cela ressemble vraiment à une publicité shill pour Salamander. –