kommen, zu encodieren Also machte ich eine Anwendung mit visuellen 2012, die Bilder und Shader (Klartext) load. Aber wirklich, ich möchte nicht, dass Leute die Bilder und Shader öffnen und herumspielen. Wie kann ich alle diese externen Dateien in eine einzelne oder mehrere Dateien komprimieren, aber immer noch lesbar für die ausführbare Datei?Wie externe Dateien, die mit der .exe
Antwort
Diese Frage ist schwer zu beantworten, denn ohne manipulationssichere Hardware ist es im Grunde unmöglich, Inhalte gegen einen erfahrenen Hacker zu sichern. Aber angesichts der Klarstellung, dass eine einfache Abschreckung gut genug ist, wie wäre es mit nur embedding your content as resources in the executable? Beachten Sie, dass es Tools gibt, die frei verfügbar sind, um Ressourcen aus EXE-Dateien zu extrahieren.
Alternativ können Sie jede Datei verschlüsseln und entschlüsseln, wenn Ihre Anwendung sie lädt. Die Verschlüsselung könnte so einfach sein, wie jedes Byte mit einem bekannten konstanten Byte zu kodieren, oder Sie könnten einen echten Verschlüsselungsalgorithmus wie einen von der Microsoft CryptoAPI verwenden. Die Verwendung eines echten Algorithmus wird die Verschleierung verbessern, ist aber immer noch nicht wirklich sicher.
Hier ist ein einfaches Programm, das this RC4 implementation verwendet (die als CryptoAPI zu verwenden leichter ist) zu verschlüsseln oder eine Datei zu entschlüsseln und zu stdout schreiben:
#include <algorithm>
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>
// insert RC4 implementation here
int main(int argc, char *argv[]) {
const std::string password = "no more secrets";
const std::string filename = argv[1];
// Read file into a buffer.
std::ifstream f(filename.c_str(), std::ios::in | std::ios::binary);
std::vector<char> buffer;
f >> std::noskipws;
std::copy(
std::istream_iterator<char>(f), std::istream_iterator<char>(),
std::back_inserter(buffer));
// Initialize the key from a password.
rc4_key key;
prepare_key((unsigned char *)password.data(), (int)password.size(), &key);
// Encrypt or decrypt (same operation).
rc4((unsigned char *)&buffer[0], (int)buffer.size(), &key);
// Write result to stdout.
std::cout.write(&buffer[0], buffer.size());
return 0;
}
Beachten Sie, dass dies nicht eine sichere Art und Weise ist RC4 zu verwenden und der RC4-Algorithmus selbst wird nicht mehr als sicher angesehen.
Streng genommen ist es unverantwortlich, auf eine einfache XOR als "Verschlüsselung" zu verweisen. –
@IronSavior Ich habe versucht, mich nach vorne zu beugen, um zu sagen, dass das nicht sicher ist. Es gibt ein ganzes Spektrum von Verschlüsselungsalgorithmen - einige sind sicher und manche nicht. XOR ist ein Beispiel für eine Substitutions-Chiffre - ich würde nicht zustimmen, dass Substitutions-Chiffren keine primitive Form der Verschlüsselung sind. – rhashimoto
Können Sie Code zum Verschlüsseln und Entschlüsseln von Dateien bereitstellen? Wie würde es funktionieren? – marcg11
Check out http://en.wikipedia.org/wiki/PAK_(file_format)
Es gibt eine Bibliothek auf Source für Quake2 pak Dateien: http://sourceforge.net/projects/paklib/
Aber es empfehle direkt an die Quelle gehen: https://github.com/id-Software/Quake-2/blob/master/qcommon/files.c
Encode die Dateien in der ausführbaren Datei im Quellcode. Erstellen Sie ein Array, wobei jedes Byte der Datei jeweils ein Byte codiert ist. Es ist eine sehr einfache Technik, um Daten in eine ausführbare Datei einzuschließen.
- 1. Tkinter öffnen Sie eine externe exe-Datei
- 2. Wie man externe dlls in einzelne ausführbare Dateien packt
- 3. externe JAR-Dateien importieren
- 4. Delphi: .exe mit integrierten Paketen: 600kb, .exe + externe BPLs: 6MB. Warum das?
- 5. gehören externe PHP-Dateien
- 6. Convert Mehrere SWF-Dateien zu Single EXE
- 7. externe Dateien laden mit Ajax/Abfrage
- 8. Wie packt man PHP-Dateien in exe?
- 9. wie Größe der exe mit py2exe reduzieren
- 10. Wie funktioniert HTML Last externe JS-Dateien
- 11. Wie kann man externe Dateien mit Webpack einbinden
- 12. node.js externe exe aufrufen und auf Ausgabe warten
- 13. Compress erforderlich externe js Dateien
- 14. Script Batch, externe exe ausführen und seine PID
- 15. Ausführen einer EXE mit Parametern nach der Installation der Dateien mit WIX
- 16. Ausführen einer externen Anwendung mit der Erweiterung EXE
- 17. Spectron und Elektron ohne EXE-Dateien
- 18. unbeaufsichtigte Installation von Python-Modul EXE-Dateien
- 19. Externe Dateien hinzufügen, um die Umbenennung von Bibliotheken zu erhalten?
- 20. So speichern Sie Dateien in einer EXE
- 21. Erstellen Sie EXE-Dateien aus VB.Net-Skript
- 22. Zwei EXE-Dateien programmgesteuert in eine zusammenführen
- 23. Python UDF - externe Dateien importieren/lesen
- 24. Codierung innerhalb von Script-Tags, die externe js-Dateien laden
- 25. Intellisense für externe Javascript-Dateien in VS2008
- 26. Umbenennen von Dateien, die mit
- 27. HTTPS und externe (CDN) gehostete Dateien?
- 28. mehrere EXE-Dateien zur gleichen Zeit mit Python ausführen
- 29. Externe Konfigurationsdateien mit Maven
- 30. Nutzen Browser-Caching für externe Dateien
[zlib] (http://en.wikipedia.org/wiki/Zlib) – deepmax
Sie versuchen zu verhindern, dass Personen Ihre Bilder und Shader für andere Zwecke verwenden, oder wenn Benutzer sie so ändern, dass Ihr Programm aussieht oder sich verhält anders? Oder beides? Ersteres erfordert eine Art von Verschlüsselung oder Verschleierung, während letzteres nur eine Validierung erfordert. Außerdem sind beide Aufgaben gegen einen entschlossenen Angreifer praktisch unmöglich, es sei denn, Sie haben eine manipulationssichere Hardware-Unterstützung, also ist eine andere Frage, wie schwierig Sie es machen wollen? Ein zufälliger Benutzer zu entmutigen wird nicht schwer sein, aber ein ernsthafter Hacker ist eine andere Geschichte. – rhashimoto
Hallo Danke fürs Beantworten. Ich bin glücklich mit einem einfachen, nur damit sie die Bilder, Shader, Modelle usw. nicht so leicht bekommen. – marcg11