Die Verschleierung von in ausführbaren Binärdateien eingebetteten Zeichenfolgen ist wertvoll, um vertrauliche Informationen wie Verschlüsselungsschlüssel vor unbefugtem Zugriff zu schützen. Allerdings können einfache Methoden wie das Speichern der Zeichenfolge in einem Zeichenarray ihren Inhalt während der Analyse leicht offenlegen.
Um Zeichenfolgen in kompilierten Binärdateien effektiv zu verbergen, kann ein ausgefeilterer Ansatz verwendet werden. Betrachten Sie das folgende Beispiel:
#include "HideString.h" DEFINE_HIDDEN_STRING(EncryptionKey, 0x7f, ('M')('y')(' ')('s')('t')('r')('o')('n')('g')(' ')('e')('n')('c')('r')('y')('p')('t')('i')('o')('n')(' ')('k')('e')('y')) DEFINE_HIDDEN_STRING(EncryptionKey2, 0x27, ('T')('e')('s')('t')) int main() { std::coutDieser Code enthält ein benutzerdefiniertes Makro „DEFINE_HIDDEN_STRING“, um die angegebene Zeichenfolge zu verschlüsseln. Das Makro kodiert jedes Zeichen mit einem eindeutigen Schlüssel, der aus dem bereitgestellten Startwert abgeleitet wird (z. B. „Mein starker Verschlüsselungsschlüssel“ -> 0x7f). Ein auf dem Startwert basierender Verschlüsselungsalgorithmus wird auf die Zeichenfolge angewendet, wodurch die resultierenden Daten zufällig erscheinen und in der kompilierten Binärdatei schwer zu identifizieren sind.
#define CRYPT_MACRO(r, d, i, elem) (elem ^ (d - i))#define DEFINE_HIDDEN_STRING(NAME, SEED, SEQ) \ static const char* BOOST_PP_CAT(Get, NAME)() \ { \ static char data[] = { \ BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO, SEED, SEQ)), \ '\0' \ }; \ static bool isEncrypted = true; \ if (isEncrypted) \ { \ for (unsigned i = 0; iDieser Ansatz verschleiert effektiv die eingebetteten Zeichenfolgen im Binärcode, wodurch es schwierig wird, sie ohne Kenntnis des Verschlüsselungsschlüssels und des Algorithmus zu extrahieren. Es schafft ein Gleichgewicht zwischen Sicherheit und Benutzerfreundlichkeit und bietet eine praktische Methode zum Schutz vertraulicher Informationen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3