
إضافة IDA لتصحيح أخطاء السفر عبر الزمن
⚠️ انتباه لمستخدمي IDA 8: استخدام ttddbg مع IDA 8 يتطلب حلاً مؤقتاً في الوقت الحالي، انظر المشاكل المعروفة
تضيف هذه الإضافة مصحح أخطاء جديداً إلى IDA يدعم تحميل آثار التنقيح عبر السفر عبر الزمن (Time Travel Debugging) المولّدة باستخدام WinDBG Preview.

تدعم هذه الإضافة آثار كل من x86 و x64، وبالتالي تدعم IDA و IDA64.
يمكن تثبيت الإضافة باستخدام المثبّت من صفحة الإصدارات. سيقوم المثبّت تلقائياً بتثبيت التبعيات المطلوبة، بشرط أن يكون لديك نسخة من WinDBG Preview مثبّتة.
بمجرد التثبيت، يمكنك استخدام الإضافة عن طريق اختيار مصحح الأخطاء ttddbg في واجهة IDA، وتحديد ملف *.run الخاص بك كـ "Application". للحصول على مساعدة حول إنشاء ملف .run، راجع HOWTO_TIME_TRAVEL.md.


| الأيقونة | الإجراء |
|---|---|
![]() | الانتقال إلى نقطة الإيقاف السابقة |
![]() | محاكاة تشغيل كامل للبرنامج |
![]() | خطوة واحدة للخلف (RIP - تعليمة واحدة) |
![]() | إدارة الخط الزمني للأحداث المهمة (إنشاء/إنهاء الخيوط، تحميل/إلغاء تحميل الوحدات، الاستثناءات، مخصص) |
![]() | إدارة الدوال التي يتم اقتفاء أثرها حالياً |
![]() | عرض أحداث الأثر |
منذ الإصدار 1.1.0، يدعم ttddbg ميزة جديدة نسميها "اقتفاء الدوال" (function tracing). أثناء التواجد في عرض التنقيح، يمكن تحديد دوال لاقتفاء أثرها بالنقر بزر الماوس الأيمن عليها في واجهتي Functions أو Module. بمجرد اقتفاء أثر دالة، سيتم تسجيل أي استدعاء لهذه الدالة، وأي عبارة return، في نافذة Trace events الجديدة.
باستخدام معلومات الدوال المستخلصة من عملك في الهندسة العكسية، يستخرج ttddbg أيضاً الوسائط المُمرّرة إلى الدالة بالإضافة إلى قيمة إرجاعها. تتم طباعة الرموز تلقائياً بشكل منسّق استناداً إلى المعلومات المتاحة في IDA، مثل قيم التعدادات (enum).
picture_search، وهي جديدة في IDA 8. إزالة picture_search.dll و picture_search64.dll من مجلد plugins يصلح هذه المشكلة مؤقتاً. تم إبلاغ المشكلة إلى Hex-Rays.المتطلبات الأساسية:
TTDReplay.dll (عادة في C:\Program Files\WindowsApps\[WinDBG folder]\amd64\ttd\)TTDReplayCPU.dll (عادة في C:\Program Files\WindowsApps\[WinDBG folder]\amd64\ttd\)ودع CMAKE يقوم بالسحر!
$ git clone [email protected]:airbus-cert/ttddbg.git --recursive
$ mkdir build
$ cd build
$ cmake ..\ttddbg -DIDA_SDK_SOURCE_DIR=[PATH_TO_IDA_SDK_ROOT_FOLDER] -DCPACK_PACKAGE_INSTALL_DIRECTORY="IDA Pro 7.7"
$ cmake --build . --target package --config release
لإنشاء حل تطويري:
$ git clone [email protected]:airbus-cert/ttddbg.git --recursive
$ mkdir build
$ cd build
$ cmake ..\ttddbg -DIDA_SDK_SOURCE_DIR=[PATH_TO_IDA_SDK_ROOT_FOLDER] -DBUILD_TESTS=ON
تحية إلى commial لعمله على ttd-bindings!