Frage:
Text in Binärdateien verschlüsseln
Mellowcandle
2013-03-28 21:55:17 UTC
view on stackexchange narkive permalink

Textzeichenfolgen können normalerweise problemlos in einer Binärdatei mit einem beliebigen Editor gelesen werden, der die ASCII-Codierung von Hexadezimalwerten unterstützt. Diese Textausschnitte können von einem Reverse Engineer leicht untersucht und geändert werden.

Welche Optionen hat ein Entwickler, um diese Textausschnitte zur Laufzeit zu verschlüsseln und zu entschlüsseln?

Einer antworten:
#1
+8
QAZ
2013-03-28 22:34:50 UTC
view on stackexchange narkive permalink

Einige Optionen, die je nach Ihren Anforderungen möglicherweise anwendbar sind oder nicht:

  1. Vermeiden Sie die Verwendung von Zeichenfolgen, um interessante Informationen zu veröffentlichen, wenn dies möglich ist. Wenn Sie beispielsweise Zeichenfolgen verwenden, um Fehlerinformationen oder Protokollinformationen anzuzeigen, kann dies jedem Reverse Engineering wertvolle Details darüber geben, was in Ihrer Anwendung möglicherweise vor sich geht. Ersetzen Sie diese Zeichenfolgen stattdessen durch numerische Fehlercodes.

  2. Verschleiern alle Zeichenfolgen mit einem symmetrischen Algorithmus wie einer einfachen XOR-Routine oder einem Krypto-Algorithmus wie AES. Dadurch wird verhindert, dass die Zeichenfolge bei einer gelegentlichen Überprüfung Ihrer Binärdatei entdeckt wird. Ich sage 'verschleiert', da Sie vermutlich den Krypto- / XOR-Schlüssel in Ihrer Binärdatei speichern werden. Jeder Reverse Engineer, der sich etwas mehr Mühe gibt, wird die verschleierten Zeichenfolgen mit Sicherheit wiederherstellen.

  3. Alle Zeichenfolgen verschlüsseln (alle Zeichenfolgen werden in einem separaten Abschnitt verknüpft in Ihrer ausführbaren Datei und verschlüsseln Sie diesen Abschnitt) und speichern Sie den Entschlüsselungsschlüssel außerhalb Ihrer Binärdatei. Sie können den Schlüssel remote speichern und die Zugriffsserverseite nach Möglichkeit einschränken. Wenn ein Reverse Engineer Ihre Binärdatei erhält, kann möglicherweise nicht auf den Schlüssel zugreifen. Der Entschlüsselungsschlüssel kann auch dynamisch auf dem Computer des Benutzers generiert werden, basierend auf mehreren vorhersehbaren Faktoren, die über den Computer des Benutzers bekannt sind, sodass die verschlüsselten Daten im Wesentlichen nur entschlüsselt werden können, wenn sie auf diesem bestimmten Computer (oder Maschinentyp) ausgeführt werden. Diese Technik wurde von staatlicher Malware verwendet, um Nutzdaten für bestimmte Ziele zu verschlüsseln (Wenn ich mich an den Link zu dem Artikel erinnern kann, in dem ich dies gelesen habe, werde ich die Antwort aktualisieren).

  4. Werden Sie kreativ , speichern Sie alle Zeichenfolgen in einer Fremdsprache und verwenden Sie zur Laufzeit einen Online-Übersetzungsdienst, um die Zeichenfolge wieder in Ihre erwartete Muttersprache zu übersetzen. Dies ist natürlich nicht sehr praktisch.

  5. ol>

    Wenn Ihre Zeichenfolgen zur Laufzeit dekodiert / entschlüsselt werden, kann ein Reverse Engineer den Prozess natürlich einfach aus dem Speicher sichern, um die Zeichenfolgen anzuzeigen. Aus diesem Grund ist es möglicherweise am besten, einzelne Zeichenfolgen nur bei Bedarf zu dekodieren / zu entschlüsseln (möglicherweise wird die dekodierte Zeichenfolge an einem temporären Ort gespeichert und nach der Verwendung auf Null gesetzt).

Unter [diese Stackoverflow-Frage] (http://stackoverflow.com/questions/3785582/how-to-write-a-password-safe-class) finden Sie Techniken, die unverschlüsselte Zeichenfolgen vor dem Speichern im Speicher schützen.
+1 für "kreativ werden". Der beste Weg, um Versuche, Ihr Programm zu verstehen, zu vereiteln, ist die Verwendung von Techniken, die nicht auf Online-Q & A-Sites dokumentiert sind ...


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...