
oneiromancer v0.9.1
مساعد هندسة عكسية يستخدم نموذج لغوي كبير (LLM) يعمل محليًا للمساعدة في تحليل الكود الزائف.
oneiromancer
"جزء كبير من العيوب في تطوير البرمجيات يعود إلى عدم فهم المبرمجين بشكل كامل لجميع الحالات المحتملة التي قد ينفَّذ فيها كودهم." -- جون كارماك
"هل يمكنها تشغيل Doom؟" -- https://canitrundoom.org/
Oneiromancer هي أداة مساعدة في الهندسة العكسية تستخدم نموذج لغة كبير (LLM) يعمل محليًا ومضبوطًا بدقة للكود الزائف الخاص بـ Hex-Rays للمساعدة في تحليل الكود. يمكنها تحليل دالة أو مقتطف كود أصغر، وتُرجع وصفًا عالي المستوى لما يفعله الكود، واسمًا موصى به للدالة، واقتراحات لإعادة تسمية المتغيرات، بناءً على نتائج التحليل.

الميزات
- دعم عبر المنصات لنموذج LLM المضبوط بدقة aidapal المبني على
mistral-7b-instruct. - تكامل سهل مع مستخرج الكود الزائف haruspex وبيئات التطوير المتكاملة الشائعة.
- تتم طباعة وصف الكود، والاسم الموصى به للدالة، واقتراحات إعادة تسمية المتغيرات على الطرفية.
- يُحفظ الكود الزائف المحسّن لكل دالة تم تحليلها في ملف منفصل لسهولة الفحص.
- يمكن للحزم الخارجية استدعاء
analyze_codeأوanalyze_fileلتحليل الكود الزائف ثم معالجة نتائج التحليل.
مقال
انظر أيضًا
- https://www.atredis.com/blog/2024/6/3/how-to-train-your-large-language-model
- https://huggingface.co/AverageBusinessUser/aidapal
- https://github.com/atredispartners/aidapal
- https://plugins.hex-rays.com/atredispartners/aidapal
التثبيت
أسهل طريقة للحصول على أحدث إصدار هي عبر crates.io:
cargo install oneiromancer
لتثبيتها كمكتبة، نفّذ الأمر التالي في دليل مشروعك:
cargo add oneiromancer
البناء
بدلاً من ذلك، يمكنك البناء من المصدر:
git clone https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release
الإعداد
- حمّل وثبّت Ollama.
- حمّل الأوزان المضبوطة بدقة وملف modelfile الخاص بـ Ollama من Hugging Face:
wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal-8k.Q4_K_M.gguf wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal.modelfile - قم بإعداد Ollama بتنفيذ الأوامر التالية داخل الدليل الذي نزّلت فيه الملفات:
ollama create aidapal -f aidapal.modelfile ollama list
الاستخدام
- شغّل oneiromancer كما يلي:
export OLLAMA_BASEURL=custom_baseurl # if not set, the default will be used export OLLAMA_MODEL=custom_model # if not set, the default will be used oneiromancer <target_file>.c - ابحث عن الكود الزائف المحسّن في
<target_file>.out.c:vim <target_file>.out.c code <target_file>.out.c
[!TIP] للحصول على أفضل النتائج، أرسل دالة واحدة في كل مرة ليتم تحليلها بواسطة نموذج LLM.
التوافق
تم اختباره مع Ollama 0.32.9 على:
- Apple macOS Tahoe 26.5.2
- Ubuntu Linux 24.04.2 LTS
- Microsoft Windows 11 23H2
الاعتمادات
- كريس بيلوز (@AverageBusinessUser) من Atredis Partners لمساهمته بنموذج LLM المضبوط بدقة
aidapal<3
سجل التغييرات
المهام المتبقية
- تحسين التعامل مع ملفات الإخراج عبر إدارة الإصدارات و/أو دليل إخراج.
- تنفيذ ميزات أخرى من البرنامج الإضافي
aidapalلـ IDA Pro المكتوب بلغة IDAPython (مثل السياق). - التكامل مع haruspex و idalib.
- تنفيذ بروتوكول "تقرير الأقلية" (أي تقديم ثلاثة استعلامات واختيار أفضل الردود).
- النظر في إعادة هيكلة إعادة تسمية المتغيرات لمنع تلف محتمل للكود.
- التحقيق في حالات استخدام أخرى لنموذج
aidapalوتنفيذ بنية معيارية لإضافة نماذج LLM مخصصة.