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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Kam1n0-Community — منصة تحليل تجميع قابلة للتوسع لفهرسة، بحث عن المستنسخات، وتصنيف الملفات القابلة للتنفيذ باستخدام تقنيات ثابتة وديناميكية والتعلم الآلي عبر معماريات متعددة. | Kitploit
أدوات/GitHubGitHub/mcgill-dmas/kam1n0-community
تحليل الثغرات الأمنيةتحليل الكودالهندسة العكسيةالاختبار العشوائيتحليل الملفات الثنائيةتعلم الآلة
GitHubmcgill-dmas/kam1n0-community

Kam1n0-Community

منصة تحليل تجميع قابلة للتوسع لفهرسة، بحث عن المستنسخات، وتصنيف الملفات القابلة للتنفيذ باستخدام تقنيات ثابتة وديناميكية والتعلم الآلي عبر معماريات متعددة.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

ما هو Kam1n0 v2؟

image GitHub (pre-)release Github All Releases JDK PRs Welcome

بناء أحدث إصدار تطويري (ويندوز) اختبار إصدار البناء (ويندوز)

Kam1n0 v2.x هي منصة قابلة للتوسع لإدارة وتحليل التجميع. تتيح للمستخدم فهرسة مجموعة (كبيرة) من الملفات الثنائية في مستودعات مختلفة وتوفر خدمات تحليلية متنوعة مثل البحث عن الاستنساخ والتصنيف. تدعم الوصول متعدد المستأجرين وإدارة مستودعات التجميع باستخدام مفهوم التطبيق. تحتوي مثيلات التطبيق على مستودع حصري خاص بها وتوفر خدمة تحليلية متخصصة. بالنظر إلى تنوع مهام الهندسة العكسية، يوفر خادم Kam1n0 v2.x حالياً ثلاثة أنواع مختلفة من تطبيقات البحث عن الاستنساخ: Asm-Clone و Sym1n0 و Asm2Vec، بالإضافة إلى تصنيف الملفات القابلة للتنفيذ استنادًا إلى Asm2Vec. يمكن إضافة نوع تطبيق جديد إلى المنصة.

يمكن للمستخدم إنشاء مثيلات تطبيق متعددة. يمكن مشاركة مثيل تطبيق بين مجموعة محددة من المستخدمين. يمكن لمالك التطبيق التحكم في صلاحيات القراءة والكتابة لمستودع التطبيق وحالة التشغيل والإيقاف. يمكن لخادم Kam1n0 v2.x خدمة التطبيقات بشكل متزامن باستخدام عدة تجمعات موارد مشتركة.

تم تطوير Kam1n0 بواسطة Steven H. H. Ding و Miles Q. Li تحت إشراف Benjamin C. M. Fung من مختبر تنقيب البيانات والأمان في جامعة McGill بكندا. حصل على الجائزة الثانية في مسابقة إضافات Hex-Rays 2015. إذا وجدت Kam1n0 مفيدًا، يرجى الاستشهاد بورقة البحث الخاصة بنا:

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Kam1n0: MapReduce-based Assembly Clone Search for Reverse Engineering. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (SIGKDD), pages 461-470, San Francisco, CA: ACM Press, August 2016.

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Asm2Vec: boosting static representation robustness for binary clone search against code obfuscation and compiler optimization. In Proceedings of the 40th IEEE Symposium on Security and Privacy (S&P), 18 pages, San Francisco, CA: IEEE Computer Society, May 2019.

Asm-Clone

تحاول تطبيقات Asm-Clone حل مشكلة البحث الفعال عن الرسوم البيانية الفرعية (أي مشكلة تماثل الرسم البياني) لوظائف التجميع (متوسط وقت الاستعلام <1.3 ثانية ومتوسط وقت الفهرسة <30 مللي ثانية مع 2.3 مليون دالة). بالنظر إلى دالة مستهدفة (تلك الموجودة على اليسار كما هو موضح أدناه)، يمكنها تحديد الرسوم البيانية الفرعية المستنسخة بين الدوال الأخرى في المستودع (تلك الموجودة على اليمين كما هو موضح أدناه).

  • نوع التطبيق: Asm-Clone
  • خدمة البحث عن الاستنساخ الأصلية المستخدمة في Kam1n0 v1.x.
  • تدعم حالياً Meta-PC و ARM و PowerPC و TMS320c6 (تجريبي).
  • تدعم البحث عن الاستنساخ للرسوم البيانية الفرعية ضمن عائلة معينة من كود التجميع.
    • + قابلية تفسير جيدة للنتيجة: تتحلل إلى رسوم بيانية فرعية.
    • + دقيقة للبحث ضمن عائلة الكود المحددة.
    • + جيدة لمقارنة التصحيحات أو الإصدارات المختلفة للملفات الثنائية الكبيرة.
    • - حساسة نسبيًا لتغييرات مجموعة التعليمات والتحسينات والتعتيم.
    • - تحتاج إلى تعريف مسبق لقواعد لغة كود التجميع.
    • - يجب أن يحتوي المستودع على كود التجميع لنفس العائلة المختارة.

Sym1n0

بحث عن الاستنساخ الدلالي من خلال اختبار التشويب المتباين وحل القيود. نهج هجين ديناميكي-ثابت فعال وقابل للتوسع (متوسط وقت الاستعلام <1 ثانية ومتوسط وقت الفهرسة <100 مللي ثانية مع 1.5 مليون دالة). بالنظر إلى دالة مستهدفة (تلك الموجودة على اليسار كما هو موضح أدناه)، يمكنها تحديد الرسوم البيانية الفرعية المستنسخة بين الدوال الأخرى في المستودع (تلك الموجودة على اليمين كما هو موضح أدناه). تدعم تصور الرسم البياني النحوي المجرد.

  • نوع التطبيق: Sym1n0 (الإصدار 2 فقط)
  • بحث عن الاستنساخ من خلال كل من التنفيذ الرمزي والتنفيذ الفعلي.
  • تمييز الدوال بناءً على سلوك الإدخال/الإخراج المختلف.
  • يتم إجراء بحث الاستنساخ على الرسم البياني النحوي المجرد المُنشأ من Vex IR (مدعوم من LibVex).
    • + بحث عن الاستنساخ عبر عائلات كود التجميع المختلفة.
      • على سبيل المثال، فهرسة ملفات ثنائية x86 ولكن الاستعلام هو كود ARM.
    • + بحث عن الاستنساخ للرسوم البيانية الفرعية.
    • + تدعم مجموعة واسعة من العائلات من خلال LibVex.
      • x86 و AMD64 و MIPS32 و MIPS64 و PowerPC32 و PowerPC64 و ARM32 و ARM64.
    • + نهج هجين ديناميكي-ثابت فعال.
    • + مثالية لتحليل البرامج الثابتة المترجمة لمعالجات مختلفة.
    • - حساسة للتلاعب الثقيل بالرسم البياني (مثل التسطيح الكامل).
    • - حساسة للتحلل الكبير لسلامة الكتل الأساسية.

Asm2Vec

يستفيد Asm2Vec من تعلم التمثيل. يفهم العلاقة الدلالية المعجمية لكود التجميع. على سبيل المثال، ترتبط سجلات xmm* دلاليًا بعمليات المتجهات مثل addps. memcpy مشابه لـ strcpy. يوضح الرسم البياني أدناه دوال تجميع مختلفة تم تجميعها من نفس الكود المصدري لـ gmpz_tdiv_r_2exp في مكتبة libgmp. من اليسار إلى اليمين، تم تجميع دوال التجميع باستخدام خيار GCC O0 وخيار GCC O3 وخيار O-LLVM للمُشوّش Control Flow Graph Flattening وخيار LLVM للمُشوّش Bogus Control Flow Graph. يمكن لـ Asm2Vec تحديدها بشكل ثابت على أنها مستنسخات.

  • يستفيد من تعلم التمثيل.
  • يفهم العلاقة الدلالية المعجمية لكود التجميع.
    • + الأحدث في مجال البحث عن الاستنساخ ضد تقنيات التعتيم الثقيل للكود.
      • (دقة >0.8 لجميع الخيارات المطبقة في O-LLVM، تكرارات متعددة).
    • + الأحدث في البحث عن الاستنساخ ضد تحسين الكود.
      • (دقة >0.8 بين O0 و O3، دقة >0.94 بين O2 و O3)
    • + نتائج أفضل حتى من أحدث الطرق الديناميكية.
    • + أكثر فعالية بكثير من الطرق الديناميكية الحديثة.
    • + لا يحتاج إلى تعريف البنية. يتعلم ذاتيًا بقراءة كميات كبيرة من الكود.
    • + نهج ثابت: فعال وقابل للتوسع.
    • - لا يوجد رسوم بيانية فرعية.
    • - يفترض أن كود التجميع يأتي من نفس عائلة المعالج.
    • - نهج ثابت: لا يمكن التعرف على جداول القفز، إلخ.

تصنيف الملفات القابلة للتنفيذ

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

  • يستخدم Asm2Vec كنموذج لحساب تشابه الدوال
    • + توفير نتائج تصنيف قابلة للتفسير.
    • + تعلم الخصائص المشتركة (أي مجموعات الدوال) لكل فئة.
    • + قادر على التعامل مع مجموعات بيانات أصغر وغير متوازنة مقارنة بنموذج التعلم الآلي العادي.
    • - القيد هو أن الافتراض بأن الملفات الثنائية في نفس الفئة تشترك في بعض الدوال الشائعة يجب أن ينطبق لكي يعمل النظام.

نظرة عامة على المنصة

يوضح الشكل أدناه المكونات الرئيسية لواجهة المستخدم ووظائف Kam1n0 v2.x. نعتمد تصميمًا متوافقًا مع Material Design. بشكل عام، لكل مستخدم قائمة تطبيقات وقائمة مهام قيد التشغيل وقائمة ملفات نتائج.

  • تعرض قائمة التطبيقات مثيلات التطبيق المملوكة للمستخدم والتي يشاركها الآخرون.
  • تعرض قائمة المهام قيد التشغيل التقدم الجاري لاستعلام كبير (مثل chrome.dll) وإجراء الفهرسة.
  • تعرض قائمة ملفات النتائج النتائج المحفوظة. يمكن العثور على مزيد من التفاصيل حول تصميم واجهة المستخدم في الدليل التعليمي المفصل.

تعليمات التثبيت

يتكون الإصدار الحالي من Kam1n0 من مثبتين: الخادم الأساسي وإضافة IDA Pro.

تثبيت خادم Kam1n0

محرك Kam1n0 الأساسي مكتوب بالكامل بلغة Java. تحتاج إلى الاعتماديات التالية:

  • [مطلوب] أحدث توزيعة JRE/JDK x64 11.x من Oracle.
  • [اختياري] أحدث إصدار من IDA Pro مع تثبيت إضافة idapython. يجب أن تكون إضافة Python ووقت التشغيل مثبتة بالفعل مع IDA Pro. أعد تثبيت IDA Pro إذا لزم الأمر.

قم بتنزيل ملف Kam1n0-Server.msi من صفحة الإصدارات. اتبع التعليمات لتثبيت الخادم. سيُطلب منك تحديد مسار التثبيت. IDA Pro اختياري إذا لم يكن على الخادم التعامل مع أي تفكيك. بمعنى آخر، يستخدم جانب العميل إضافة Kam1n0 لـ IDA Pro. يُوصى بشدة بتثبيت IDA Pro مع خادم Kam1n0. سيكتشف خادم Kam1n0 تلقائيًا IDA Pro الخاص بك بالبحث عن التطبيق الافتراضي الذي تستخدمه لفتح ملف .i64.

تثبيت إضافة IDA Pro

إضافة Kam1n0 لـ IDA Pro مكتوبة بلغة Python للمنطق وبـ HTML/JavaScript للعرض. الاعتماديات التالية مطلوبة لتثبيتها:

  • [مطلوب] IDA Pro (>6.7) مع تثبيت إضافة idapython. يجب أن تكون إضافة Python ووقت التشغيل مثبتة بالفعل مع IDA Pro. أعد تثبيت IDA Pro إذا لزم الأمر.

بعد ذلك، قم بتنزيل مثبت Kam1n0-IDA-Plugin.msi من صفحة الإصدارات. اتبع التعليمات لتثبيت الإضافة ووقت التشغيل. يرجى ملاحظة أنه يجب تثبيت الإضافة في مجلد إضافات IDA Pro الموجود في $IDA_PRO_PATH$/plugins. على سبيل المثال، على ويندوز، يمكن أن يكون المسار C:/Program Files (x86)/IDA 6.95/plugins. سيكتشف المثبت المسار ويتحقق منه.

إعداد Kam1n0 على الأنظمة القائمة على Ubuntu/Debian

  • تأكد من أن لديك إصدار Oracle من Java 11. (وليس default-jdk في apt.)

    • أضف PPA الخاص بـ Oracle ثم حدّث مستودع الحزم الخاص بك: sudo add-apt-repository ppa:webupd8team/java
      • إذا واجهت أي أخطاء (مثل ~webupd8team not found)، إذا كنت تستخدم بروكسي، تأكد من تعيين وتصدير متغيرات البيئة http_proxy و https_proxy، ثم حاول مرة أخرى باستخدام الخيار -E مع sudo. بالإضافة إلى ذلك، إذا كنت تواجه خطأ 'add-apt repository command not found، حاول: sudo apt install -y software-properties-common.
    • بعد ذلك: sudo apt-get update و sudo apt-get install oracle-java8-installer
      • تحقق من إصدار Java باستخدام java -version؛ قد تحتاج إلى تعيين متغير البيئة JAVA_HOME يدويًا (في /etc/environment)، JAVA_HOME=/usr/lib/jvm/java-11-oracle

التوافق مع الإصدارات السابقة

لم تعد مستودعات كود التجميع وملفات التكوين المستخدمة في الإصدارات السابقة (<2.0.0) مدعومة من قبل الإصدار الأحدث. يرجى الاتصال بنا إذا كنت بحاجة إلى ترحيل مستودعاتك القديمة.

التوثيق

  • دليل خادم Kam1n0
    • التكوين وبدء تشغيل المحرك
    • تسجيل حساب وتسجيل الدخول
    • إنشاء تطبيق
    • مشاركة التطبيق والتحكم في الوصول
    • تحضير البيانات
    • رابط التطبيق لإضافة IDA Pro
    • فهرسة الملفات الثنائية
    • البحث باستخدام دالة تجميع
      • عرض الرسم البياني للتدفق
      • عرض الفرق النصي
      • عرض مجموعة الاستنساخ
    • البحث باستخدام ملف ثنائي
    • تصفح نتيجة بحث استنساخ
      • مربعات الملخص
      • التفاصيل

التطوير

استنساخ أحدث فرع مستقر (لا تنس --recursive!):```bash git clone --recursive -b master2.x --single-branch https://github.com/McGill-DMaS/Kam1n0-Community

root@kitploit:~
## استيراد المشروع.
IntelliJ: قم باستيراد الجذر /kam1n0/kam1n0/ كمشروع مافن. سيتم تحميل جميع الوحدات الفرعية وفقًا لذلك.
EclipseEE: أضف مستودع git المستنسخ إلى عرض git. قم باستيراد جميع مشاريع مافن من مستودع git.
قد تحتاج إلى تعديل classpath لمعالجة أي خطأ.
يتم تعديل جميع مسارات الموارد ديناميكيًا عند التشغيل داخل IDE
(من خلال الوحدة الفرعية kam1n0-resources).

لبناء المشروع:```
cd /kam1n0/kam1n0
mvn -DskipTests clean package
mvn -DskipTests package

يمكن العثور على الملفات الثنائية الناتجة في /kam1n0/build-bins/

لتشغيل كود الاختبار، ستحتاج أولاً إلى تنزيل chromedriver.exe من http://chromedriver.chromium.org/ وإضافة مساره المطلق إلى متغير بيئة يُسمى webdriver.chrome.driver. مطلوب أيضًا وجود متصفح كروم مثبت على النظام. سيقوم كود الاختبار بتشغيل مثيل متصفح لاختبار واجهات المستخدم. ستستغرق عملية الاختبار الكاملة حوالي 3 ساعات.``` cd /kam1n0/kam1n0 mvn -DskipTests clean package # you can skip this one if you already built the package mvn -DskipTests package # you can skip this one if you already built the package mvn -DforkMode=never test

root@kitploit:~
هذه الأوامر تقوم فقط بتجميع جافا مع عجلات مُجمَّعة مسبقًا لـ libvex و z3. إنها تعمل خارج الصندوق.

بناء libvex و z3 يعتمد على النظام الأساسي. نستخدم شوكة (fork) من libvex من Angr.

نصوص بناء أكثر جدية بالإضافة إلى مثبتات windows/linux يمكن العثور عليها ضمن /kam1n0-builds/

* kam1n0: الكود المصدري للخادم.
* kam1n0-builds: كود المثبت المصدري ونصوص بناء التوزيعة.
* kam1n0-clients: الكود المصدري للعملاء.

## الإصدارات الثنائية

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

## الترخيص

تم تطوير البرنامج بواسطة [Steven H. H. Ding](http://stevending.net/)، و[Miles Q. Li](http://milesqli.github.io/)، و[Benjamin C. M. Fung](http://dmas.lab.mcgill.ca/fung/) في [مختبر ماكجيل لتنقيب البيانات والأمن](http://dmas.lab.mcgill.ca/) و[مختبر أبحاث L1NNA في جامعة كوينز](https://l1nna.com/) في كندا. يتم توزيعه بموجب ترخيص Apache الإصدار 2.0. يُرجى الرجوع إلى [LICENSE.txt](https://github.com/mcgill-dmas/kam1n0-community/blob/HEAD/LICENSE.txt) للحصول على التفاصيل.

حقوق النشر 2014-2021 جامعة ماكجيل والباحثون. جميع الحقوق محفوظة.

## شكر وتقدير

![صورة](https://img.shields.io/badge/Proudly%20Funded%20by-Defence%20Research%20&%20Development%20Canada%20(DRDC)-orange.svg?style=for-the-badge)

![صورة](https://img.shields.io/badge/Proudly%20Funded%20by-NSERC%20Canada%20Research%20%20Chairs%20Program-blue.svg?style=for-the-badge)

![صورة](https://img.shields.io/badge/Special%20thanks%20to-Philippe%20Charland,%20DRDC-orange.svg?style=for-the-badge)

![صورة](https://img.shields.io/badge/Acknowledgement-NVIDIA%20Corporation%20for%20donating%20the%20Titan%20Xp%20used%20for%20this%20research-blue.svg?style=for-the-badge)

![صورة](https://img.shields.io/badge/Built%20in-Data%20Mining%20and%20Security%20Lab,%20SIS,%20McGill%20Univrsity-red.svg?style=for-the-badge)

![صورة](https://img.shields.io/badge/Built%20in-L1NNA%20Research%20Laboratory,%20CS,%20Queen%27s%20Univrsity-red.svg?style=for-the-badge)
تنزيل الأداة
المثبتالمكونات المضمنةالوصف
Kam1n0-Server.msiالمحرك الأساسيالمحرك الرئيسي الذي يقدم خدمات الفهرسة والبحث.
منصة العملواجهة مستخدم لإدارة المستودعات والخدمة قيد التشغيل.
واجهة مستخدم ويبواجهة مستخدم ويب للبحث/الفهرسة في الملفات الثنائية ودوال التجميع.
حزمة إعادة التوزيع Visual C++ لـ VS 15اعتمادية لـ z3.
Kam1n0-IDA-Plugin.msiالإضافةموصلات وواجهة مستخدم.
عجلات PyPI لـ Cefpythonمحرك العرض لواجهة المستخدم.
PyPI والعجلات التابعةإدارة الحزم لـ Python. مضمنة لـ IDA 6.8 و 6.9.
  • قم بتنزيل أحدث إصدار لنظام لينكس (Kam1n0-IDA-Plugin.tar.gz و Kam1n0-Server.tar.gz) من Kam1n0-Community.

  • قم بفك ضغط الملفين المضغوطين (أي tar –xvzf Kam1n0-IDA-Plugin.tar.gz و tar –xvzf Kam1n0-Server.tar.gz)

  • سيقوم ملف Kam1n0-Server.tar.gz بإنشاء دليل الخادم.

  • داخل دليل server، يجب أن ترى ملفًا يسمى kam1n0.properties، حيث ستقوم بتعيين إعدادات مختلفة لـ kam1n0؛ هذا مهم جدًا.

  • قم بتعيين kam1n0.data.path إلى المكان الذي ترغب في كتابة بيانات kam1n0 الخاصة بك فيه. نختار وضعه في نفس المكان الذي نحتفظ فيه بـ server. يشير kam1n0.ida.home إلى مكان تثبيت IDA لديك. قم بتعليق هذا السطر (و kam1n0.ida.batch، السطر التالي) إذا لم يكن لديك IDA ولا تخطط لاستخدام kam1n0 للتفكيك. للحصول على معلومات أكثر (دقيقة) حول ملف kam1n0.properties، راجع ملف kam1n0.properties.explained.

  • قم بتشغيل kam1n0-server-workbench: java -jar kam1n0-server-workbench.jar. من المفترض أن يتسبب هذا في ظهور نافذة تطلب منك بدء تشغيل kam1n0. بدلاً من ذلك، قم بتشغيل kam1n0-server: java -jar kam1n0-server.jar --start. يبدأ هذا الخادم من وحدة التحكم بدون نافذة.

  • للاتصال واستخدامه، اذهب إلى 127.0.0.1:8571 (المنفذ الافتراضي الذي يستمع عليه kam1n0 يجب أن يكون 8571، ولكن يمكن تغييره في kam1n0.properties) في متصفحك. يجب أن ترى واجهة المستخدم الجميلة لـ kam1n0. من هناك، اتبع الدليل التعليمي على مستودع Kam1n0-Community إذا كنت لا تعرف كيفية استخدام kam1n0.

  • دليل إضافة IDA Pro
    • الوظائف
    • مثال تفصيلي
      • تحضير البيانات
      • بدء تشغيل المحرك والحصول على رابط إضافة IDA Pro
      • تكوين الاتصال
      • الفهرسة من الإضافة
      • بحث الدوال
      • تحليل التركيب
      • بحث مقطع التجميع
      • مربع البحث
    • كيف تعمل الإضافة
      • واجهة المستخدم
      • المزامنة
      • الاتصال ثنائي الاتجاه