2016-04-11 7 views
-2

Ist es möglich, eine .exe-Datei so zu verschlüsseln, dass Benutzer die Datei nur ausführen dürfen, aber nicht lesen oder öffnen dürfen?Verschlüsselung einer ausführbaren Datei

Ich weiß, dass C/C++ EXE-Dateien schwer zu dekompilieren sind, aber für zusätzliche Sicherheit möchte ich dies implementieren.

Ist das möglich?

Bitte lassen Sie mich wissen, wenn Sie weitere Informationen über meine Anforderungen benötigen.

Ich möchte C-Sprache verwenden, um dies zu implementieren.

+2

Um das Programm auszuführen, muss der Computer die Datei zuerst entschlüsseln. Wenn Ihr Computer es entschlüsseln kann, kann dies auch jeder Benutzer tun. Und "Ich weiß, dass C/C++ EXE-Dateien bereits verschlüsselt sind" - sie sind nicht. – Amadan

+3

C/C++ EXE-Dateien sind nicht verschlüsselt. – Harry

+0

Sorry für die Verwirrung, ich meine zu sagen, dass sie bereits in unlesbarer Form sind, die schwer zu dekompilieren ist, um den Quellcode zu bekommen. - share75 gerade jetzt bearbeiten. Bitte korrigieren Sie mich, wenn ich falsch liege – share75

Antwort

1

Ja, es ist im weitesten Sinne möglich.

Um den Code auszuführen, muss die CPU den Klartext sehen. Sie müssen also den Schlüssel in der Binärdatei angeben. Die einzige Möglichkeit, Code-Segmente zu verschlüsseln und zu entpacken, besteht nur dann, wenn Sie sie an funktionalen Grenzen verschlüsseln und entschlüsseln, und nur dann, wenn die Entschlüsselung bei der Funktionseingabe erfolgt und dann beim Verlassen der Funktion erneut verschlüsselt wird. Dies wird eine kleine Barriere gegen das Dumping der binären, wie es läuft, aber muss mit starken Verschleierung gekoppelt sein, das ist eine sehr häufige Technik und ehrlich gesagt Tricks viele Anfänger Reverse, die an das Standardschema der gepackten ausführbaren oder "gewohnt sind Stub "Verschlüsselungsschemata.

Wenn Sie Informationen ausblenden, ist es wichtig, dass die Informationen zur Laufzeit ebenfalls gut versteckt sind. Ein kompetenter Reverse-Engineer prüft den Zustand Ihres Programms während der Ausführung. Die Verwendung von statischen Variablen, die beim Laden entschlüsseln oder Packungen verwenden, die beim Laden vollständig entpackt werden, führt zu einer schnellen Suche. Seien Sie vorsichtig, was Sie auf dem Heap zuweisen. Alle Heap-Operationen werden über API-Aufrufe ausgeführt und können problemlos in einer Datei protokolliert werden. Stack-Operationen sind in der Regel schwieriger zu verfolgen, nur weil sie häufig sind. Die dynamische Analyse ist genauso wichtig wie die statische. Sie müssen wissen, was Ihr Programmstatus zu jeder Zeit ist und welche Informationen wo liegen.

Es klingt wie Ihr Ziel ist, Ihre ausführbare Datei zu schützen, und zu diesem Zweck sollte Ihr unmittelbareres Ziel sein, sicherzustellen, dass es für den Reverse-Ingenieur praktisch unmöglich ist, eine feste mentale Grundlage zu finden. Je weniger Informationen Sie verlieren und je veränderlicher die Umgebung ist, desto schwieriger wird es zu lernen. Wenn Sie kein erfahrener Reverse-Engineer sind, ist es fast unmöglich, etwas zu entwerfen, das schwer zu reverse-engineering ist.