Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
FindFunc — إضافة لـ IDA Pro لتصفية الدوال بناءً على أنماط التجميع، تسلسلات البايت، مراجع السلاسل/الأسماء، وقيود الحجم، مع بحث قائم على القواعد ونسخ ثنائي متقدم. | Kitploit
أدوات/GitHubGitHub/felixber/findfunc
التحليل الثابتتحليل الكودالهندسة العكسيةمصممي الأخطاءتحليل الملفات الثنائية
GitHubfelixber/findfunc

FindFunc

إضافة لـ IDA Pro لتصفية الدوال بناءً على أنماط التجميع، تسلسلات البايت، مراجع السلاسل/الأسماء، وقيود الحجم، مع بحث قائم على القواعد ونسخ ثنائي متقدم.

عرض المستودع
3623623منذ 11 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

FindFunc: التصفية/العثور المتقدمة على الدوال في IDA Pro

FindFunc هي إضافة لـ IDA Pro تتيح العثور على دوال الكود التي تحتوي على نمط معين من لغة التجميع أو البايت، أو تشير إلى اسم أو سلسلة نصية معينة، أو تلتزم بقيود متنوعة أخرى.

حصلت FindFunc على المركز الثالث في مسابقة 2022 HexRays IDA Pro Plugin Contest!

ffmain

التصفية باستخدام القواعد

الوظيفة الرئيسية لـ FindFunc هي السماح للمستخدم بتحديد مجموعة من "القواعد" أو القيود التي يجب أن تستوفيها دالة الكود في IDA Pro. ثم ستقوم FF بالعثور على جميع الدوال التي تستوفي جميع القواعد (حاليًا جميع القواعد في حالة "و" منطقية). استثناء: يمكن "عكس" القواعد لتكون مطابقات سلبية. وبالتالي تلتزم هذه القواعد بـ "و ليس".

ستقوم FF بجدولة القواعد بترتيب ذكي لتقليل وقت المعالجة. نظرة عامة على الميزات:

  • حاليًا 6 قواعد متاحة، انظر أدناه
  • تدعم قطع الدوال (function chunks)
  • جدولة ذكية للقواعد لتحسين الأداء
  • حفظ/تحميل القواعد من/إلى ملف بتنسيق ASCII بسيط
  • عدة علامات تبويب مستقلة للتجريب
  • نسخ القواعد بين علامات التبويب عبر الحافظة (نفس تنسيق الملف)
  • حفظ الجلسة بأكملها (جميع علامات التبويب) إلى ملف
  • نسخ متقدم لبايتات التعليمات (الكل، الرموز التشغيلية فقط، الكل باستثناء القيم المباشرة، ...)
  • استنساخ علامات التبويب لإجراء تجارب سريعة مع تحسين النتائج
  • مطابقة الكود تحترم بادئة حجم العنوان (Addressing-Size-Prefix) و بادئة حجم المعامل (Operand-Size-Prefix)

زر "Find Functions" يمسح النتائج الحالية ويبدأ بحثًا جديدًا، "Refine Results" يأخذ في الاعتبار نتائج البحث السابقة فقط.

النسخ الثنائي المتقدم

ميزة ثانوية لـ FF هي خيار نسخ التمثيل الثنائي للتعليمات بالخيارات التالية:

  • نسخ الكل -> نسخ جميع البايتات إلى الحافظة
  • نسخ بدون قيم مباشرة -> إخفاء (AA ?? BB) أي قيم مباشرة في بايتات التعليمات
  • الرمز التشغيلي فقط -> سيتم إخفاء كل شيء باستثناء الرمز (الرموز) التشغيلية الفعلية للتعليمات (والبادئات)
  • ...

انظر قسم "النسخ المتقدم" أدناه للتفاصيل. هذه الميزة تكمل قاعدة نمط البايت بشكل رائع!

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

FindFunc هي إضافة Python لـ IDA Pro بدون تبعيات حزم خارجية. يمكن تثبيتها عن طريق تنزيل المستودع ونسخ ملف 'findfuncmain.py' ومجلد 'findfunc' إلى دليل الإضافات الخاص بـ IDA Pro. بالنسبة لـ IDA 9.0+ يمكن أيضًا استنساخ المستودع مباشرة في دليل الإضافات. على أي حال، لا يلزم البناء.

المتطلبات: IDA Pro 8.x (8.3+) مع بيئة python3. FindFunc مصممة لمعمارية x86/x64 فقط. تم اختبارها مع IDA 8.3 - 9.2، python 3.11 على Windows 10 + 11

القواعد المتاحة

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

نمط الكود

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

  • "pass" -> يطابق أي تعليمة مع أي معاملات
  • "mov* any,any" -> يطابق التعليمات ذات التذكير "mov*" (على سبيل المثال mov, movzx, ...) وأي وسيطين.
  • "mov eax, r32" -> يطابق أي تعليمة ذات تذكير "mov"، أول معامل سجل eax وثاني معامل أي سجل 32 بت.
    • بالمثل: r لأي سجل، r8/r16/r32/r64 لسجل بعرض معين، "imm" لأي قيمة فورية
  • "mov r64, imm" -> يطابق أي نقل لثابت إلى سجل 64 بت
  • "any r64,r64" -> يطابق أي عملية بين سجلين 64 بت
  • mov -> يطابق أي تعليمة من تذكير mov

أمثلة أخرى:

mov r64, [r32 * 8 + 0x100]
mov r, [r * 8 - 0x100]
mov r64, [r32 * 8 + imm]
pass
mov r, word [eax + r32 * 8 - 0x100]
any r64, r64
push imm
push any

ملاحظات هامة: كن حذرًا عند نسخ لغة التجميع من IDA. يخلط IDA أسماء المتغيرات المحلية ومعلومات أخرى في التعليمات مما يؤدي إلى فشل المطابقة. أيضًا، التسميات (labels) غير مدعومة ("call sub_123456").

لاحظ أن أنماط الكود هي أغلى قاعدة، وإذا كانت قواعد الكود فقط موجودة، فلن يكون أمام FF خيار سوى تفكيك قاعدة البيانات بأكملها. قد يستغرق هذا عدة دقائق للملفات الثنائية الكبيرة جدًا. انظر ملاحظات حول الأداء أدناه.

القيمة الفورية (ثابت)

يجب أن تحتوي الدالة على القيمة الفورية المحددة مرة واحدة على الأقل في أي موضع. القيمة الفورية هي قيمة ثابتة في التمثيل الثنائي للتعليمة. أمثلة على التعليمات المطابقة للقيمة الفورية 0x100:

mov eax, 0x100
mov eax, [0x100]
and al, [eax + ebx*8 + 0x100]
push 0x100

يمكن لصق القيم الفورية مباشرة من الحافظة في قائمة القواعد. ملاحظة: يقوم IDA بمطابقة شاملة لأي حجم وأي موضع للقيمة الفورية. إذا كنت تعلم أنها ذات عرض محدد 4 أو 8 بايت، يمكن أن يكون نمط البايت أسرع (لكنه قد يعطي نتائج إيجابية خاطئة).

نمط البايت

يجب أن تحتوي الدالة على نمط البايت المحدد مرة واحدة على الأقل. النمط بنفس تنسيق البحث الثنائي لـ IDA، وبالتالي يدعم أحرف البدل - التطابق المثالي لميزة النسخ المتقدم!

أمثلة:

11 22 33 44 aa bb cc
11 22 33 ?? ?? bb cc -> ?? يمكن أن يكون أي بايت

يمكن لصق أنماط البايت مباشرة من الحافظة في قائمة القواعد. ملاحظة: مطابقة الأنماط سريعة جدًا وهي مرشح جيد لتقليل المطابقات بسرعة!

مرجع سلسلة نصية

يجب أن تشير الدالة إلى السلسلة النصية المحددة مرة واحدة على الأقل. تتم المطابقة وفقًا لوحدة 'fnmatch' في بايثون، وبالتالي تدعم المطابقة المشابهة لأحرف البدل. تتم المطابقة مع تجاهل حالة الأحرف. يتم النظر في السلاسل النصية بالتنسيقات التالية: [idaapi.STRTYPE_C, idaapi.STRTYPE_C_16] (يمكن تغيير ذلك في فئة Config).

أمثلة:

  • "TestString" -> يجب أن تشير الدالة إلى السلسلة النصية بالضبط (تجاهل حالة الأحرف) مرة واحدة على الأقل
  • "TestStr*" -> يجب أن تشير الدالة إلى سلسلة نصية تبدأ بـ 'TestStr (مثل TestString, TestStrong) مرة واحدة على الأقل (تجاهل حالة الأحرف)

ملاحظة: مطابقة السلاسل النصية سريعة وهي خيار جيد لتقليل المرشحين بسرعة!

مرجع اسم

يجب أن تشير الدالة إلى الاسم/التسمية المحددة مرة واحدة على الأقل. تتم المطابقة وفقًا لوحدة 'fnmatch' في بايثون، وبالتالي تدعم المطابقة المشابهة لأحرف البدل. تتم المطابقة مع تجاهل حالة الأحرف.

أمثلة:

  • "memset" -> يجب أن تشير الدالة إلى اسم "memset" مرة واحدة على الأقل
  • "mem*" -> يجب أن تشير الدالة إلى اسم يبدأ بـ "mem" (memset, memcpy, memcmp) مرة واحدة على الأقل

ملاحظة: مطابقة الأسماء سريعة جدًا وهي مثالية لتقليل المرشحين بسرعة!

حجم الدالة

يجب أن يكون حجم الدالة ضمن الحد المحدد: "min <= حجم الدالة <= max". يتم إدخال البيانات كسلسلة نصية بالشكل "min,max". يتضمن حجم الدالة جميع أجزائها (chunks).

ملاحظة: مطابقة حجم الدالة سريعة جدًا وهي مثالية لتقليل المرشحين بسرعة!

اختصارات لوحة المفاتيح وواجهة المستخدم الرسومية

لسهولة الاستخدام، يمكن استخدام FF عبر اختصارات لوحة المفاتيح التالية:

  • Ctrl+Alt+F -> تشغيل/إظهار TabWidget (واجهة المستخدم الرئيسية)
    • أو View->FindFunc
  • Ctrl+F -> بدء البحث بالقواعد الممكنة حاليًا
  • Ctrl+R -> تحسين النتائج الحالية بالقواعد الممكنة حاليًا
  • القواعد
    • Ctrl+C -> نسخ القواعد المحددة إلى الحافظة
    • Ctrl+V -> لصق القواعد من الحافظة في علامة التبويب الحالية (إضافة)
    • Ctrl+S -> حفظ القواعد المحددة إلى ملف
    • Ctrl+L -> تحميل القواعد من ملف (إضافة)
    • Ctrl+A -> تحديد جميع القواعد
    • Del -> حذف القواعد المحددة
  • حفظ الجلسة
    • Ctrl+Shift+S -> حفظ الجلسة إلى ملف
    • Ctrl+Shift+L -> تحميل الجلسة من ملف

استخدامات إضافية لواجهة المستخدم

تنزيل الأداة