TinyTracer - متتبع API/التعليمات للفك
TinyTracer (من قبل hasherezade) هي أداة تتبع ديناميكي مبنية على Intel Pin. تشغّل ملف تنفيذي هدف وتنتج سجل تتبع لـ استدعاءات API والتعليمات المحددة، وتسجل كل حدث كإزاحة نسبية للوحدة (RVA) بحيث يظل الناتج ذا مغزى حتى بالنسبة للكود المنقول. لأن Pin تقوم بالأداة على مستوى منخفض، فإن TinyTracer لا تتأثر بمعظم حيل مكافحة التصحيح التي يستخدمها ملخص الحزمة، مما يجعلها ممتازة لتحديد نقطة الدخول الأصلية (OEP) لعينة وملاحظة ما تفعله بالفعل.
فقط للتحليل المرخص للبرامج الضارة. قم بتشغيل العينات غير الموثوقة فقط في آلة افتراضية/صندوق حماية معزول.
المتطلبات
- Intel Pin (إطار عمل التجميع الديناميكي)
- جهاز تحليل Windows (x86/x64)
- ملف TinyTracer المترجم
TinyTracer.dll (Pintool)
التثبيت
| الخطوة | الكيفية |
|---|
| احصل على Pin | قم بتنزيل Intel Pin وقم بتعيين PIN_ROOT |
| احصل على TinyTracer | قم بتنزيل إصدار أو بناء Pintool |
| نصوص مساعدة | استخدم run_me.bat المرفقة / مساعدات المثبت |
| التحقق | قم بالتشغيل ضد EXE معروف وتحقق من الناتج .tag/log |
تشغيل التتبع
# استدعاء مفاهيمي (عبر المساعد المرفق أو pin مباشرة)
pin.exe -t TinyTracer.dll -o output.tag -- target.exe
| الرايات | الغرض |
|---|
-t TinyTracer.dll | حمّل TinyTracer كـ Pintool |
-o FILE | مسار سجل التتبع (.tag) |
-m MODULE | قيّد التتبع إلى وحدة |
-b | تتبع الكتل الأساسية / أحداث أكثر دقة |
-- target args | البرنامج المراد تتبعه وحججه |
ما يحتويه سجل التتبع
| الإدخال | المعنى |
|---|
RVA;called: FUNC | استدعاء API في عنوان نسبي للوحدة |
| انتقالات الأقسام | التنفيذ ينتقل بين الأقسام (فك التغليف) |
| استدعاءات TLS | خطافات مكافحة التحليل/التنفيذ المبكرة |
| استدعاءات فرعية | اختياريًا، أهداف الاتصال الداخلية |
التسجيل القائم على RVA هو المفتاح: حتى بعد أن تفكك حزمة وتقفز إلى كود جديد، تبقى الإدخالات مرسومة على الوحدة بحيث يمكنك تعيينها مرة أخرى في أداة فك التجميع.
البحث عن OEP
الاستخدام الكلاسيكي: لاحظ أين يهبط التنفيذ بعد انتهاء ملخص الحزمة.
| الخطوة | ابحث عن |
|---|
| 1 | قم بتشغيل العينة المعبأة تحت TinyTracer |
| 2 | راقب القفز إلى قسم لم يُكتب من قبل |
| 3 | الانفجارات “الحقيقية” API الأولى (GetModuleHandle وما إلى ذلك) تحدد الكود المفكوك |
| 4 | لاحظ RVA — تلك المنطقة هي مرشح OEP الخاص بك |
| 5 | أفرغ عند تلك النقطة (على سبيل المثال مع PE-sieve) وحلل بشكل ثابت |
التكامل مع مجموعة الأدوات
| الأداة | الدور إلى جانب TinyTracer |
|---|
| PE-sieve | فرّغ الوحدة المفكوكة الموجودة عند OEP |
| x64dbg | اضبط نقطة فاصلة عند RVA OEP للتحليل الأعمق |
| Detect It Easy | حدّد الحزمة قبل التتبع |
| Ghidra | عيّن RVAs المتتبعة إلى فك التجميع |
سير العمل الشائع
# تتبع السلوك الخاص بـ API العينة
pin -t TinyTracer.dll -o sample.tag -- sample.exe
# → راجع sample.tag للبحث عن تسلسلات API المريبة (crypto وnetwork وinjection)
# البحث عن OEP لحزمة غير معروفة
# 1) تتبع، 2) ابحث عن انتقال القسم إلى كود مفكوك،
# 3) PE-sieve للفرغ، 4) حلل الملف الثنائي النظيف
TinyTracer مقابل الأساليب ذات الصلة
| الجانب | TinyTracer | x64dbg (يدوي) | API Monitor |
|---|
| الأساس | عملية Pin | المصحح التفاعلي | ربط API |
| مقاومة مكافحة التصحيح | عالية | يحتاج ScyllaHide | معتدلة |
| الناتج | سجل RVA | تفاعلي | سجل API المباشر |
| الأفضل لـ | تتبع OEP/السلوك الآلي | stepping اليدوي | مشاهدة استدعاءات API |
الموارد