
سكربتات بايثون لـ IDA لفك تشفير السلاسل النصية من KPOT وتعيينها كتعليقات
نصوص IDA بلغة بايثون لفك تشفير سلاسل برنامج السرقة KPOT وتعيينها كتعليقات بجوار المتغير الذي سيستقبلها أثناء وقت التشغيل. يعمل النص كما يلي:
يحصل على الإزاحة التي تُمرَّر عبر eax إلى إحدى دالتي فك التشفير (هناك اثنتان، ولهذا يحتوي هذا المستودع على نصَّين)، إما باستخدام mov أو pop eax.
يفك تشفير السلسلة في مصفوفة بقراءة الحجم المقابل لها ومفتاح XOR.
يطبع السلسلة المفكوكة والإزاحة التي عُيّنت عندها كتعليق، بالإضافة إلى أي سلاسل لم يتمكن من فك تشفيرها (انظر Important Considerations أدناه).
توجد بضعة مواضع في الكود يستخدم فيها البرنامج الخبيث طريقة مختلفة عن تلك التي تغطيها النصوص. يمكنك العثور على هذه الحالات بتتبع العناوين التي تحمل الرسالة Could not decrypt xref: وفك تشفيرها بتزويد الدوال المعنية بالإزاحة يدويًا.
يحوّل النص المصفوفة المفكوكة إلى سلسلة عبر decode(). في تجربتي، هناك ثلاث مصفوفات بايت يفك تشفيرها KPOT ليست سلاسل، مما يؤدي إلى تعطل النص. هذه هي الإزاحات التي يتم تجاهلها في .
kpot-string-decrypter-pt1.pysearch_offset() يطبع العنوان الحالي يمكن أن يساعدك في معرفة أين يحدث التعطل.decrypt_str() إلى return(newarray.hex()).لمعرفة أي النصَّين يجب استخدامه، افحص روتين فك التشفير - pt1 مخصص للدالة الفرعية التي تقوم فقط بعملية XOR على البايت، بينما pt2 مخصص للدالة التي تقوم بـ AND 0xFF بعد XOR.