QTreanalyzer هو محلل Ghidra مصمم لثنائيات هندسة عكسي التي تستخدم إطار QT. تتمثل وظيفتها الأساسية في استرداد معلومات الكائن والطريقة الخاصة بـ QT ، مما يوفر رؤى قيمة في الهياكل الثنائية.
يرتبط هذا المحلل بإصدار Ghidra الذي يتم تثبيته عليه. حاليا ضروري لبناءها ؛ سيتم توفير امتدادات مصممة في المستقبل للحصول على أحدث إصدارات Ghidra.
QtREAnalyzerQtREAnalyzer cd QtREAnalyzer Q tREAnalyzer$GHIDRA_DIR باستخدام دليل التثبيت الخاص بك). على سبيل المثال ، إذا كان لديك مسار تثبيت Ghidra التالي C:ghidra_11.0.3_PUBLIC فستقوم بتشغيل gradle -PGHIDRA_INSTALL_DIR=C:ghidra_11.0.3_PUBLIC . gradle -PGHIDRA_INSTALL_DIR= $GHIDRA_DIR File -> Install Extensions... ، انقر على علامة + وحدد QtREAnalyzerQtREAnalyzerdistghidra_*_QtREAnalyzer.zip وانقر فوق "موافق". للتحقق من تثبيت qtreanalyzer بشكل صحيح ، يمكنك فتح CodeBrowser وتحديد Analysis -> Auto Analyze ... A وتحقق من وجود خيار QtReAnalyzer .

يعمل QTreanalyzer حاليًا فقط مع ثنائيات X32 أو X64 التي تحتوي على RTTI (IE تم تجميعها باستخدام برنامج التحويل البرمجي MSVC). هذا هو الحال لأن QTreanalyzer يستخدم RTTI للعثور على ما إذا كانت الفصول الدراسية ترث من QOBject. هذا ما قاله إذا أراد المرء تمديد هذا المحلل للعمل مع الثنائيات دون RTTI ، كل ما هو ضروري هو تعديل ملف RttiClass.java بشكل مناسب.
في حالات نادرة جدًا ، سيتم تطبيق توقيع غير صحيح على وظيفة أو ستتم إضافة خاصية إلى نوع البيانات في العنوان غير الصحيح. يكاد يكون من المستحيل إصلاحه لأن الطريقة التي يقوم بها QTreanalyzer بتعيين إشارات QT ، وفتحات وتوقيعات الخصائص إلى عنوان الوظيفة المقابلة/إزاحة الخصائص هي القائمة على أساس الاستدلال. لا ينبغي أن يكون هذا قيدًا كبيرًا ، في ملف يحتوي على أكثر من 10 000 إشارات QT والفتحات التي تتحقق يدويًا عينة كبيرة لم أجد سوى حفنة من الرموز المسمى بشكل خاطئ.
لم يكن qtreanalyzer ممكنًا بدون الموارد المذهلة التالية: