Voltron عبارة عن مجموعة أدوات واجهة مستخدم قابلة للتوسيع مكتوبة بلغة Python. ويهدف إلى تحسين تجربة المستخدم لمختلف مصححات الأخطاء (LLDB وGDB وVDB وWinDbg) من خلال تمكين إرفاق طرق عرض الأداة المساعدة التي يمكنها استرداد البيانات وعرضها من مضيف مصحح الأخطاء. ومن خلال تشغيل طرق العرض هذه في أجهزة TTY أخرى، يمكنك إنشاء واجهة مستخدم مخصصة لمصحح الأخطاء لتناسب احتياجاتك.
لا يهدف فولترون إلى أن يكون كل شيء للجميع. إنه ليس بديلاً بالجملة لـ CLI الخاص بمصحح الأخطاء. بدلاً من ذلك، فهو يهدف إلى استكمال الإعداد الحالي الخاص بك والسماح لك بتوسيع مصحح أخطاء CLI الخاص بك بقدر ما تريد. إذا كنت تريد فقط عرض محتويات السجل في نافذة بجانب مصحح الأخطاء، فيمكنك القيام بذلك. إذا كنت تريد بذل قصارى جهدك والحصول على شيء يشبه OllyDbg، فيمكنك القيام بذلك أيضًا.
يتم توفير طرق العرض المضمنة لـ:
يبدو إعداد المؤلف كما يلي:
يمكن تقسيم أي أمر مصحح أخطاء إلى طريقة عرض وتمييزه باستخدام معجم Pygments محدد:
المزيد من لقطات الشاشة هنا.
يدعم Voltron LLDB وGDB وVDB وWinDbg/CDB (عبر PyKD) ويعمل على أنظمة التشغيل macOS وLinux وWindows.
لا يزال دعم WinDbg جديدًا إلى حد ما، يرجى فتح مشكلة إذا كانت لديك مشاكل.
يتم دعم البنى التالية:
lldb | gdb | vdb | com.windbg | |
---|---|---|---|---|
x86 | ✓ | ✓ | ✓ | ✓ |
x86_64 | ✓ | ✓ | ✓ | ✓ |
ذراع | ✓ | ✓ | ✓ | ✗ |
ذراع64 | ✓ | ✗ | ✗ | ✗ |
powerpc | ✗ | ✓ | ✗ | ✗ |
ملاحظة: يتم دعم مشتقات macOS وDebian فقط بشكل كامل بواسطة البرنامج النصي للتثبيت. من المفترض ألا يفشل في توزيعات Linux الأخرى، لكنه لن يحاول تثبيت تبعيات الحزمة. إذا كنت تستخدم توزيعة أخرى، فقم بإلقاء نظرة على install.sh
لمعرفة التبعيات التي قد تحتاج إلى تثبيتها قبل تشغيلها.
قم بتنزيل المصدر وتشغيل البرنامج النصي للتثبيت:
$ git clone https://github.com/snare/voltron
$ cd voltron
$ ./install.sh
افتراضيًا، سيتم تثبيت البرنامج النصي للتثبيت في دليل site-packages
الخاص بالمستخدم. إذا كنت تريد التثبيت في site-packages
النظام، فاستخدم العلامة -s
:
$ ./install.sh -s
يمكنك أيضًا التثبيت في بيئة افتراضية (لـ LLDB فقط) مثل هذا:
$ ./install.sh -v /path/to/venv -b lldb
إذا كنت تستخدم نظام التشغيل Windows بدون shell، أو تواجه مشكلات في التثبيت، أو تفضل التثبيت يدويًا، فيرجى مراجعة وثائق التثبيت اليدوي.
إذا كان مصحح الأخطاء الخاص بك يحتوي على برنامج نصي init ( .lldbinit
لـ LLDB أو .gdbinit
لـ GDB) فقم بتكوينه لتحميل Voltron عندما يبدأ عن طريق تحديد مصدر البرنامج النصي لنقطة الإدخال entry.py
. المسار الكامل سيكون داخل حزمة voltron
. على سبيل المثال، في نظام التشغيل macOS قد يكون /Library/Python/2.7/site-packages/voltron/entry.py . سيضيف البرنامج النصي install.sh
هذا إلى ملف .gdbinit
أو .lldbinit
تلقائيًا إذا اكتشف GDB أو LLDB في المسار الخاص بك.
إل دي بي:
command script import /path/to/voltron/entry.py
قاعدة البيانات العالمية:
source /path/to/voltron/entry.py
ابدأ تشغيل مصحح الأخطاء وقم بتهيئة Voltron يدويًا إذا لزم الأمر.
في الإصدارات الحديثة من LLDB، لا تحتاج إلى تهيئة Voltron يدويًا:
$ lldb target_binary
في الإصدارات الأقدم من LLDB، تحتاج إلى استدعاء voltron init
بعد تحميل الإصدار السفلي:
$ lldb target_binary
(lldb) voltron init
قاعدة البيانات العالمية:
$ gdb target_binary
في دي بي:
$ ./vdbbin target_binary
> script /path/to/voltron/entry.py
يتم دعم WinDbg/CDB فقط للتشغيل عبر Bash مع منطقة مستخدم Linux. يختبر المؤلف باستخدام Git Bash وConEmu. يمكن تحميل PyKD وVoltron في أمر واحد عند تشغيل مصحح الأخطاء:
$ cdb -c '.load C:pathtopykd.pyd ; !py --global C:pathtovoltronentry.py' target_binary
في محطة أخرى (أستخدم أجزاء iTerm) ابدأ إحدى طرق عرض واجهة المستخدم. سيتم تحديث طرق العرض على LLDB وWinDbg وGDB على الفور. على VDB لن يتم تحديثهم حتى يتوقف المستوى الأدنى (عند نقطة توقف، بعد خطوة، وما إلى ذلك):
$ voltron view register
$ voltron view stack
$ voltron view disasm
$ voltron view backtrace
تعيين نقطة توقف وتشغيل الخاص بك أقل شأنا.
(*db) b main
(*db) run
عندما يصل مصحح الأخطاء إلى نقطة التوقف، سيتم تحديث العروض لتعكس الحالة الحالية للسجلات والمكدس والذاكرة وما إلى ذلك. يتم تحديث العروض بعد تنفيذ كل أمر في واجهة سطر الأوامر لمصحح الأخطاء، باستخدام آلية "إيقاف الخطاف" الخاصة بمصحح الأخطاء. لذلك في كل مرة تخطو فيها، أو تستمر وتصل إلى نقطة توقف، سيتم تحديث العروض.
انظر الويكي على جيثب.
س: لماذا أحصل على ImportError
عند تحميل Voltron؟
ج: ربما لديك إصدارات متعددة من Python مثبتة وقمت بتثبيت Voltron باستخدام الإصدار الخاطئ. راجع تعليمات التثبيت الأكثر تفصيلاً.
س: مرفق البيئة العالمية؟ بيدا؟ PwnDbg؟ gdbinit لـ fG؟
ج: جميع الإضافات الرائعة جدًا لـ GDB. توفر هذه الأدوات في المقام الأول مجموعات من الأوامر الإضافية لمهام الاستغلال، ولكن كل منها يوفر أيضًا عرض "سياق" مع عرض السجلات والمكدس والتعليمات البرمجية وما إلى ذلك، مثل Voltron. تقوم هذه الأدوات بطباعة عرض السياق الخاص بها في وحدة تحكم مصحح الأخطاء في كل مرة يتوقف فيها مصحح الأخطاء. يتخذ Voltron نهجًا مختلفًا من خلال تضمين زرع خادم RPC في مصحح الأخطاء وتمكين إرفاق طرق العرض من المحطات الطرفية الأخرى (أو حتى متصفحات الويب، أو المزامنة الآن مع Binary Ninja)، مما يسمح للمستخدم ببناء واجهة أكثر نظافة متعددة النوافذ المصحح الخاص بهم. يعمل Voltron بشكل رائع إلى جانب كل هذه الأدوات. يمكنك فقط تعطيل عرض السياق في ملحق GDB الذي تختاره وربط بعض طرق عرض Voltron، مع الاستمرار في الحصول على جميع فوائد الأوامر المفيدة التي تضيفها هذه الأدوات.
راجع أداة تعقب المشكلات على جيثب لمزيد من المعلومات أو لإرسال المشكلات.
إذا كنت تواجه خطأ ImportError
أثناء تحميل Voltron، فيرجى التأكد من اتباع تعليمات التثبيت الخاصة بالنظام الأساسي الخاص بك.
في الإصدارات الأقدم من LLDB، يجب تشغيل الأمر voltron init
يدويًا بعد تحميل هدف التصحيح، حيث يجب تحميل الهدف قبل تثبيت خطافات Voltron. سيحاول Voltron تسجيل معالج الأحداث الخاص به تلقائيًا، وسيُعلم المستخدم إذا كان voltron init
مطلوبًا.
مزيد من المعلومات حول دعم WinDbg/CDB هنا.
يستخدم المؤلفون بشكل أساسي Voltron مع أحدث إصدار من LLDB على نظام التشغيل macOS. سنحاول اختبار كل شيء على أكبر عدد ممكن من الأنظمة الأساسية والبنيات قبل الإصدارات، ولكن LLDB/macOS/x64 ستكون التركيبة الأكثر استخدامًا إلى حد بعيد. نأمل ألا يشعل فولترون النار في حيواناتك الأليفة، بل YMMV.
انظر ملف الترخيص.
إذا كنت تستخدم هذا ولا تكرهه، فاشتر لي بيرة في أحد المؤتمرات في وقت ما. يمتد هذا الترخيص أيضًا إلى المساهمين الآخرين - من المؤكد أن ريكو يستحق القليل من البيرة لمساهماته.
شكرًا لأصحاب العمل السابقين Assurance وAzimuth Security لإعطائي الوقت الكافي للعمل على هذا الأمر.
الدعائم لريتشو لجميع مساهماته لفولترون.
كان gdbinit الخاص بـ fG! هو مصدر الإلهام الأصلي لهذا المشروع.
شكرًا لـ Willi على تنفيذ دعم VDB.
يستخدم Voltron الآن Capstone للتفكيك بالإضافة إلى آلية التفكيك الداخلية لمضيفي مصحح الأخطاء. Capstone عبارة عن أداة تفكيك قوية ومفتوحة المصدر ومتعددة البنى التحتية والتي يتم بناء الجيل التالي من أدوات الهندسة العكسية وتصحيح الأخطاء عليها. تحقق من ذلك.
شكرا لgrazfather للمساهمات المستمرة.