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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/quosecgmbh/grap
التحليل الثابتالهندسة العكسيةمصممي الأخطاءتحليل البرمجيات الخبيثةتحليل الملفات الثنائية
GitHubquosecgmbh/grap

grap

تحديد ومطابقة أنماط الرسوم البيانية المعرفة من قبل المستخدم مقابل الرسوم البيانية لتدفق التحكم الثنائية باستخدام مفكك يعتمد على Capstone، مع دعم واجهة سطر الأوامر وروابط بايثون وإضافة IDA.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

grap: تعريف ومطابقة أنماط الرسوم البيانية داخل الملفات الثنائية

https://github.com/QuoSecGmbH/grap

يأخذ grap الأنماط والملفات الثنائية، ويستخدم مفككًا يعتمد على Casptone للحصول على رسوم بيانية لتدفق التحكم من الملفات الثنائية، ثم يطابق الأنماط بها.

الأنماط هي رسوم بيانية يحددها المستخدم مع شروط تعليمات ("opcode is xor and arg1 is eax") وشروط تكرار (3 تعليمات متطابقة، كتل أساسية...).

يتوفر grap كأداة مستقلة مع مفكك وروابط بايثون، وكإضافة IDA تستفيد من التفكيك الذي يقوم به IDA والمهندس العكسي.

الدعم:

  • الملفات: تفكيك PE و ELF والثنائي الخام، المزيد من الملفات يجب أن تعمل داخل IDA
  • المعمارية: x86 و x86_64

مطابقة نمط سريع:

مطابقة نمط سريع

مطابقة نمط كامل:

مطابقة نمط كامل

مطابقة على ملفات متعددة:

مطابقة على ملفات متعددة

إنشاء ومطابقة الأنماط مباشرة من IDA:

إنشاء ومطابقة الأنماط مباشرة من IDA

التثبيت

يصف هذا المستند كيفية بناء وتثبيت grap على توزيعة لينكس.

يمكنك أيضًا قراءة:

  • WINDOWS.md: تثبيت grap على ويندوز
  • IDA.md: تعليمات التثبيت والاستخدام لإضافة IDA

المتطلبات

بالإضافة إلى المترجمات (build-essential)، يجب تثبيت التبعيات التالية:

  • cmake
  • bison
  • flex
  • libboost-regex-dev
  • libboost-system-dev
  • libboost-filesystem-dev
  • libseccomp-dev
  • python3-dev
  • python3-pefile
  • python3-pyelftools
  • python3-capstone
  • swig (الإصدار 3 أو أحدث إلزامي)

وبالتالي على Ubuntu / Debian، يجب أن يعمل هذا:

root@kitploit:~
sudo apt-get install build-essential cmake bison flex libboost-regex-dev libboost-system-dev libboost-filesystem-dev libseccomp-dev python3-dev python3-pefile python3-pyelftools python3-capstone swig

يرجى ملاحظة أن هذه تم اختبارها لأحدث إصدار Ubuntu LTS (18.04.3). قد تختلف الحزم حسب توزيعتك.

البناء والتثبيت

الأوامر التالية ستبني وتثبت المشروع:

  • mkdir build; cd build/ حيث ننصحك ببناء المشروع في دليل مخصص
  • cmake ../src/; make سيبني باستخدام cmake و make
  • sudo make install سيثبت grap في /usr/local/bin/

قد يفشل SWIG في العثور على python3 إذا كان الإصدار الافتراضي لديك هو python2، ويمكن التغلب على ذلك بالتبديل إلى python3 كافتراضي. على سبيل المثال على Ubuntu:

root@kitploit:~
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

الاستخدام

يمكن تشغيل الأداة باستخدام الأمر التالي:

$ grap [options] pattern test_paths

فيما يلي بعض الأمثلة على الخيارات المدعومة:

  • grap -h: يصف الخيارات المدعومة

يمكن ترك grap يستنتج نمطًا من سلسلة. يتم دعم عدد قليل من الخيارات فقط ولكن هذا مفيد للنمذجة الأولية:

  • grap "opcode is xor and arg1 contains '['" (test.exe): يبحث عن xor مع كتابة في الذاكرة
  • grap -v "sub->xor->sub" (test.exe): -v سيخرج مسار النمط المستنتج

اختر كيف يتم تفكيك الملفات الثنائية:

  • grap -od (pattern.grapp) samples/*: يفكك الملفات في مجلد samples/ بدون محاولة المطابقة
  • grap -f (pattern.grapp) (test.exe): يجبر إعادة تفكيك الثنائي، ثم يطابقه مع pattern.grapp
  • grap --raw (pattern.grapp) (test.bin): تفكيك ملف خام (استخدم --raw-64 للملفات الثنائية 64 بت)

تحكم في درجة تفصيل المخرجات:

  • grap -q -sa (pattern.grapp) (samples/*.grapcfg): يطابق الملفات المفككة، يعرض الملفات المطابقة وغير المطابقة، سطر واحد لكل ملف
  • grap -m (pattern.grapp) (test.grapcfg): يعرض جميع العقد المطابقة

اختر أين تُكتب الملفات المفككة (.grapcfg)؛ طابق ملفات متعددة مقابل أنماط متعددة:

  • grap patterns/basic_block_loop.grapp -o ls.grapcfg /bin/ls: يفكك ls إلى ls.grapp ويبحث عن حلقات الكتلة الأساسية
  • grap (pattern1.grapp) -p (pattern2.grapp) (test.exe): يطابق مقابل ملفات أنماط متعددة
  • grap -r -q patterns/ /bin/ -o /tmp/ : يفكك جميع الملفات من /bin/ إلى /tmp/ ويطابقها ضد جميع أنماط .grapp من patterns/ (الخيار المتكرر -r ينطبق على /bin/، وليس على patterns/)

أمثلة على الأنماط

النمط التالي يكتشف حلقة فك تشفير تتكون من xor متبوع بـ sub موجودة في عينة Backspace:

root@kitploit:~
digraph decryption_md5_4ee00c46da143ba70f7e6270960823be {
A [cond=true, repeat=3]
B [cond="opcode is xor and arg2 is 0x11"]
C [cond="opcode is sub and arg2 is 0x25"]
D [cond=true, repeat=3]
E [cond="opcode beginswith j and nchildren == 2"]

A -> B
B -> C
C -> D
D -> E
E -> A [childnumber=2]
}

لاحظ أن ملفات الأنماط يمكن أن تحتوي على رسوم بيانية متعددة.

يمكنك العثور على أمثلة أنماط إضافية في دليلين:

  • patterns/ يحتوي على عدد قليل من الأنماط التي يمكن أن تكون مفيدة على أي ثنائي مثل نمط للكشف عن الحلقات القصيرة أو للكشف عن حلقة على الكتل الأساسية،
  • examples/ يحتوي على أنماط مستخدمة ضد برمجية Backspace الخبيثة (انظر examples/backspace_samples.md للحصول على عينات الثنائي).

دروس تعليمية وأمثلة إضافية

على عينات البرامج الضارة:

  • التنقل في عينات البرامج الضارة باستخدام grap (سطر الأوامر، IDA): https://yaps8.github.io/blog/grap_qakbot_navigation
  • أتمتة تحليل الدوال وفك التشفير (روابط بايثون): https://yaps8.github.io/blog/grap_qakbot_strings

استخدام روابط بايثون:

  • ملف بايثون يوضح كيفية استخدام الروابط لتحليل عينات Backspace: examples/analyze_backspace.py
  • أمثلة على برمجة IDApython مدمجة داخل إضافة IDA، يمكنك رؤيتها هنا: https://yaps8.github.io/grap/html/scripting_css.html

الوثائق

ستجد المزيد من الوثائق في مجلد doc/:

  • doc/COMPILE_OPTIONS.md
  • doc/DEBUG.md
  • doc/TESTS.md
  • doc/syntax_highlighting.md

تم توضيح بناء جملة أنماط ورسوم بيانية الاختبار في ملف grap_graphs.pdf ضمن قسم الإصدار.

الترخيص

grap مرخص تحت رخصة MIT. يمكن العثور على النص الكامل للرخصة في LICENSE.

تنزيل الأداة