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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
asmsense — نموذج لغوي صغير يقوم بتسمية ووصف الدوال في ملفات x86-64 الثنائية المجردة، مع مجموعة بيانات مفتوحة، وخطوط أساس، وتجارب ضبط دقيق LoRA. | Kitploit
أدوات/GitHubGitHub/krxi/asmsense
التحليل الثابتالهندسة العكسيةتحليل الملفات الثنائيةتعلم الآلةالأوراق والأبحاثالتعلم والتعليمالهندسة العكسية بمساعدة الذكاء الاصطناعيموارد منسقةأمن الذكاء الاصطناعي
GitHubkrxi/asmsense

asmsense

نموذج لغوي صغير يقوم بتسمية ووصف الدوال في ملفات x86-64 الثنائية المجردة، مع مجموعة بيانات مفتوحة، وخطوط أساس، وتجارب ضبط دقيق LoRA.

710منذ 4 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

asmsense

الإنجليزية · التركية

نموذج لغوي صغير ينظر إلى دالة في ملف ثنائي مجرّد ويمنحها اسمًا ذا معنى ووصفًا قصيرًا.

الحالة الحالية

تحتوي مجموعة بيانات v4 على 228,177 دالة من 341 مشروعًا عبر 5 مستويات تحسين، وهي منشورة على Hugging Face ضمن إعداد v4. سكربت Ghidra جاهز. أفضل نموذج صغير حتى الآن، Qwen3-8B + LoRA المدرَّب على بيانات v5 (الوصف أولًا، ثم الاسم)، يصل إلى F1 للاسم 0.124 على عيّنة الاختبار الثابتة v4 و0.155 على eval_115؛ وأفضل نموذج كبير مع سياق الاستدعاء يسجّل 0.167 على نفس عيّنة الاختبار. انظر النتائج، القسم 6. يكتب النموذج وصفًا من جملة واحدة بالإنجليزية وأخرى بالتركية إلى جانب الاسم. المحوّل متاح على Hugging Face: krxi123/asmsense-qwen3-8b-lora.

افتح برنامجًا مجرّدًا في Ghidra أو IDA وسترى مئات الدوال المسماة FUN_00401a30. يتكوّن جزء كبير من الهندسة العكسية من فهم هذه الدوال وتسميتها واحدة تلو الأخرى. يهدف هذا المشروع إلى تعليم نموذج تلك الخطوة الأولى:

input  (stripped x86-64)             target output
─────────────────────────────         ──────────────────────────────────────────────
movzx  eax, byte ptr [rsi]            name:        adler32_update
lea    rdx, [rdi + rax]               description: Computes the Adler-32 checksum
cmp    rdx, 0xfff1      ← 65521                    over the bytes of a buffer.
...                                   # TR: Tampondaki baytlar üzerinden Adler-32
                                      #     sağlama toplamı hesaplar.

الهدف

يمكن للنماذج الكبيرة متعددة الأغراض التعامل مع هذه المهمة إلى حد ما، لكنها بطيئة ومكلفة ومستضافة على السحابة. الهدف هو الإجابة عن هذا السؤال:

هل يمكن لنموذج صغير مُدرَّب على بيانات مُصمَّمة لهذا الغرض أن يضاهي أو حتى يتفوق على النماذج الكبيرة في هذه المهمة—مع العمل على حاسوب محمول؟

يتم تقييم ثلاث فئات على نفس مجموعة الاختبار:

الفئةالنموذجالدور
السقفنماذج مفتوحة كبيرة (DeepSeek، GLM، MiMo، Gemma، Qwen)أفضل ما يمكن تحقيقه حاليًا بالنماذج الجاهزة
خط الأساسنموذج مفتوح صغير، قبل الضبط الدقيقنقطة البداية
هذا المشروعنفس النموذج الصغير + LoRA على هذه المجموعة البياناتيةمساهمة المشروع

كيف يعمل

  1. توليد البيانات (cikar.py): يتم تجميع مشاريع C مفتوحة المصدر لمعمارية x86-64 عند مستويات تحسين مختلفة (-O0، -O2). يتم استخراج لغة التجميع لكل دالة. تأتي الحقيقة المرجعية—اسم الدالة الأصلي—مباشرةً من المصدر، لذا لا حاجة إلى وسم يدوي. يسجّل projeler.json الـ commit وأعلام المترجم المستخدمة لكل مشروع.

  2. محاكاة ملف ثنائي مُجرَّد: يشبه الناتج ما يعرضه Ghidra لدالة في ملف ثنائي مُجرَّد:

    • تصبح الدوال المحلية للمشروع sub_01a3، وتصبح البيانات العامة dat_0042 (تُخلط الأرقام، مع مساحات أسماء منفصلة لـ -O0 و-O2)،
    • تستخدم أهداف التفرع تسميات محلية للدالة مثل loc_1 وloc_2،
    • تبقى استدعاءات المكتبات الخارجية (memcpy، __stack_chk_fail) والسلاسل النصية الحرفية (; -> "out of memory") ظاهرة لأنها ظاهرة أيضًا في ملف ثنائي حقيقي.

    إذا ظهر الاسم الحقيقي للدالة في لغة التجميع الخاصة بها—على سبيل المثال، في رسالة خطأ—يُوسَم الصف بـ sizinti ويُستبعَد من مجموعة الاختبار.

  3. التقييم (taban.py): يتلقى النموذج لغة التجميع فقط ويُطلَب منه توقّع اسم. تُقيَّم التوقعات بتداخل الرموز (F1)، لذا تحصل الإجابات القريبة مثل crc32_update وupdate_crc على درجة جزئية.

loc_6:
movzx   r9d, byte ptr [rsi + rdx]
add     rdi, r9                 ← adler32_z (-O2), as the model sees it
add     rcx, rdi
inc     rdx
cmp     rax, rdx
jne     loc_6

البيانات

المشاريعالدوال (-O0 + -O2)
التدريبzlib, libpng, sqlite, lua, mbedtls, zstd, libsodium, expat, brotli, jansson, lz4, libyaml, xxhash, cJSON16,804
الاختبار (مقاوم للحفظ)tomlc17, cyaml, mu_json_x, sajs, picomatch777 → مجموعة التقييم 115

مجموعة البيانات متاحة على Hugging Face: krxi123/asmsense (16,804 مثال تدريبي، 777 مثال اختباري، مجموعة التقييم eval_115، ونصوص التراخيص). وهي منسوخة أيضاً على Kaggle: krxiii/asmsense.

مجموعة البيانات الموسّعة (خط أنابيب v4، 5 مستويات تحسين)

تم اختيار مشاريع C ذات تراخيص متساهلة (MIT، BSD، Apache-2.0، ISC، zlib) من GitHub باستخدام olcekle.py وتجميعها عند -O0/-O1/-O2/-O3/-Os باستخدام cikar_bin.py (مكتبة ديناميكية حقيقية + strip -x). لم يتم تشغيل سكربتات بناء المشاريع؛ تم تجميع الملفات فردياً باستخدام clang، وتم تخطي الملفات أو المشاريع التي فشل تجميعها. تمت إزالة تكرار الصفوف حسب تجزئة التجميع المُطبَّع. تمت إزالة الصفوف التي كان تجميعها مطابقاً لبيانات التحقق/الاختبار من التدريب، بينما تمت إزالة النسخ المُضمَّنة التي ظهرت أزواجها (ملف، اسم) في التدريب من التحقق/الاختبار. كل صف يحتوي على حقل lisans.

التقسيمالمشاريعالصفوفدوال المصدر الفريدة
التدريب290196,11772,179
التحقق2319,7706,667
الاختبار (قليل الشهرة، ≤200 نجمة، 2024+)2812,2904,685

من أصل 473 مشروعاً، أنتج 352 صفوفاً وفشل 120 في التجميع (كود نواة، أو مضمّن، أو معتمد على المنصة). تم استخدام clang فقط. تُحفظ البيانات خارج Git ويمكن إعادة توليدها باستخدام python3 aday_bul.py و python3 olcekle.py hepsi.

تقسيم التدريب/الاختبار هو على مستوى المشروع بشكل صارم: لا يمكن أن تظهر أي دالة من مشروع على كلا الجانبين. تم اختيار مشاريع الاختبار عمداً لتكون قليلة الشهرة (2-190 نجمة)، ومعظمها بدأ في 2024-2025، مما يجعل من غير المرجح بكثير أن تكون النماذج الكبيرة قد صادفتها أثناء التدريب مقارنة بمكتبة مثل zlib. التراخيص: veri/LISANSLAR.md.

استثناء معروف: الكود المُضمَّن. أكّد تدقيق مستقل لبيانات v6 المنشورة (rapor/arastirma/V6_VERI_DENETIMI.md، veri_denetim_v6.py) أنه لا يوجد مشروع أو معرّف أو (مشروع، ملف، اسم) يظهر على كلا الجانبين، لكن مشروع الاختبار snkv يُضمِّن SQLite تحت أسماء ملفاته الخاصة بينما sqlite مشروع تدريبي. في عيّنة الاختبار الثابتة المكوّنة من 2,000 صف، 217 صفاً (10.85%) لها اسم مطابق لدالة تدريبية في SQLite. كل نموذج يسجّل نتائج أدنى على تلك الصفوف، لذا فهي لا تضخّم النتائج؛ بل تضيّق الفجوة بين الصغير والكبير بدلاً من ذلك (انظر النتائج، القسم 6). تحتوي عيّنة التحقق valid_300 على 16 صفاً مشابهاً (5.3%).

النتائج

1. اختبار مقاوم للحفظ: 5 مشاريع قليلة الشهرة، 115 دالة

متوسط F1 للأسماء (1.0 = تطابق تام). في عمود "F1 بعد إزالة البادئة"، تُزال البادئة الاسمية الشائعة لكل مشروع (cyaml_، mu_، sajs_) من كلا الجانبين؛ لا يمكن للنموذج استنتاج هذه البادئة من التجميع.

النموذج-O0-O2F1 بعد إزالة البادئةالتطابقات التامة
mimo-v2.6-pro (استدلال)0.200.170.213 / 115
mimo-v2.6-pro0.180.160.204 / 115
glm-5.3 (استدلال)0.160.110.154 / 115
qwen3.8-flash-next (استدلال)0.160.080.133 / 115
deepseek-v4.1-flash (استدلال)0.120.080.123 / 115
deepseek-v4.1-flash0.100.110.122 / 115
glm-5.30.120.080.122 / 115
qwen3.8-flash-next0.130.070.111 / 115
gemma-4-31b (استدلال)0.110.080.102 / 115
gemma-4-31b0.110.070.100 / 115
qwen2.5-coder-0.5b، غير مدرَّب0.000.010.010 / 112
qwen2.5-coder-0.5b + LoRA v10.020.000.010 / 112

استخدمت جولات الاستدلال سقف max_tokens قدره 12,288. حتى عند هذا الحد، فشل deepseek و qwen في إكمال الاستدلال وإنتاج إجابة في أكثر من نصف الطلبات؛ وفعل glm الشيء نفسه في 50 من 115. تم احتساب هذه الصفوف كـ 0.

2. الحفظ: الاستدلال يساعد في الكود الشهير، لا في الكود غير المألوف

نفس خط أنابيب البيانات، نفس عدد الدوال (115)، mimo-v2.6-pro:

بدون استدلالمع استدلال
zlib (شهير جداً)9 تطابقات تامة، F1 0.1828 تطابقاً تاماً، F1 0.29
مشاريع قليلة الشهرة4 تطابقات تامة، F1 0.203 تطابقات تامة، F1 0.21
تنزيل الأداة