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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
rats-re — يعيد بناء ثنائيات ويندوز القديمة إلى كود مصدري بلغة C عبر دمج مخرجات مفكك Ghidra مع نماذج لغوية كبيرة محلية، لإنتاج مرشّحات مجتازة لفحص الترجمة وتقارير مبنية على التشابه. | Kitploit
أدوات/GitHubGitHub/neuromancer/rats-re
الهندسة العكسيةتحليل الملفات الثنائيةتعلم الآلةالهندسة العكسية بمساعدة الذكاء الاصطناعي
GitHubneuromancer/rats-re

rats-re

يعيد بناء ثنائيات ويندوز القديمة إلى كود مصدري بلغة C عبر دمج مخرجات مفكك Ghidra مع نماذج لغوية كبيرة محلية، لإنتاج مرشّحات مجتازة لفحص الترجمة وتقارير مبنية على التشابه.

عرض المستودع
17منذ 24 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

إعادة بناء مصدر Rats! باستخدام نماذج لغوية محلية

هذا المستودع هو إعادة بناء قيد التطوير للكود المصدري الخاص بـ RATS.EXE، إصدار Windows الأصلي من Rats! (1994) من تأليف Sean O'Connor. يقوم ببناء ملف تنفيذي Win32 باستخدام Microsoft Visual C++ 4.1 عبر wibo، ويمكن اختباره في DREAMM.

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

تقتصر إعادة بناء الدوال على النماذج اللغوية المحلية. يُستخدم Codex وClaude لإعداد المستودع وتنسيق المعايير، لكن لا يُسمح لهما بكتابة أو تعديل المصدر المُعاد بناؤه.

ما لم يُذكر خلاف ذلك، استخدمت جميع التجارب Qwen3.8 27B BF16 على MacBook Pro لعام 2024 بمعالج Apple M4 Max (CPU من 16 نواة، GPU من 40 نواة) وذاكرة 128 GB. يعمل هذا النهج — بشكل غير كامل، لكنه مفيد: استغرقت الدوال الـ36 المُبقاة متوسط وقت مسجّل قدره 2m 32.1s لكل دالة لإعادة بنائها.

الإعداد

استنسخ المستودع مع الوحدات الفرعية، أو قم بتهيئتها بعد الاستنساخ:

root@kitploit:~
git submodule update --init --recursive

الملف التنفيذي الأصلي غير مضمّن. نزّل إصدار Windows المجاني من صفحة Rats! الرسمية وضع RATS.EXE الخاص به في جذر المستودع لاستخدام أهداف الملف التنفيذي الأصلي والمقارنة الثنائية.

الأوامر الشائعة

root@kitploit:~
make                 # build out/RATS_RE.EXE, .map, .obj, and .asm
make toolchain       # download, extract, and verify Microsoft Visual C++ 4.1
make run             # launch the rebuilt executable in DREAMM
make run-original    # launch the preserved original RATS.EXE
make test            # bounded DREAMM smoke test of the rebuilt executable
make test-original   # bounded DREAMM smoke test of the original executable
make debug           # start the rebuilt executable in DREAMM's debugger
make report          # report similarity for every reconstructed function
make compare-func FUNC=SaveHighScores ADDR=00409092

يتم تنزيل أرشيف MSVC 4.1 المثبّت بمجموع اختباري (checksum)، ومكتبات MSVC 4.1 المطلوبة، وmsvcrt40.dll المتوافق مع wibo، وDREAMM 4.0x21 عند الحاجة. تبقى هذه تبعيات بناء محلية متجاهَلة ولا يتم إيداعها في المستودع.

سير عمل إعادة البناء

يحتوي دليل ghidra/ المُودَع في المستودع على تصديرات assembly وdecompiler لجميع الدوال الداخلية البالغ عددها 177. الـ assembly هو مرجع المقارنة المعتمَد؛ أما C المُفكَّكة فهي مجرد بذرة دلالية.

ثبّت binary-recons مرة واحدة، ثم شغّله من جذر المستودع:

root@kitploit:~
python3 -m pip install -e /path/to/binary-recons
binary-recons --next-function           # reconstruct the next safe missing target
binary-recons --address 0x409092        # reconstruct or improve a specific target

يكتشف الأداة Qwen تلقائيًا في ذاكرة التخزين المؤقت القياسية Hugging Face؛ ويمكن لـBINARY_RECONS_MODEL_PATH تجاوز ذلك. يحافظ binary-recons.toml على الاختيار التلقائي داخل نطاقات أكواد اللعبة، ويشغّل ويوقف llama.cpp، ويحدد ملفات المعاملات وأمر binary-comp. كل تشغيل محدود يغذّي دالة واحدة من Ghidra، ويطلب من Qwen إصلاحات مركّزة للتجميع أو لفروقات الـ assembly، ويحتفظ بأفضل مرشح آمن قابل للتجميع. استخدم --target-score 95 لجولة أعمق أو --dry-run-prompt لفحص المطالبة دون تحميل Qwen.

تُسجَّل عمليات التشغيل المقيسة للنماذج المحلية في docs/MODEL_RESULTS.md.

نتائج النماذج: 36 دالة مُبقاة و3 عناوين مؤجلة

تم توليد معظم المرشحين المُبقَين باستخدام Qwen3.8 27B GGUF من Unsloth بصيغة BF16 (Qwen3.8-27B-BF16، مقدَّم باسم qwen3.8-27b-bf16) عبر llama.cpp بسياق من 32,768 رمزًا والضبط المسبق للنموذج qwen. يستخدم سير العمل الحالي تفكيك Ghidra كبذرة ميكانيكية، ويطلب من Qwen فقط عقدًا ذا معنى وتعديلات مصدرية محدودة، ويتابع التعديلات الصالحة كمسار إصلاح، ويحتفظ بأفضل نتيجة مقيسة بواسطة binary-comp. تم أيضًا قياس أداء Gemma 4 31B IT BF16، لكن لا يُحتفظ بأي من مرشحيها في شجرة المصدر.

أُعيد قياس الدرجات أدناه من شجرة المصدر الحالية باستخدام MSVC 4.1 و binary-comp في 2026-08-16. يشمل الوقت المسجَّل تشغيل الخادم المُدار، والتوليد أو الإصلاح، والبناء، والمقارنة للمرشح المُبقى. ويستثني عمليات التشغيل الاستكشافية غير الناجحة وجولات الإصلاح التي تمت بعد إنتاج مرشح قابل للاستئناف بالفعل؛ تبقى تلك متاحة في سجلات التشغيل.

شكر وتقدير

شكر خاص إلى:

  • Sean O'Connor لابتكاره Rats! ومواصلته إتاحة إصداره الأصلي لنظام Windows من صفحة اللعبة الرسمية.
تنزيل الأداة
العنوانالدالةالتشابه الحاليالوقت المسجَّل
0x0040215CIsLevelIndexInRange65.31%3m 06.4s
0x00402205ShowLevelComplete93.96%5m 26.1s
0x0040250CSubmitHighScore97.37%1m 49.7s
0x004026D0RenderScoreboard95.40%2m 30.9s
0x00402BF3AddLevelToTable73.85%4m 04.6s
0x00402DC6UpdateGameDisplay78.18%1m 36.4s
0x00402EE7GetLevelDisplayInfo71.70%2m 15.9s
0x00402FD5GetLevelIndex87.27%5m 48.3s
0x00403430IsBombAtLevel80.62%27.3 s
0x00403607PlaceLevel80.00%2m 32.6s
0x00404764DrawLevelIndicator97.33%1m 35.6s
0x0040499FRenderCornerGlyph69.83%1m 50.9s
0x00404D6EDrawBitmapPair98.67%1m 04.6s
0x00404E3BRenderBitmapToWindow94.74%26.4 s
0x00404ECEDrawBitmapToWindow95.59%59.3 s
0x00404F8BDrawScore96.20%1m 32.4s
0x0040507FDrawScorePanel97.97%2m 45.0s
0x0040525DDrawScoreDigits94.20%2m 13.7s
0x00405343RenderScoreOverlay77.78%1m 28.1s
0x0040546BDrawFrameBorder84.93%37.0 s
0x0040552EExplodeBomb64.71%1m 50.9s
0x0040560ERenderExplosionWave85.07%5m 40.0s
0x0040591ADrawBombExplosion89.31%1m 45.8s
0x00405AF5DrawPausedOverlay96.21%1m 05.1s
0x00405C52HighScoreDialogProc79.82%41.5 s
0x00405DB8ScorePanelDialogProc50.34%1m 53.1s
0x00405F72DemoVersionDialogProc46.31%4m 18.5s
0x004061D3OrderDialogProc53.16%10m 46.5s
0x00408854DrawStartButton70.80%1m 35.6s
0x00408A51UpdateMainMenuState97.56%28.9 s
0x00408AD3InitializeGameLevel83.72%5m 35.7s
0x00408E6ALoadLevelData77.50%52.5 s
0x00408F02LoadHighScores79.61%1m 15.0s
0x00409092SaveHighScores94.12%1m 25.9s
0x0040910CLoadLevelBitmaps98.93%7m 08.4s
0x00409DB6IsRatsHelpFile91.67%41.5 s

استُنفدت محاولات إعادة البناء للعناوين التالية دون الاحتفاظ بتنفيذ مصدري. الوقت المستغرَق تراكمي عبر جميع المحاولات المسجَّلة.

العنوان المؤجلالوقت المستغرَقالنتيجة
0x0040100010m 29.7sالدالة كبيرة جدًا لتمريرة أولى محدودة؛ تم الاحتفاظ بالهيكل الأصلي بنسبة 1.13%
0x0040384013m 10.0sلا يوجد مرشح قابل للتجميع؛ كبيرة جدًا لتمريرة محدودة سريعة
0x00406674—تم التخطي: كبيرة جدًا لتمريرة محدودة سريعة