2010-01-08 27 views
57

Ich plane, ein kleines, günstiges Dienstprogramm zu veröffentlichen. Da dies mehr Hobby als Geschäft ist, plante ich Dotfuscator Community Edition, die mit VS2008 ausgeliefert wird.Wie gut ist die Dotfuscator Community Edition? Was ist "gut genug obfuscator"?

Wie gut ist das?

Ich könnte auch die Definition von "gut genug obfuscator" verwenden - welche Funktionen fehlen in Dotfuscator Community Edition, um es gut genug zu machen.

Edit:

I Preise auf Anzahl kommerzieller obfuscators geprüft und sie kosten viel. Ist es das wert?

Sind kommerzielle Versionen viel besser vor Reverse Engineering geschützt?

Ich habe keine große Angst, dass meine Anwendung geknackt wird (es wird enttäuschend sein, wenn die Anwendung so schlecht ist, dass niemand daran interessiert ist, sie zu knacken). Es ist sowieso nicht stark geschützt, nicht übermäßig komplexe serielle Schlüssel und Lizenzprüfungen an wenigen Stellen im Code. Es stört mich nur, dass jemand ohne Verschleierung leicht Quellcode bekommen, ihn rebrandieren und als sein eigenes verkaufen kann.

Ist das viel passiert?

Edit 2:

Kann jemand kommerziellen obfuscator empfehlen. Ich fand viele von ihnen, alle von ihnen sind teuer, einige haben sogar keinen Preis auf der Website aufgeführt.

Funktionsweise scheinen alle Produkte mehr oder weniger ähnlich.

Was ist der minimale Satz an Funktionen, die der Obfuscator haben sollte?

Antwort

49

Kurz gesagt besteht der Hauptunterschied zwischen der Dotfuscator Community Edition und den anderen "professionellen" Editionen darin, dass die Community Edition Ihre Namespaces, Methodennamen und andere "öffentliche" Aspekte Ihrer Klassen nur verschleiert und verändert. Es wird nicht in die Funktionen selbst eintauchen und den "privaten" Code innerhalb der Funktion verschleiern.

Auch die Community Edition tut nichts, um Dinge wie den Kontrollfluss innerhalb Ihrer Anwendung zu verschleiern, noch wird Code aus mehreren Assemblies zu einer Assembly "kombiniert". Dies sind Funktionen, die in den "professionellen" kostenpflichtigen Versionen verfügbar sind.

Der beste Vergleich zwischen der Community Edition (die „freie“ Version, die mit Visual Studio kommt) und den „Profi“, einbezahlten für Ausgaben kann, indem man die beiden folgenden Links zu finden:

Preemptive Dotfuscator Editions Comparison

Dotfuscator Community Edition 3.0 on MSDN

der MSDN-Link ist etwas veraltet, aber eine viel bessere Erklärung der tatsächlichen Merkmale gibt, die in den verschiedenen Ausgaben von Dotfuscator zur Verfügung stehen.

EDIT:

Gewerbe obfuscators Sie viel Geld kosten, und wie wether sie sind das Geld wert?Nun, das ist ein Urteilsspruch, den wirklich nur Sie treffen können. Persönlich würde ich sagen, dass es sich in Ihrem Szenario nicht lohnt. Erstens, weil Sie nur eine Anwendung schützen wollen ("Ich habe vor, ein kleines, kostengünstiges Dienstprogramm zu veröffentlichen"), und zweitens sagen Sie, dass Sie nicht allzu sehr damit beschäftigt sind, dass die Anwendung "geknackt" wird ("I"). Ich habe keine große Angst davor, dass meine Anwendung geknackt wird. ").

Ich verstehe, wie es Sie hindern kann, dass kompilierte .NET-Anwendungen ohne jede Verschleierung einfach auf ihren ursprünglichen Quellcode zurückentwickelt werden können, und dass jemand davon Gebrauch machen kann, um Ihre Software zu stehlen und sie als ihre eigene zu verkaufen Es bleibt jedoch die Tatsache, dass Software-Piraterie existiert und Sie werden es wahrscheinlich nie stoppen.

Der Versuch, Software-Piraterie zu stoppen, wurde ad-nausem sowohl hier (Stack Overflow) und über das Internet diskutiert. Der allgemeine Konsens scheint zu sein, dass Sie Ihre Zeit und Ihre Energie mehr darauf konzentrieren müssen, Ihr Produkt so gut wie möglich zu machen, anstatt zu versuchen, etwas zu schützen, das bei genügend Zeit/Geld ein " Angreifer "knacken"/stehlen trotzdem Ihre Software, trotz aller Bemühungen, dies zu verhindern.

Kommt das viel vor?

Ich würde sagen, dass es wahrscheinlich viel weniger passiert, als Sie denken. Sicher, Software wird geknackt, aber ich glaube nicht, dass zu viele Leute den Quellcode von anderen wirklich stehlen und ihn komplett neu vermarkten, um ihn als sein eigenes zu verkaufen. Ich sage nicht, dass es nicht oder nicht passiert ist, aber es ist sicherlich kein häufiges Vorkommnis.

Zusammenfassend würde ich sagen, dass Ihre beste Wette wäre, sich darauf zu konzentrieren, Ihr Dienstprogramm so groß wie möglich zu machen und den kostenlosen Dotfuscator-Obfuscator zu verwenden, da es sehr wenig Zeit/Geld erfordert, um Ihre zu verschleiern Code aus den offensichtlichsten neugierigen Augen, aber verlieren Sie keinen Schlaf über die Tatsache, dass, wenn jemand Ihr Produkt/Code schlimm genug zu knacken/stehlen will, werden sie tun.

+0

Beachten Sie, dass der PreEmptive-Link auf CE-Features verweist, die in der Version geliefert werden, die mit Visual Studio 2010 ausgeliefert wird. Diese Version weist einige erweiterte Funktionen auf, die mit VS2008 geliefert werden. – mletterle

+0

Danke für Infos. Ich habe die Frage bearbeitet. Möchten Sie weitere Fragen kommentieren? – zendar

+0

@mletterle - Sehr guter Punkt. Ich hatte die Erwähnung von VS 2010 am Ende der Seite nicht bemerkt, aber ich wusste, dass PreEmptive den Abschnitt "Editionen vergleichen" ihrer Website aktualisiert hatte. – CraigTP

11

Ich denke, Dotfuscator Community Edition mit Visual Studio ausgeliefert ist eine ziemlich naive Lösung. Es bietet nur Symbolumbenennung und verschleiert den Kontrollfluss überhaupt nicht. Und wenn jemand beschließt, Ihren Code zu stehlen, muss er nur alle Namen umstrukturieren, was mit einer kleinen Menge an Klassen ziemlich einfach ist.

Auch Sie können sich auf nicht so perfekte Dekompilierung von Reflector verlassen (es macht normalerweise Switch-Blöcke, macht viele gotos, Mismatch wenn-else Blöcke, etc.).

Aber ich schlage vor, Sie versuchen Eziriz .NET Reactor. Es kostet nur 179 $ (AFAIK besten Preis/Ausstattung-Verhältnis). Es bietet standardmäßige Verschleierungstechniken wie Symbolumbenennung, String-Verschlüsselung und Kontrollflussverschleierung. Als guten Bonus erstellt es native Launcher für Ihre App, die Ihre Haupt-Assembly und alle Referenzen von Drittanbietern enthält, die bei Bedarf verschlüsselt und geladen werden. Außerdem bietet es einige Lizenzierungsfunktionen.

Wie auch immer die Umkehrung der .NET-Anwendung ist nicht so schwer, ich habe es zum Spaß und kann sagen, dass es nur eine Frage von Zeit und Geld (und natürlich gesundem Menschenverstand) ist, wie schnell Ihre Anwendung geknackt oder umgekehrt wird.

+0

Alles außer Symbolumbenennung kann automatisch verehrt werden. Siehe https://bitbucket.org/0xd4d/de4dot/ – Console

+0

stimme ich absolut zu. Aber das ist der schwierigste Teil. –

8

Als Minimum sollte ein obfuscator haben:

  1. String-Verschlüsselung
  2. Symbol Umbenennung
  3. Kontrollfluss Verschleierungs

Gute Eigenschaften zu haben, sind:

  1. Ressourcenschutz
  2. Assembly verschmelzenden/
  3. externe Methodenaufruf Einbetten versteckt
  4. Fähigkeit zur auto-Zeichen verschleierten Baugruppen
  5. Unterstützung für Satelliten-Baugruppen
  6. Toter-Code Elimination
  7. Meta-Datenreduktion
  8. Anti- Decompiler (Reflektor)
  9. Anti-Tamper
  10. Anti-Debugging

Werfen Sie einen Blick auf unsere Crypto Obfuscator Produkt, das alle diese unterstützt.

+0

Ich stimme dir zu Logicnp. Und die Dotfuscator-Community unterstützt keine Zeichenfolgenverschlüsselung. –

5

Eine andere Möglichkeit, um Reverse-Engineering-Code zu umgehen ist, wo Sie Ihre DLLs platzieren, wenn Sie nicht wirklich Obfuscatoren leisten können, die Unterstützung hinzufügen. Und in Ihren Assemblies vor der Bereitstellung sagen Sie dem Compiler, wo Sie nach ihnen suchen sollten, was eine alte Praxis war, die das Reverse Engineering behinderte. Aber wie es schon gesagt wurde, konzentrieren Sie sich hauptsächlich auf die Entwicklung eines ausgezeichneten Produkts und gute Programmierpraktiken, dann werden Sie in der Lage sein, sich eine schöne Obfuscator-Anwendung in der Zukunft leisten zu können. Versuchen Sie auch, sich nicht viel Sorgen darüber zu machen, dass andere Ihren Code knacken, denn die meisten Hacker knacken Code, finden einfach einen Weg, das Produkt zu benutzen, ohne dafür zu bezahlen und nicht Code zu stehlen oder für Programmierer zu lernen. Yeah, ich wünschte, JIT würde nur C# und vb.net unterstützen, was das Reverse Engineering sehr beeinträchtigt hätte, aber da jit viele lesen kann, weil .net wirklich sprachfreundlich ist, ist das der Preis. Also Code weg und etwas Geld verdienen, kaufen Sie einige zusätzliche Wertpapiere.

Verwandte Themen