
BOF مصمم لفحص ذاكرة العمليات والعناوين
BOF من نوع CS يمكن استخدامه لفحص ذاكرة العملية والعناوين والرموز!
| الأمر | الوصف |
|---|---|
| lm | عرض جميع الوحدات المحملة مع العنوان الأساسي ونقطة الدخول والمزيد |
| addr | طباعة البايتات في عنوان ذاكرة معين |
| meminfo | طباعة معلومات حول عنوان ذاكرة معين |
| lt | طباعة قائمة بجميع الخيوط النشطة في العملية الحالية مع بعض المعلومات الأساسية |
| regdump | طباعة محتويات سجلات خيط |
أرسل التصحيحات! أرسل توصيات لأوامر إضافية!
يقوم الأمر lm بإدراج الوحدات المحملة في العملية الحالية. عند استدعائه بدون وسائط، يعيد كل DLL محملة؛ عند إعطاء اسم DLL، يعيد تفاصيل لهذه الوحدة فقط (العنوان الأساسي، نقطة الدخول، الحجم، المسار الكامل).
الصيغة
psi lm [dll]
المعاملات:
dll (اختياري): اسم DLL محملة للبحث عنها. إذا تم حذفه، يتم إدراج كل وحدة محملة.مثال:
psi lm
psi lm ntdll.dll
psi lm kernel32.dll
يقوم الأمر addr بإرجاع القيمة في عنوان معين.
الصيغة:
psi addr <address> <type> [count]
address: العنوان المراد فحصه بالنظام الست عشريtype: يتحكم في كيفية معالجة نوع البيانات في العنوان المحدد. القيم الصالحة هي: BYTE, WORD, DWORD, LPVOID. لذلك، إذا قدم المستخدم قيمة DWORD، فسيتم قراءة قطعة بحجم size(DWORD) في ذلك العنوان. تُطبع كل قطعة كقيمة little-endian مسبوقة بـ 0x بعرض يساوي حجم النوع (مثلاً صف WORD يتجمع كـ 0xaabb 0xccdd ...). تطابق أسماء الأنواع بشكل غير حساس لحالة الأحرف. تم حذف الأسماء المستعارة Win32 ذات الحجم نفسه (int, ULONG, ULONG64, HANDLE، إلخ) عمدًا — استخدم BYTE/WORD/DWORD/ لقراءات 1/2/4/8 بايت.يجب أن يكون المخرجات hexdump يبدأ من العنوان المحدد مع تجميع القطع معًا.
مثال:
psi addr 0xdeadbeef DWORD 2
psi addr 0xdeadbeef LPVOID
psi addr 0xdeadbeef WORD 8
يقوم الأمر meminfo بإرجاع معلومات متنوعة حول عنوان ذاكرة معين بما في ذلك:
الصيغة:
psi meminfo <address>
address: العنوان المراد فحصه بالنظام الست عشريمثال:
psi addr 0xdeadbeef
يقوم الأمر lt بطباعة جميع خيوط العملية الحالية مع TID ونقطة الدخول.
الصيغة
psi lt
يقوم الأمر regdump بتفريغ سجلات وحدة المعالجة المركزية لخيط. معرف الخيط (tid) اختياري: إذا تم حذفه، يتم تفريغ خيط Beacon المتصل عبر RtlCaptureContext؛ إذا تم توفيره، يتم تعليق ذلك الخيط في العملية الحالية طوال مدة اللقطة. إذا تم توفير اسم سجل، فسيتم طباعة ذلك السجل فقط؛ وإلا يتم تفريغ جميع السجلات المدعومة، بما في ذلك مجموعة GPR كاملة لـ x64 بالإضافة إلى RFLAGS، وسجلات القطاع، وسجلات التصحيح، و SSE (XMM)، و AVX/AVX2 (YMM)، و AVX-512 (ZMM / kmask) — الثلاثة الأخيرة مقيدة بدعم ميزات وحدة المعالجة المركزية المضيفة. تطابق أسماء السجلات بشكل غير حساس لحالة الأحرف وتقبل الأسماء المستعارة ذات العرض الفرعي (مثلاً eax, ax, ah, al كلها تحل ضد نفس GPR الأساسي).
الصيغة:
psi regdump [tid] [register]
tid: معرف خيط اختياري لتفريغ سياقه. إذا تم حذفه، يتم التقاط خيط Beacon المتصل مباشرة.register: اسم سجل اختياري لتصفية المخرجات إلى سجل واحد. يتطلب تحديد tid.مثال:
psi regdump
psi regdump 12345
psi regdump 12345 rip
psi regdump 12345 ymm0
لتجميع BOF، قم بتحديث ملف src/hello.cc أو Makefile لعكس التغييرات اللازمة ثم اكتب:
$ docker-compose up --build
بُنيت باستخدام القالب من: https://github.com/whokilleddb/cs-bof-template
LPVOIDcount: عدد القطع (chunks) المراد قراءتها. هذه الوسيطة اختيارية والقيمة الافتراضية هي واحد.