Ich habe ein C # .NET-Programm, von dem ich glaube, dass es kompromittiert wurde (Rückentwicklung). Gibt es eine Möglichkeit, dies zu verhindern?
.net-framework
c#
SpokaneDude
quelle
quelle
Technisch gesehen gibt es keine Möglichkeit, etwas zu verhindern, das bereits passiert ist, es sei denn, Sie haben eine Zeitmaschine. In Ihrer Frage wurde angegeben, dass Sie glauben, dass Ihr Programm kompromittiert wurde (Vergangenheitsform) - dies ist eine Aktion, die bereits stattgefunden hat. Das Verhindern einer bereits eingetretenen Handlung würde eine Zeitreise bedeuten, da wir uns dies auf keine andere Weise vorstellen können.
Der Grund, warum dieses scheinbar alberne Argument relevant ist, ist, dass, selbst wenn Sie heute eine Verschleierungstechnik in Ihren Code implementieren, die es absolut unmöglich macht, Ihren Code jemals wieder rückgängig zu machen, es immer noch so ist, dass mindestens eine Kopie vorhanden ist von Ihrem Code ohne die Verschleierung wurde bereits in irgendeiner Weise veröffentlicht und wurde bereits in ein verwendbares Quellformat zurückgeführt (oder so, wie Sie glauben).
Da ich niemanden auf der Erde kenne, der jemals eine Arbeitszeitmaschine geschaffen hat, bezweifle ich, dass es eine Möglichkeit gibt, mit dieser Situation durch technische Mittel richtig umzugehen. Wenn Ihre Software zum Herunterladen frei verfügbar war, ist es sehr wahrscheinlich, dass Tausende oder Millionen von Menschen Kopien der nicht verschleierten Binärdateien haben und diese Binärdateien jederzeit untereinander teilen und nach Belieben zurückentwickeln können. Selbst wenn Sie Ihre Software gegen eine Gebühr verkauft haben, wenn diese Gebühr nicht extrem hoch war, wurde sie wahrscheinlich bereits von mehr als einer Person rückentwickelt, unabhängig davon, ob Sie Kunden oder Piraten bezahlt haben.
Sie werden wahrscheinlich auf die einzige Institution auf der Erde zurückgreifen müssen, die (auf äußerst unvollständige Weise) versuchen kann, in der Vergangenheit aufgetretene fehlerhafte oder unmoralische Handlungen zu korrigieren: das Rechtssystem. Sie sehen, selbst wenn jemand etwas wirklich Böses getan hat, wie die Freigabe eines Konkurrenzprodukts unter Verwendung Ihres Codes als Grundlage, brauchen Sie nicht unbedingt eine Zeitmaschine, um dies zu verhindern: Sie können einfach die schlimmsten Straftäter mit einer Klage anvisieren , und lassen Sie das Justizsystem sich selbst spielen. Sie werden nicht unbedingt das ideale Ergebnis erzielen, und Sie werden wahrscheinlich nicht das gesamte fällige Geld erhalten (Anwaltskosten und so weiter). Aber es ist besser, als hier zu sitzen und sich eine Zeitmaschine zu wünschen.
Natürlich geht nach vorn , werden alle neuen Code Entwicklungen Loslassen sollte verschleiert werden , wenn es Ihr Ziel , andere zu verhindern , dass in der Lage, bequem Reverse Engineering die .NET - Assemblies ist. Aber ich überlasse das Thema den anderen Antwortenden. Ich wollte nur ein Pedant sein.
quelle
Sie können es nicht vollständig vermeiden, aber Sie können etwas tun, um es einem Angreifer schwerer zu machen, wie im folgenden Artikel erläutert:
Ein Anti-Reverse-Engineering-Handbuch
Grundsätzlich müssen Sie einige Verschleierungstechniken anwenden, um den Prozess zu verlangsamen. Es gibt verschiedene Tools, die Ihnen dabei helfen, abhängig von der verwendeten Programmiersprache. Wenn Sie in Stackoverflow suchen, finden Sie viele Antworten. Eine Schnellsuche ergab beispielsweise den folgenden Link zu Javascript:
Wie kann ich JavaScript verschleiern?
quelle