Dies ist ein Problem, das wir alle irgendwann in Betracht ziehen müssen.Softwareschutz für kleine Anbieter
Nach vielen Jahren und vielen Ansätzen stimme ich generell mit der Staterment überein: "Für jede geschützte Software, die von mehr als ein paar hundert Menschen verwendet wird, kann man eine gekrackte Version finden. Bis jetzt kann jedes Schutzschema sein manipuliert." Does your employer enforce the use of anti-piracy software?
Weiter, jedes Mal, wenn ich über dieses Thema post, wird jemand mich erinnern; "Zuallererst, egal, welche Art von Schutz Sie verwenden werden, wird ein wirklich engagierter Cracker schließlich durch alle Schutzbarrieren kommen." What's the best value for money c# code protection for a single developer
Also, trotz dieser zwei weitgehend zutreffenden Disclaimer, lassen Sie uns über "Schutz" reden!
Ich fühle immer noch, dass für kleinere apps, die unwahrscheinlich sind, die Zeit und die Aufmerksamkeit eines erfahrenen Crackers, Schutz ist eine lohnende Übung.
Es scheint offensichtlich, dass egal, was Sie tun, wenn der Cracker das Ergebnis einer IF-Anweisung (JMP) durch Patchen der Anwendung wechseln kann, dann werden alle Passwörter und Dongles in der Welt nicht helfen.
So hat mein Ansatz gewesen, wie Sie den Code mit Virtualisierung mit Produkten zu verschleiern: http://www.oreans.com/codevirtualizer.php Ich habe mit diesem Produkt sehr zufrieden. Meines Wissens ist es nie besiegt worden. Ich kann sogar die ausführbare Datei mit PEcompact komprimieren Hat jemand Erfahrung damit?
Hatte nichts als Probleme mit EXEcryptor http://www.strongbit.com/news.asp Auch die Website ist ein Kopfschmerz zu verwenden. Die kompilierten Apps stürzen beim Ausführen von WMI-Anrufen ab.
Dieser Ansatz ermöglicht es Ihnen, mit der Verschleierung kleinere Codeabschnitte zu umgeben und somit die Sicherheit schützen Überprüfung usw.
I Nutzen Sie das Online Genehmigungskonzept, da die Anwendung regelmäßig Daten vom Server benötigt, so dass es keinen Sinn macht, für den Benutzer, um es für längere Zeit offline zu verwenden. Per Definition ist die App zu diesem Zeitpunkt wertlos, auch wenn sie geknackt ist.
So ein einfacher verschlüsselter Handshake ist viel gut. Ich überprüfe es nur gelegentlich innerhalb des Verschleierungsschutzes. Wenn der Benutzer die App auf einem anderen Computer installiert, wird beim Start eine neue ID hochgeladen, und der Server deaktiviert die alte ID und gibt eine neue Berechtigung zurück.
Ich benutze auch einen Hash der kompilierten App und überprüfen Sie es beim Start um zu sehen, ob ein einzelnes Bit geändert hat, dann öffnen Sie die App als Datei (mit einem LOCK) aus der App, um zu verhindern, dass jemand es einmal ändert gestartet.
Da alle statischen Zeichenfolgen in der EXE-Datei deutlich sichtbar sind, versuche ich generische mit Fehlermeldungen und so weiter. Sie werden die Zeichenfolge "Autorisierung fehlgeschlagen" nirgendwo finden.
Zum Schutz gegen Speicherauszüge verwende ich eine einfache Textverschleierungstechnik (wie XOR jedes Zeichen) Dies macht Klartextdaten im Speicher schwieriger von Variablen und so weiter zu unterscheiden.
Dann gibt es natürlich AES für alle Daten, die wirklich empfindlich sind.Ich mag den Counter-Modus für Text, weil dadurch keine sich wiederholenden Sequenzen entstehen, die darunterliegende Daten wie eine Folge von Leerstellen offenbaren.
Aber mit all diesen Techniken, wenn der Key oder der Initialisierungsvektor aus dem Speicher ausgegeben oder die IF-Anweisung umgangen werden kann, ist alles verschwendet.
Ich neige dazu, eine switch-Anweisung anstelle einer bedingten Anweisung zu verwenden. Dann erstelle ich eine zweite Funktion, die im Grunde eine Sackgasse ist, anstelle der Funktion, die tatsächlich die gewünschte Aufgabe ausführt.
Eine andere Idee besteht darin, Zeiger mit einer hinzugefügten Variablen zu codieren. Die Variable ist das Ergebnis der Autorisierung (normalerweise Null). Dies wird irgendwann zu einem GPF führen. Ich benutze dies nur als letzten Ausweg, nachdem ein paar niedrigere Berechtigungen gescheitert sind, sonst könnten echte Benutzer darauf stoßen. Dann ist der Ruf Ihrer Software geringer.
Welche Techniken verwenden Sie?
(dies ist kein Gewinde die Verdienste der Umsetzung etwas diskutieren. Es ist für diejenigen geeignet, die etwas zu tun haben beschlossen)
Als ich in einem Hacker-Forum eine Frage zu einigen derzeit verfügbaren Software-Schutz-Tools stellte, sagte man: "Über Code Virtualizer habe ich einen CodeUnvirtualizer erstellt, um virtuelle Opcodes vollständig in Assembler-Sprache umzuwandeln". So wurde Code Virtualizer tatsächlich besiegt. Aber nachdem ich das gesagt habe, ist es das Werkzeug, das ich wählen werde, um ASProtect zu ersetzen. Die meisten anderen Programme fügen einfach viel zu der exe hinzu und machen Anti-Virus- und Anti-Spyware-Fehlalarme viel wahrscheinlicher. – smartins