Frage

Sie Klasse, Methode und Variable Namen in der MSIL bekommen enthalten , nachdem ein Windows-App-Projekt in eine EXE-Datei kompilieren?

  • Verschleierungs -. Weniger Namen, härter Reverse Engineering
  • Und für Leistung -. Kürzere Namen, einen schnelleren Zugriff

z Also, wenn Methoden über Namen genannt werden.

  • Halten Sie Namen kurz , eine bessere Leistung für Named-Lookup.
  • Halten Sie Namen kryptischen , härter zu dekompilieren.
War es hilfreich?

Lösung

Ja, sie sind in der IL - Feuer Reflector und Sie‘ ll sehen, wie sie. Wenn sie nicht in der IL am Ende war, konnte man nicht gegen sie als Bibliotheken bauen. (Und ja, können Sie EXE-Dateien verweisen, als ob sie Klassenbibliotheken waren.)

Dies ist jedoch alles auf einmal in JIT aufgelöst wird.

Halten Sie Namen lesbar , so dass Sie in der Lage sein werden, den Code in der Zukunft aufrecht zu erhalten. Das Performance-Problem ist unwahrscheinlich zu machen alle messbarer Unterschied, und wenn Sie Ihren Code verschleiern wollen, tun Sie es nicht an der Quellcode-Ebene (wo du bist die man den Code zu lesen.) - tun sie es mit einem eigens errichteten obfuscator

EDIT: Wie für das, was enthalten ist - warum nicht einfach starten Reflector oder ildasm und herausfinden? Aus dem Gedächtnis verlieren Sie lokale Variablennamen (die in der PDB-Datei, wenn Sie es bauen), aber das ist es. Private Methode Namen und private Variablennamen sind immer noch da.

Andere Tipps

Ja, sie tun. Ich glaube nicht, dass es durch die Verwendung kürzeren Namen bemerkenswerte Leistungssteigerung sein. Es gibt keine Möglichkeit, dass der Gewinn, den Verlust der Lesbarkeit überwindet.

Lokale Variablen werden nicht in MSIL enthalten. Felder, Methoden, Klassen usw. sind. Variablen werden Index.

Mitgliedsname bekommen in dem IL enthalten, ob sie privat oder öffentlich sind. In der Tat, alle Ihre Code wird zu enthalten, und wenn Sie Reflektor verwenden möchten, können Sie praktisch den gesamten Quellcode der Anwendung lesen. Was bleibt, ist das Debuggen der App, und ich denke, es könnte Werkzeuge für das sein.

Sie müssen ABSOLUT (und ich kann es gar nicht genug betonen) verschleiern Code, wenn Sie verpackt Anwendungen sind zu machen, die eine Reihe von Kunden und den Wettbewerb haben. Zum Glück gibt es eine Reihe von obfuscators zur Verfügung.

Dies ist ein wichtiger Kritikpunkt, den ich mit .Net haben. Da MS ist so viel harte Arbeit auf diese Weise entwickeln, warum nicht (oder erwerben) eine professionelle obfuscator und machen, dass ein Teil von VS. Dotfuscator einfach nicht schneiden, nicht die Version sie haben für Gemeinschaft.

  
      
  • Halten Sie Namen kurz, besser   Leistung für Named-Lookup.
  •   

Wie könnte dies einen Unterschied machen? Ich bin mir nicht sicher, wie Identifikatoren werden von der VM nachgeschlagen, aber ich bin mir ziemlich sicher, dass es nicht einen geraden String-Vergleich-Lookup. Dies wäre der denkbar schlechteste Weg, es zu tun.

  
      
  • Halten Sie Namen kryptisch, härter zu dekompilieren.
  •   

Um ehrlich zu sein, ich glaube nicht, Code-Verschleierung hilft viel. Die meisten zuständigen Entwickler gab es aus bereits entwickelten einen „sechsten Sinn“ Dinge herauszufinden schnell selbst wenn Bezeichner wie Methodennamen völlig nutzlos sind, da sehr oft der Quellcode müssen sie bereits halten oder zu verbessern hat diese Probleme (ich über Methodennamen spreche wie "DoAllStuff ()").

Wie auch immer, Sicherheit durch Unklarheit ist in der Regel eine schlechte Idee, .

Wenn Sie sind besorgt über die Verschleierung Check-out .NET Reactor. Getestet habe ich 8 verschiedene obfuscators und Reaktor war nicht nur die günstigste kommerzielle ein, es war das zweite beste der Gruppe (die beste war die teuerste, Dotfuscator Gold).

[EDIT]

Eigentlich jetzt, dass ich daran denke, wenn alles um dich kümmern ist Methodennamen Verschleiern dann derjenige, der mit VS.NET kommt, Dotfuscator Community Edition, sollte okay sein.

Ich glaube, sie hinzugefügt, aber die Länge des Namens ist nichts los zu beeinflussen, wegen der Art, die Funktionsnamen oben sind aussahen. Wie für Verschleierung, ich denke, es gibt Werkzeuge (Dotfuscator oder so ähnlich), die genau im Grunde tun, was Sie sagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top