يعد تشويش السلاسل المضمنة في الثنائيات القابلة للتنفيذ مفيدًا لحماية المعلومات الحساسة مثل مفاتيح التشفير من الوصول غير المصرح به. ومع ذلك، يمكن للطرق المباشرة مثل تخزين السلسلة في مصفوفة أحرف أن تكشف محتوياتها بسهولة أثناء التحليل.
لإخفاء السلاسل بشكل فعال في الثنائيات المجمعة، يمكن استخدام نهج أكثر تعقيدًا. خذ بعين الاعتبار المثال التالي:
#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يتضمن هذا الرمز ماكرو مخصص، "DEFINE_HIDDEN_STRING،" لتشفير السلسلة المحددة. يقوم الماكرو بتشفير كل حرف باستخدام مفتاح فريد مشتق من القيمة الأولية المتوفرة (على سبيل المثال، "مفتاح التشفير القوي الخاص بي" -> 0x7f). يتم تطبيق خوارزمية تشفير تعتمد على البذرة على تسلسل الأحرف، مما يجعل البيانات الناتجة تظهر عشوائية ويصعب التعرف عليها في الملف الثنائي المترجم.
#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; iيؤدي هذا الأسلوب إلى تشويش السلاسل المضمنة داخل الكود الثنائي بشكل فعال، مما يجعل من الصعب استخراجها دون معرفة مفتاح التشفير والخوارزمية. فهو يحقق التوازن بين الأمان وسهولة الاستخدام، ويقدم طريقة ملائمة لحماية المعلومات الحساسة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3