L'obscurcissement des chaînes intégrées dans les binaires exécutables est utile pour protéger les informations sensibles telles que les clés de chiffrement contre tout accès non autorisé. Cependant, des méthodes simples telles que le stockage de la chaîne dans un tableau de caractères peuvent facilement révéler son contenu lors de l'analyse.
Pour masquer efficacement les chaînes dans les binaires compilés, une approche plus sophistiquée peut être utilisée. Prenons l'exemple suivant :
#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::coutCe code intègre une macro personnalisée, "DEFINE_HIDDEN_STRING", pour chiffrer la chaîne donnée. La macro code chaque caractère à l'aide d'une clé unique dérivée de la valeur de départ fournie (par exemple, "Ma clé de cryptage forte" -> 0x7f). Un algorithme de cryptage basé sur la graine est appliqué à la séquence de caractères, ce qui rend les données résultantes aléatoires et difficiles à identifier dans le binaire compilé.
#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; iCette approche masque efficacement les chaînes intégrées dans le code binaire, les rendant difficiles à extraire sans connaissance de la clé de chiffrement et de l'algorithme. Il établit un équilibre entre sécurité et facilité d'utilisation, offrant une méthode pratique pour protéger les informations sensibles.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3