
مجموعة من السكربتات للهندسة العكسية لبرمجيات النطاق الأساسي / المودم الخاصة بـ Qualcomm Hexagon
مجموعة من السكربتات لعكس هندسة برمجيات Qualcomm الأساسية / برنامج المودم الثابت
تم تحديث جميع الإزاحات/العناوين في السكربتات إلى إصدار Pixel 5 لشهر مارس من البرنامج الثابت ويجب تغييرها إذا كنت تستخدم إصدارًا مختلفًا.
merge_modem_firmware.py يدمج جميع ملفات modem.b** (modem.b00, modem.b01, إلخ) في ملف ثنائي واحد متجانس باسم modem.bin. وهذا يجعل التحميل إلى IDA وGhidra أسهل بكثير.
clade_extractor و dlpage_extractor يقومان بفك ضغط أقسام CLADE وDelta المضغوطة.
clade_extractor يُترجم إلى x86 (أو إلى بنية جهازك) وسيُخرج القسم المفكوك الضغط إلى ملف. على حد علمي، لا توجد معلومات أو كود منشور للجمهور حول ضغط CLADE من Qualcomm باستثناء براءة الاختراع. لقد حل CLADE محل q6zip كطريقة الضغط الرئيسية لوحدات وضع المستخدم، وهو أمر مزعج في عكس الهندسة لأنه مُنفَّذ في الغالب على مستوى العتاد.
dlpage_extractor مُترجم لـ Hexagon ويُحاكى في QEMU (كما فعلت الأعمال السابقة). ستحتاج بعد ذلك إلى تفريغ الذاكرة المفكوكة الضغط في GDB. يوجد أيضًا كود هنا لطريقة ضغط q6zip القديمة، على الرغم من أنها لم تعد مستخدمة في ملفات المودم الأحدث. قسم delta يحتوي فقط على بضعة هياكل معالجات أوامر diag، لذا فإن قسم CLADE المضغوط هو المكان الذي يوجد فيه معظم الجوهر. لن أهتم بهذا حتى على الملفات الأحدث، فهو هنا فقط للملفات الأقدم.
بمجرد الحصول على قسم CLADE المفكوك الضغط، يمكنك تشغيل add_decompressed_section_to_modem_bin.py لإضافته إلى modem.bin. يمكن القيام بذلك يدويًا في IDA وGhidra، لكن هذا السكربت يجعل تحميل ونسخ الملفات النهائية أسهل قليلاً.
qshrink4_qdb_ghidra_script.py يفك ترميز جميع الاستدعاءات إلى msg_v4_send* إلى سلاسل التصحيح الخاصة بها. سيضيف تعليقًا إلى أعلى كل دالة تستخدمها. سلاسل التصحيح هذه مفيدة بشكل لا يصدق لعكس الهندسة لأنها تعطي دائمًا اسم الملف وبعض السياق للدالة. والأفضل من ذلك، أنها تحتوي أحيانًا على أسماء الدوال، وأسماء المتغيرات، والمزيد. تحقق من مسار الملف الذي يتم فتحه للحصول على مساعدة في الحصول على ملف qdb من ملف برنامج Pixel 5 الثابت. استمر في استخراج binwalk حتى تحصل على ما تحتاجه.
diag_handler_locator_ghidra_script.py يحدد ويعيد تسمية جميع دوال معالجة أوامر diag إلى مخطط تسمية <op1>_<op2>_diag_cmd_handler بحيث يسهل البحث عنها في Ghidra.
تحتوي بعض السكربتات على كود مأخوذ من مصادر أخرى. لقد حاولت تقديم الاعتماد لكل شيء، لكن ربما نسيت واحدًا أو اثنين. من فضلك أخبرني إذا استخدمت كودك ونسيت أن أذكرك.
إذا كان هذا المستودع قد ساعدك، فضلًا اضغط على ⭐!