
Tentet هو مكون إضافي IDA Pro لاستكشاف آثار التنفيذ. الهدف من هذا البرنامج المساعد هو توفير المزيد من الضوابط البشرية الطبيعية للتنقل في آثار التنفيذ ضد ثنائي معين. ينبع أساس هذا العمل من الرغبة في البحث عن أساليب جديدة أو مبتكرة لفحص وتقطير أنماط التنفيذ المعقدة في البرامج.
لمزيد من السياق حول هذا المشروع ، يرجى قراءة Blogpost حول إصداره الأولي.
شكر خاص لـ Qira / Geohot et al. للإلهام.
Tentet هو مكون من المنصات (Windows ، MacOS ، Linux) Python 3. يستغرق التبعيات من طرف ثالث صفر ، مما يجعل الرمز محمولًا وسهل التثبيت.
من وحدة التحكم في Python Disassembler الخاصة بك ، قم بتشغيل الأمر التالي للعثور على دليل المكون الإضافي الخاص به:
import idaapi, os; os.path.join(idaapi.get_user_idadir(), "plugins") انسخ محتويات هذا المستودع /plugins/ المجلد إلى الدليل المدرج.
أعد تشغيل disassembler الخاص بك.
يتم دعم هذا البرنامج المساعد فقط لـ IDA 7.5 وأحدث.
بمجرد تثبيتها بشكل صحيح ، سيكون هناك إدخال قائمة جديد متاح في Disassembler. يمكن استخدام هذا لتحميل آثار التنفيذ التي تم جمعها خارجيًا في المبدأ.

نظرًا لأن هذا هو الإصدار الأولي ، فإن TENET تقبل فقط آثار النص البسيطة القابلة للقراءة البشرية. يرجى الرجوع إلى Tracing ReadMe في هذا المستودع للحصول على معلومات إضافية حول تنسيق التتبع ، والقيود ، والتتبع المرجعي.
أثناء استخدام TENET ، سيقوم المكون الإضافي بـ "الطلاء" إلى الإشارة إلى تدفق التنفيذ للأمام (الأزرق) والخلف (الأحمر) من موضعك الحالي في تتبع التنفيذ النشط.

step إلى الأمام أو للخلف عبر الزمن ، يمكنك ببساطة التمرير أثناء التحريك فوق الجدول الزمني على الجانب الأيمن من Disassembler. step over مكالمات الوظائف ، استمر SHIFT أثناء التمرير.
سيتم إرساء الجدول الزمني التتبع على الجانب الأيمن من disassembler. يتم استخدام هذه القطعة لتصور أنواع مختلفة من الأحداث على طول الجدول الزمني التتبع وأداء التنقل الأساسي كما هو موضح أعلاه.

من خلال النقر فوق الجدول الزمني والسحب عبر الجدول الزمني ، من الممكن تكبير قسم معين من تتبع التنفيذ. يمكن تكرار هذا الإجراء أي عدد من المرات للوصول إلى التفاصيل المرغوبة.
إن النقر المزدوج على مؤشر التعليمات في نافذة السجلات سوف يسلط الضوء عليه باللون الأحمر ، مما يكشف عن جميع المواقع التي تم تنفيذ التعليمات عبر الجدول الزمني التتبع.

للقفز بين عمليات الإعدام ، قم بالتمرير لأعلى أو لأسفل أثناء تحوم مؤشر التعليمات المميز .
بالإضافة إلى ذلك ، يمكنك النقر بزر الماوس الأيمن في قائمة التفكيك وتحديد أحد إدخالات القائمة المستندة إلى التنقل للبحث بسرعة إلى تنفيذ تعليمات ذات أهمية.

يمكن أيضًا استخدام مفتاح F2 الأصلي لـ IDA لتعيين نقاط التوقف على التعليمات التعسفية.
بالنقر المزدوج على بايت إما في مشاهدات المكدس أو الذاكرة ، سترى على الفور جميع القراءات/يكتب إلى هذا العنوان المصور عبر الجدول الزمني التتبع. يشير الأصفر إلى قراءة الذاكرة ، يشير الأزرق إلى كتابة الذاكرة.

يمكن التنقل في نقاط توقف الذاكرة باستخدام نفس التقنية الموصوفة لنقاط توقف التنفيذ. انقر نقرًا مزدوجًا على بايت ، ثم قم بالتمرير أثناء تحوم البايت المحدد للبحث عن التتبع إلى كل من وصوله.
إن النقر ببايت من الاهتمام يمنحك خيارات للبحث بين القراءة / الكتابة / الوصول إلى الذاكرة إذا كان هناك إجراء محدد للتنقل الذي تفكر فيه.

للانتقال إلى عرض الذاكرة إلى عنوان تعسفي ، انقر فوق عرض الذاكرة واضغط على G لإدخال إما عنوان أو رمز قاعدة بيانات للبحث عن العرض إليه.
من الممكن تعيين نقطة توقف للذاكرة عبر منطقة من الذاكرة من خلال تسليط الضوء على كتلة من الذاكرة ، والنقر المزدوج عليها لتعيين نقطة توقف الوصول.

كما هو الحال مع نقاط توقف الذاكرة العادية ، يمكن أن تستخدم المنطقة والتمرير للتمرير لاجتياز الوصول إلى المنطقة المحددة للذاكرة.
في الهندسة العكسية ، من الشائع جدًا مواجهة المواقف التي تسأل فيها نفسك "ما هي التعليمات التي حددت هذا السجل على قيمته الحالية؟"
باستخدام TENET ، يمكنك البحث عن هذه التعليمات في نقرة واحدة.

يعد البحث إلى الوراء هو الاتجاه الأكثر شيوعًا للتنقل عبر تغييرات التسجيل ... ولكن بالنسبة للبراعة ، يمكنك أيضًا البحث عن مهمة التسجيل التالية باستخدام السهم الأزرق على يمين السجل.
يتم توفير "قذيفة" بسيطة للانتقال إلى طابع زمني محدد في التتبع. سوف تكفي لصق (أو كتابة ...) طابع زمني في القشرة مع أو بدون فواصل.

باستخدام علامة تعجب ، يمكنك أيضًا البحث عن "نسبة مئوية" محددة في التتبع. سوف يسعى الدخول إلى !100 إلى التعليمات النهائية في التتبع ، حيث سيسعى !50 ما يقرب من 50 ٪ من الطريق عبر التتبع. سوف يسعى !last إلى آخر تعليمات قابلة للملاحة يمكن عرضها في disassembler.
يشحن Tentet مع موضوعين افتراضيين - موضوع "الضوء" ، و "مظلم". اعتمادًا على الألوان المستخدمة حاليًا من قِبل Disassembler ، ستحاول Tentet تحديد السمة التي تبدو أكثر ملاءمة.

يتم تخزين ملفات السمة على أنها JSON بسيطة على القرص وقابلة للتكوين بشكل كبير. إذا لم تكن راضيًا عن السمات أو الألوان الافتراضية ، فيمكنك إنشاء السمات الخاصة بك وببساطة إسقاطها في دليل موضوع المستخدم.
سوف تتذكر Tentet تفضيلات السمة الخاصة بك للأحمال والاستخدامات المستقبلية.
الوقت و تحفيز التصريح التمويل ، قد يشمل العمل المستقبلي:
أرحب بالمساهمات الخارجية والقضايا وطلبات الميزات. يرجى تقديم أي طلبات سحب إلى فرع develop هذا المستودع إذا كنت ترغب في النظر في إصدار مستقبلي.