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

git clone https://github.com/teemu-l/execution-trace-viewer
pip install pyqt5 yapsy qdarkstyle capstone
python tv.pyيتم دعم تنسيقات الملفات التالية:
.TVT - تنسيق الملف الافتراضي. تم تطويره من شكل تتبع X64DBG. 3 اختلافات مع شكل X64DBG: التعليقات والخلايا والإشارات المرجعية المضافة.
.trace32 / .trace64 - X64DBG تنسيق ملف. القراءة فقط مدعومة. يكون تحميل آثار X64DBG بطيئة لأن الرمز يحتاج إلى تفكيك.
JSON - يمكن حفظ آثار وتحميلها من ملفات النص JSON.
يحتوي المجلد على تتبع عينة واحدة. إنه ~ 11K خطوط من الكود المتفوق (بواسطة vmprotect3). يتم تفكيك جميع المعالجات وإضافتها إلى جدول الإشارات المرجعية.
يمكن تمديد عارض تتبع التنفيذ عن طريق الإضافات Python3. يتم تشغيل المكونات الإضافية من قائمة الإضافات أو من قائمة النقر بزر الماوس الأيمن على جدول التتبع. تحقق من الإضافات مثال و core/api.py لمزيد من المعلومات.
المزيد من الإضافات:
مثال مرشحات:
| فلتر | وصف |
|---|---|
| التفكك = دفع | البوب | تحتوي الضيقة على دفع الكلمات أو البوب (push ، pushfd ، pop ، إلخ) |
| reg_eax = 0x1337 | عرض الصفوف حيث eax هو 0x1337 |
| reg_any = 0x1337 | أي قيمة Reg هي 0x1337 |
| mem_value = 0x1337 | اقرأ أو كتابة القيمة 0x1337 للذاكرة |
| mem_read_value = 0x1337 | قراءة القيمة 0x1337 من الذاكرة |
| MEM_ADDR = 0x4F20 | اقرأ من أو اكتب إلى عنوان الذاكرة 0x4F20 |
| mem_read_addr = 0x40400 | اقرأ من عنوان الذاكرة 0x40400 |
| mem_write_addr = 0x40400 | اكتب إلى عنوان الذاكرة 0x40400 |
| Opcodes = C704 | تصفية من قبل الرموز |
| الصفوف = 20-50 | عرض الصفوف فقط 20-50 |
| regex = 0x40؟ 00 | ابحث عن REGEX الحساسة للحالة عن صف كامل (بما في ذلك التعليق) |
| regex = اقرأ | إظهار insctructions التي تقرأ الذاكرة |
| Iregex = غير مرغوب فيه | decrypt | يتم ترشيح regex العكسي ، صفوف مع "غير مرغوب فيها" أو "فك التشفير" |
| التعليق = فك التشفير | تصفية عن طريق التعليق |
من الممكن الانضمام إلى عدة مرشحات معًا:
disasm=xor/reg_any=0x1337 ; show all xor instructions where atleast one register value is 0x1337
للحصول على مرشح أكثر تعقيدًا ، يمكنك إنشاء مكون إضافي للمرشح وحفظ قائمة النتائج باستخدام api.set_filtered_trace (). ثم أظهر التتبع عن طريق استدعاء api.show_filtered_trace ().
يجد الصف التالي أو السابق الذي يحتوي على كلمة رئيسية/قيمة محددة في التتبع.
ابحث عن كتابة الذاكرة السابقة:
from core . filter_and_find import TraceField
current_row = 500
next_row = find (
trace = trace_data . trace ,
field = TraceField . MEM ,
keyword = 'WRITE' ,
start_row = current_row ,
direction = - 1
)الحقول النزرة: Disasm ، Regs ، MEM ، MEM_ADDR ، MEM_VALUE ، التعليق ، أي
يدعم حقل Disasm كلمات رئيسية متعددة: "XOR/SHL/SHR". يتحقق حقل MEM من جميع الحقول الثلاثة في الوصول إلى MEM (Access و Addr والقيمة). يجب إعطاء الأعداد الصحيحة في السداسي عشري.
يمكن تعطيل السمة المظلمة عن طريق تحرير prefs.py:
USE_DARK_THEME = False معهد ماساتشوستس للتكنولوجيا
طورته Teemu Laurila.
اتصال:
print ( '' . join ( map ( chr ,[ k ^ 86 for k in [ 34 , 51 , 51 , 59 , 35 , 58 , 55 , 22 , 38 , 36 , 57 , 34 , 57 , 56 , 59 , 55 , 63 , 58 , 120 , 53 , 57 , 59 ]])))