تفاعل Ollama API مع برنامج Ghidra النصي للهندسة العكسية بمساعدة LLM.
ما هذا؟
يتفاعل هذا البرنامج النصي مع واجهة برمجة تطبيقات Ollama للتفاعل مع نماذج اللغات الكبيرة (LLMs). يستخدم واجهة برمجة تطبيقات Ollama لأداء العديد من مهام الهندسة العكسية دون مغادرة Ghidra. وهو يدعم كلاً من مثيلات Ollama المحلية والبعيدة. هذا البرنامج النصي مستوحى من GptHidra.
النماذج المدعومة
يدعم هذا البرنامج النصي أي نموذج يدعمه Ollama
أضافت شركة Ollama مؤخرًا دعمًا لأي نموذج متاح على HuggingFace بتنسيق GGUF، على سبيل المثال:
ollama run hf.co/arcee-ai/SuperNova-Medius-GGUF
المتطلبات الأساسية
- غيدرا
- أولاما
- أي من نماذج أولاما
إعداد أولاما
لا تتردد في استبدال llama3.1:8b
بأي من الطرز المتوافقة مع Ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b
الآن يجب أن تكون جاهزًا للبدء، يجب أن يكون localhost:11434
جاهزًا للتعامل مع الطلبات
ملاحظة: يدعم هذا البرنامج النصي أيضًا المثيلات البعيدة، ويقوم بتعيين عنوان IP والمنفذ أثناء التكوين الأول.
ماذا يمكن أن تفعل؟
- اشرح الوظيفة الموجودة حاليًا في نافذة برنامج فك التشفير
- اقتراح اسم للوظيفة الحالية، وسيقوم تلقائيًا بتسمية الوظيفة إذا تم تمكين ذلك
- أعد كتابة الوظيفة الحالية مع التعليقات الموصى بها
- أعد كتابة الوظيفة الحالية بالكامل، وحاول تحسين أسماء الوظائف/المعلمات/المتغيرات وإضافة التعليقات أيضًا
- يمكن للمستخدم طرح سؤال حول وظيفة
- البحث عن الأخطاء/اقتراح نقاط الضعف المحتملة في الوظيفة الحالية (المزيد فقط للتأكد من أنك قمت بتغطية كل شيء، بعض الاقتراحات غبية لأنها لا تحتوي على السياق)
- استخدم نسخة معدلة من LeafBlowerLeafFunctions.py Ghidra Script لأتمتة تحليل وظائف "الأوراق" المحتملة مثل strcpy و memcpy و strlen وما إلى ذلك في الثنائيات ذات الرموز المجردة، وإعادة التسمية تلقائيًا إذا تم تمكين ذلك
- اشرح تعليمات التجميع الفردية المحددة حاليًا في نافذة القائمة
- اشرح تعليمات التجميع المتعددة المحددة حاليًا في نافذة القائمة
- إدخال سريع عام لطرح الأسئلة (بدلاً من الاضطرار إلى استخدام Google، وهو جيد للأشياء البسيطة)
خيارات التكوين
تتوفر خيارات التكوين التالية، ويمكن تهيئتها عند التشغيل لأول مرة:
- عنوان IP للخادم : إذا كنت تستخدم مثيلًا بعيدًا، فاضبطه على IP للمثيل البعيد، وإلا فأدخل
localhost
- المنفذ : إذا كان المثيل الخاص بك موجودًا على منفذ مختلف، فقم بتغييره هنا - الافتراضي هو
11434
- المخطط : حدد
http
أو https
وفقًا لكيفية تكوين المثيل الخاص بك - النموذج : حدد النموذج الذي ترغب في استخدامه للتحليل، ويمكنك تغيير ذلك في أي وقت
- موجه خاص بالمشروع : يستخدم لإعطاء بعض السياق الإضافي للنموذج إذا كان ذلك مطلوبًا
- تعليقات الاستجابة : تقوم بعض الخيارات بتخزين الردود كتعليق في الجزء العلوي من الوظيفة، ويمكن تمكين/تعطيل هذا هنا
- إعادة التسمية التلقائية : تحاول بعض الخيارات إعادة تسمية الوظائف تلقائيًا بناءً على الاستجابات، ويمكن تمكين/تعطيل هذا هنا
يمكن استخدام الخيارين 11 و12 لضبط الإعدادات بعد التشغيل لأول مرة.
الاستخدام
- ضع البرنامج النصي GhidrOllama.py والدليل ghidrollama_utils في دليل البرنامج النصي Ghidra (عادةً
~/ghidra_scripts
). - ابحث عن الوظيفة/التعليمات التي تريد تقديمها إلى LLM
- قم بتشغيل البرنامج النصي من نافذة Script Manager
- إذا كانت هذه هي المرة الأولى التي تقوم فيها بتشغيل البرنامج النصي، فأكمل التكوين الأولي (يمكن تغيير هذا لاحقًا)
- حدد الطريقة التي تريد أن تعمل بها/التعليمات التي سيتم تحليلها
- انتظر حتى تتم طباعة الإخراج على وحدة التحكم (يختلف وقت الانتظار حسب الطراز ومواصفات المضيف)
طرق التشغيل
إن الدخول إلى نافذة البرنامج النصي لتشغيل هذا البرنامج النصي في كل مرة أمر غير مريح، ويمكن تشغيل البرنامج النصي بسهولة بالطرق التالية:
- ربط المفاتيح : ربط المفاتيح الافتراضي لهذا البرنامج النصي هو Q
- شريط الأدوات : يمكن النقر على أيقونة صغيرة على شريط الأدوات لتشغيل البرنامج النصي
ربط المفاتيح
للتمكين، بمجرد إضافة البرنامج النصي الخاص بك إلى قائمة أدلة نصوص Ghidra، حدد موقع البرنامج النصي في القائمة. انقر بزر الماوس الأيمن على النتيجة، ثم حدد "تعيين ربط المفتاح". إذا طلب منك مفتاحًا، فأدخل q .
شريط الأدوات
لتمكين رمز شريط الأدوات، حدد موقع البرنامج النصي في مدير البرامج النصية، ثم انقر فوق خانة الاختيار في العمود الأول (العمود في شريط الأدوات ). يجب أن تظهر أيقونة GhidrOllama في شريط الأدوات.
ملحوظات
- تجدر الإشارة إلى أن التحليل سيكون جيدًا مثل النموذج فقط، وهذا البرنامج النصي في الأساس يربط بين النماذج وغيدرا
- كلما كان النموذج أفضل (المزيد من المعلمات، أبطأ) كلما كان التحليل أكثر شمولاً وصحة (في معظم الأوقات!)
- إذا كنت تريد نظرة عامة سريعة على إحدى الوظائف، فإن llama3.1:8b سريع ويعطي تحليلًا لائقًا
- كن حذرًا مع الوظائف الكبيرة والنماذج ذات السياق المنخفض، إذا كانت الوظيفة كبيرة جدًا بالنسبة لنافذة السياق، فسوف يستجيب النموذج بكل هراء (إذا استجاب على الإطلاق)
أمثلة على تحليل الوظيفة
فيما يلي تطبيق strchr() كما هو موضح في نافذة فك ترجمة Ghidra برموز مجردة: