Comment masquer les chaînes dans le code binaire
La protection des données sensibles dans les exécutables binaires est parfois nécessaire, par exemple en dissimulant les clés de cryptage pour empêcher leur récupération . Cependant, stocker des chaînes en texte brut dans le binaire les rend vulnérables. Cela soulève la question : pouvons-nous masquer des chaînes tout en conservant la fonctionnalité ?
Méthodes de masquage conventionnelles
Une approche simple mais inefficace consiste à stocker manuellement chaque caractère individuellement, comme indiqué ci-dessous :
char encryptionKey[30]; int n = 0; encryptionKey[n++] = 'M'; encryptionKey[n++] = 'y'; ...
Cependant, cette solution est lourde et non idéal.
Boosting String Obfuscation
Pour améliorer la méthode précédente, nous pouvons exploiter la bibliothèque de préprocesseurs Boost pour obtenir une obfuscation de chaîne plus transparente et plus efficace. Considérez le code 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::cout << GetEncryptionKey() << std::endl; std::cout << GetEncryptionKey2() << std::endl; return 0; }
Dans ce code mis à jour :
Cette solution utilise le cryptage pour masquer les caractères, ce qui le rend plus résistant à la détection par simple numérisation. De plus, il est plus succinct et maintenable que la construction manuelle de tableaux de caractères.
Exemple de données obscurcies
La chaîne obscurcie résultante "Ma clé de cryptage forte" apparaît comme suit dans le code binaire :
0x00B0200C 32 07 5d 0f 0f 08 16 16 10 56 10 1a 10 00 08 2.]......V..... 0x00B0201B 00 1b 07 02 02 4b 01 0c 11 00 00 00 00 00 00 .....K.........
Ces données présentent désormais des valeurs apparemment aléatoires, ce qui rend plus difficile pour les attaquants d'identifier des données spécifiques. chaînes.
Conclusion
Bien que cette technique ne fournisse pas une protection infaillible contre les attaquants déterminés, elle peut augmenter considérablement le temps et les efforts nécessaires pour découvrir des données sensibles dans les exécutables binaires, offrant une couche de sécurité supplémentaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!