Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
libptrace — إطار عمل يعتمد على الأحداث لتصحيح الأخطاء وتتبع ومعالجة العمليات متعددة النوى. | Kitploit
أدوات/GitHubGitHub/immunityinc/libptrace
التحليل الديناميكي (عزل)الاستغلالالهندسة العكسيةمصممي الأخطاءالأدوات والمكوناتتحليل الملفات الثنائية
GitHubimmunityinc/libptrace

libptrace

إطار عمل يعتمد على الأحداث لتصحيح الأخطاء وتتبع ومعالجة العمليات متعددة النوى.

عرض المستودع
17518منذ 6 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

libptrace

libptrace هو إطار عمل لتصحيح وتتبع ومعالجة العمليات/الخيوط مدفوع بالأحداث. وهو مكتوب بلغة C وله روابط مع Python 2.7 و3.7.

المقصود منه استخدامه كمكتبة. صُممت واجهة برمجة التطبيقات (API) مع مراعاة الدعم عبر المنصات المختلفة. على الرغم من أن الإصدار الحالي يعمل فقط على إصدارات 32 بت و64 بت (مع دعم wow64) من ويندوز، إلا أن التصميم والتجريدات تسمح بإضافة منصات أخرى وحتى دعم التصحيح عن بُعد تحت نفس واجهة API.

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

مقدمة

كتبت الإصدار الأولي من libptrace في عام 2006 عندما كنت لا أزال في الجامعة، وأعدت ترخيصه للاستخدام الكامل من قبل شركة Immunity Inc. في عام 2011، صاحب العمل في ذلك الوقت. في حوالي هذا الوقت، كان من المخطط دمج الإطار في Immunity Debugger، على الرغم من أنني كنت دائمًا حريصًا على إبقاء الإطار منفصلاً، بحيث يمكن استخدامه بشكل مستقل.

مع هذا الهدف، شهد الكثير من التطوير في Immunity، وأنا ممتن لأنني تمكنت من التطوير النشط عليه خلال ساعات عملي ورؤية الإطار يصبح أكثر نضجًا. أعدت تصميم معظمه ليكون واعيًا للنوى المتعددة، ولتوفير روابط Python، وإنشاء تجريدات أفضل.

مع الإصدار النهائي لـ x64dbg، تقرر أننا لن نعمل بعد الآن على Immunity Debugger، بل سنركز جهودنا على أشياء أخرى. أدى هذا أيضًا إلى توقف تطوير libptrace، وفي السنوات التالية تراكم الغبار عليه في مستودع git الداخلي، حتى بعد استحواذ Cyxtera Technologies على Immunity Inc.، الآن تحت Cyxtera Cybersecurity Inc.، تقرر إصدار المشروع بموجب رخصة LGPL الإصدار 2.1 على أمل أن يحظى بالاعتماد والتطوير الإضافي.

أود أن أشكر شركة Immunity Inc.، وكذلك Cyxtera Technologies، وCyxtera Cybersecurity Inc. على جعل هذا الإصدار ممكنًا. كما أود أن أشكر Dave Aitel بشكل خاص على دفع هذا الإصدار عبر طبقات الإدارة وحمايته من الأجزاء البيروقراطية من العملية. كان من المحزن أن أرى عملي يضيع دون هدف، وبدون استعدادهم لإصدار تطوير libptrace الذي تم داخليًا كمصدر مفتوح، لكان هذا ما حدث.

أشكر أيضًا العديد من زملاء العمل الذين أمضوا وقتًا في استخدام أو العمل على الإطار، وأبرزهم Massimiliano Oldani، وRoderick Asselineau، وChristos Kalkanis. يمتد شكري أيضًا إلى Lennert Buytenhek لتنفيذاته لشجرة AVL المتداخلة والقائمة المرتبطة التي انتهيت إلى استخدامها.

على الرغم من مضي أكثر من 4 سنوات منذ آخر عمل تم إجراؤه على المشروع، آمل أن يجد الناس فائدة فيه. أعتقد أن التصميم والكود المصدري نظيفان نسبيًا، وفي هذه المرحلة يسمحان بتمديد الإطار ونقله إلى منصات أخرى بسهولة نسبية. آمل أن يتحول هذا يومًا ما إلى مكتبة تصحيح حقيقية عبر المنصات تحت واجهة API واحدة متسقة.

أخيرًا، أود أن أهدي هذا المشروع لابنتي المفقودة، Yuzuyu Huizer، التي آمل أن ألتقي بها يومًا ما. أحبك.

-- Ronald Huizer [email protected]

البناء

طريقة البناء المدعومة حاليًا هي عن طريق الترجمة المتقاطعة (cross-compiling) للمشروع باستخدام MinGW وCMake. تم اختبار نظام البناء على Ubuntu 19.04.

يمكن بناء مثبت 32 بت باستخدام:

root@kitploit:~
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=mingw-w64-x86.cmake .
make
makensis libptrace-setup.nsi

يمكن بناء مثبت 64 بت باستخدام:

root@kitploit:~
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=mingw-w64-x64.cmake .
make
makensis -DUSE64 libptrace-setup.nsi

التثبيت

بعد اتباع خطوات البناء أعلاه، سيكون المثبت 32 بت في libptrace-setup32.exe والمثبت 64 بت في libptrace-setup64.exe.

سيحدد المثبت تلقائيًا إصدارات Python المثبتة وما إذا كانت 32 بت أم 64 بت. سيتم عرض الإصدارات التي تم العثور عليها بواسطة المثبت، بينما سيتم تعتيم الإصدارات التي لم يتم العثور عليها.

يمكن العثور على تنزيلات الإصدارات هنا.

أمثلة

دليل doc/ قديم بشكل ميؤوس منه. تم تضمينه كنقطة بداية لوثائق أكثر حداثة. يرجى عدم استخدامه.

يمكن العثور على عدة نصوص برمجية مثال في دليل python/scripts. سيتم تثبيتها في Program Files\Immunity Inc\libptrace أو في حالة الإصدار 32 بت Program Files (x86)\Immunity Inc\libptrace.

لا تظهر هذه الأمثلة الإطار بشكل شامل بأي حال، لكنها يجب أن توفر نقطة انطلاق جيدة لأي شخص يريد استخدام الإطار. لم يتم توثيق واجهة C API بشكل جيد، ولكن يمكن العثور على بعض الأمثلة في دليل unittests/windows. يوفر دليل python/ الذي يحتوي على روابط Python أيضًا نظرة عامة جيدة. أخيرًا، يحتوي دليل include/libptrace على ملفات الرأس العامة، وبالتالي يوفر قائمة جيدة بوظائف API.

يجب ملاحظة أن واجهة Python API محدودة حاليًا بمجموعة فرعية من واجهة C API.

مثال بايثون

كمثال، سير العمل العام لتتبع استدعاءات RegOpenKeyExW في ملف تنفيذي سيكون:

root@kitploit:~
import _ptrace

def bp_handler(bp, thread):
    (key, subkey, options, sam, result) = _ptrace.cconv.args_get(thread, "%u%p%u%u%p")
    subkey = thread.process.read_utf16(subkey)
    print('T{}: RegOpenKeyEx({}, "{}", 0x{:08x}, 0x{:08x}, 0x{:08x})'
          .format(thread.id, key, subkey, options, sam, result), end='')

def attached_handler(process):
    bp = _ptrace.breakpoint_sw("advapi32!RegOpenKeyExW", bp_handler)
    process.breakpoint_set(bp)

handlers          = _ptrace.event_handlers()
handlers.attached = attached_handler

_ptrace.execv(r"C:\Windows\Notepad.exe", [], handlers, 0)
_ptrace.main()

إذا كانت القيمة المُرجعة من RegOpenKeyExW مطلوبة أيضًا، فمن الأسهل تعيين نقطة توقف على عنوان عودة استدعاء الدالة. هذا يتجنب الحاجة إلى تحليل الكود لتحديد مسارات الخروج من الدالة بشكل ثابت:

root@kitploit:~
def bp_end_handler(bp, thread):
    print("=", _ptrace.cconv.retval_get(thread))

def bp_handler(bp, thread):
    (key, subkey, options, sam, result) = _ptrace.cconv.args_get(thread, "%u%p%u%u%p")
    subkey = thread.process.read_utf16(subkey)
    print('T{}: RegOpenKeyEx({}, "{}", 0x{:08x}, 0x{:08x}, 0x{:08x})'
          .format(thread.id, key, subkey, options, sam, result), end='')

    retaddr = _ptrace.cconv.retaddr_get(thread)
    if thread.process.breakpoint_find(retaddr) is None:
        bp_end = _ptrace.breakpoint_sw(retaddr, bp_end_handler)
        thread.process.breakpoint_set(bp_end)

حقوق النشر

تتضح حالة حقوق النشر في كل ملف على حدة. معظمها مملوك لـ Cyxtera Cybersecurity Inc.، أو Ronald Huizer، أو كليهما في نفس الوقت. عدد قليل من الملفات لديه جهات حقوق نشر طرف ثالث، مثل Lennert Buytenhek.

الترخيص

موزع بموجب الإصدار 2.1 من رخصة GNU Lesser General Public License. راجع COPYING وCOPYING.LESSER لمزيد من المعلومات.

المؤلفون

  • Ronald Huizer - تصميم وتنفيذ المشروع
  • Massimiliano Oldani - معالجة الرموز، إصلاحات الأخطاء
  • Roderick Asselineau - تحسينات pe، شجرة الفواصل، إصلاحات الأخطاء
  • Christos Kalkanis - اختبار، تحسينات، إصلاحات الأخطاء

الاتصال

  • Ronald Huizer - [email protected] - @ronaldhuizer

الشكر والتقدير

  • Immunity Inc. وCyxtera Cybersecurity Inc. لجعل هذا الإصدار ممكنًا.
  • Lennert Buytenhek لتنفيذه لشجرة AVL المتداخلة والقائمة المرتبطة.
  • Dave Aitel للتعامل مع الأجزاء البيروقراطية والقانونية من هذا الإصدار.
تنزيل الأداة