تحديث التجريبي قريبا!
مساعد الهندسة العكسية (ReVA) هو مشروع لبناء مساعد الذكاء الاصطناعي غير المفكك لمهام الهندسة العكسية. يتضمن ذلك الاستدلال عبر الإنترنت وفي وضع عدم الاتصال بالإضافة إلى بنية بسيطة.
يختلف ReVa عن الجهود الأخرى في بناء مساعدي الذكاء الاصطناعي لمهام الطاقة المتجددة لأنه يستخدم أسلوبًا يعتمد على الأدوات . تهدف ReVa إلى توفير مجموعة متنوعة من الأدوات الصغيرة لـ LLM، تمامًا كما توفر لك بيئة الطاقة المتجددة الخاصة بك مجموعة من الأدوات الصغيرة. يجمع ReVa بين هذا النهج وتقنيات سلسلة التفكير لتمكين LLM من إكمال المهام المعقدة.
تم تصميم كل أداة من الأدوات المقدمة لماجستير القانون بحيث تكون سهلة الاستخدام بالنسبة لماجستير القانون وتتحمل مجموعة متنوعة من المدخلات ولتقليل الهلوسة بواسطة ماجستير القانون. نقوم بذلك من خلال تزويد ماجستير القانون في القانون بمخطط ولكن مع التسامح مع المدخلات الأخرى، بما في ذلك الأوصاف التي توجه ماجستير القانون، وإعادة توجيه الأخطاء القابلة للتصحيح مرة أخرى إلى ماجستير القانون، بما في ذلك المخرجات الإضافية لتوجيه القرار التالي من قبل ماجستير القانون في القانون.
على سبيل المثال، عندما تطلب LLM فك الترجمة من أداة RE الخاصة بك، فسوف نقبل عنوانًا أوليًا بالنظام الست عشري، أو عنوانًا أوليًا في الأساس 10، أو اسم رمز بمساحة اسم، أو رمزًا. إذا أعطتنا LLM مدخلات سيئة، فإننا نبلغ ذلك إلى LLM مع تعليمات لتصحيح الإدخال (ربما نشجعها على استخدام قائمة الوظائف على سبيل المثال). لتشجيع الاستكشاف كما يفعل الإنسان، نقوم بالإبلاغ عن سياق إضافي مثل مساحة الاسم والمراجع التبادلية جنبًا إلى جنب مع التفكيك، وهذه دفعة صغيرة لجعل LLM يستكشف الثنائي بنفس الطريقة التي يفعلها الإنسان.
باستخدام هذه التقنية، يمكنك طرح أسئلة عامة والحصول على الإجابات ذات الصلة. يعطي النموذج الأولوية للمعلومات الواردة من الأدوات، ولكن في حالة عدم وجود معلومات، يظل بإمكانه الرد على الأسئلة العامة من التدريب الخاص به.
يمكنك طرح أسئلة مثل:
__mod_init
.mmap
؟جزء مهم من الهندسة العكسية هو العملية. العديد من الأدوات الأخرى تطرح ببساطة سؤالاً واحدًا عن LLM، وهذا يعني أنه من الصعب تحديد سبب حدوث شيء ما. في ReVa، نقوم بتقسيم جميع الإجراءات إلى أجزاء صغيرة وإدراج أفكار LLM في المخرجات. يسمح هذا للمحلل بمراقبة إجراءات LLM ومنطقها وإلغاء المطالبة وتغييرها إذا لزم الأمر.
يعتمد RevA على langchain، الذي يدعم عددًا من النماذج.
يتم توفير الدعم المدمج لـ:
راجع التكوين للحصول على مزيد من المعلومات حول إعدادات الموفرين.
من السهل إضافة خوادم استدلال إضافية إذا كانت مدعومة من قبل langchain.
تكوين ReVa موجود في خيارات أداة CodeBrowser. افتح برنامجًا وانتقل إلى تحرير -> خيارات الأداة -> ReVa.
هناك خيارات ل:
هناك أقسام لمقدمي الخدمات.
افتراضيًا، يتم تحميل مفتاح OpenAI من متغير البيئة OPENAI_API_KEY
. يمكنك أيضًا ضبط مفتاحك داخل Ghidra. سيؤدي ضبط المفتاح مرة أخرى إلى قيمة OPENAI_API_KEY
إلى مسح المفتاح من تكوين Ghidra وتحميله من البيئة.
يمكنك أيضًا تحديد النموذج. بشكل افتراضي، يتم تحديد gpt-4o
. يعمل هذا النموذج بشكل أفضل مع الأدوات والموجهات المقدمة من ReVa.
يعمل gpt-4
أيضًا بشكل جيد، ولكنه بطيء ويحتاج إلى مزيد من التحفيز من قبل المستخدم لاستكشاف ثنائي.
Olma هو خادم استدلال محلي. يتم تعيين الخادم الافتراضي على المضيف المحلي، باستخدام منفذ Ollama الافتراضي. يمكنك تغيير هذا إلى خادم بعيد إذا كنت تريد إجراء الاستدلال على جهاز بعيد. وهذا مفيد للمؤسسات التي تستضيف نفسها بنفسها.
يمكنك أيضًا تحديد نموذج. يجب أن يتم تحميل النموذج بالفعل على الخادم. وقد شوهد الأداء الجيد مع:
mixtral
llama3
phi
RevA لديه سير عمل من خطوتين.
يستخدم ReVa امتدادًا لأداة RE الخاصة بك لإجراء التحليل. انظر دعم غيدرا أدناه.
لطرح الأسئلة وتشغيل الاستدلال يتم توفير أداة سطر الأوامر. قم بتشغيل reva-chat
لبدء جلسة الدردشة. سيجد هذا الأمر جهاز Ghidra المفتوح الخاص بك ويتصل به. لفتح محادثة جديدة، قم بتشغيل الأمر مرة أخرى في محطة طرفية أخرى.
إذا كان لديك أكثر من غيدرا مفتوحة، يمكنك اختيار الخيار المناسب باستخدام reva-chat --project ${project-name}
، إذا لم يتم تعيينه، فسوف يسألك reva-chat
عن المشروع الذي تريد الاتصال به.
للتواصل بين reva-server
والامتداد، يتم استخدام gRPC. يمكنك قراءة المزيد عن ذلك (هنا)[./DEVELOPER.md]. يتم إنشاء الملفات المصدر من تعريفات البروتوكول هذه من ملف Makefile. لإنشاء ملفات التعليمات البرمجية المصدر للبروتوكول، قم بتشغيل هذا الأمر في جذر المشروع:
make protocol
قم أولاً بتثبيت مكون python، وأحب استخدام pipx
. قم بتثبيته بشيء مثل:
pip install pipx
في مجلد reverse-engineering-assistant
، قم بتشغيل:
pipx install .
بعد تثبيت مشروع python، قد يحذرك pipx من أنك بحاجة إلى إضافة مجلد إلى متغير بيئة PATH الخاص بك. تأكد من أن المجلد (الذي يحتوي الآن على reva-server
و reva-chat
) موجود في متغير PATH الخاص بك. يمكن لـ pipx القيام بذلك نيابةً عنك باستخدام هذا الأمر:
pipx ensurepath
سيحتاج الامتداد إلى تشغيل reva-server
، وستحتاج إلى تشغيل reva-chat
. في حالة عدم رغبتك في إضافتها إلى المسار الخاص بك، راجع قسم التكوين لمعرفة كيفية تعيين المسار إلى الملفات التنفيذية.
بمجرد بدء تشغيل reva-server
بواسطة الامتداد، يمكن بدء الدردشة باستخدام:
reva-chat
يجب تثبيت حزمة Python حتى يعمل ملحق Ghidra!
اتبع الإرشادات الموجودة في البرنامج المساعد Ghidra-assistant.
بعد التثبيت، قم بتمكين ملحق ReVa Plugin
في أداة CodeBrowser (افتح ملفًا وانقر فوق: ملف -> تكوين -> متنوع).
إذا كنت تريد تمكين ReVa افتراضيًا، فانقر فوق ملف -> حفظ الأداة لحفظ التكوين.
إذا كان كل شيء يعمل بشكل صحيح، فسترى قائمة ReVa على شريط القائمة.
يمكنك تعديل تكوين البرنامج المساعد في Edit -> Tool Options -> ReVa
.
عندما يقوم ReVa بإجراء ما، فإنه سيتم إنشاء نقطة تراجع عن كل إجراء. إذا أعاد ReVa تسمية 5 متغيرات، فسيكون ذلك بمثابة تراجع واحد.
يضيف ReVa خيارًا إلى قائمة نافذة أداة CodeBrowser. حدد نافذة -> سجل إجراءات ReVa لفتح نافذة سجل إجراءات ReVa.
تعرض هذه النافذة الإجراءات التي قام بها ReVa والتي يرغب في تنفيذها. يمكنك قبول التغيير أو رفضه بالنقر المزدوج على أيقونة ✅ أو. يمكنك أيضًا الانتقال إلى الموقع الذي سيتم تنفيذ الإجراء فيه بالنقر المزدوج على العنوان.
إذا رفضت إجراءً ما، فسيتم إخبار ReVa وسوف تمضي قدمًا.
يمكنك أيضًا تمكين "السماح التلقائي" في خيارات ReVa. سيؤدي هذا تلقائيًا إلى قبول جميع الإجراءات التي تريد ReVa تنفيذها.
يضيف ReVa أيضًا بعض العناصر إلى واجهة مستخدم Ghidra. يمكنك إما أن تطلب من ReVa القيام بشيء ما في نافذة الدردشة، "فحص استخدام المتغير بشكل main
بالتفصيل، أو إعادة تسمية المتغيرات بأسماء أكثر وصفية." أو استخدام نظام القائمة.
على سبيل المثال، يمكنك النقر بزر الماوس الأيمن فوق متغير في عملية إلغاء الترجمة، وتحديد Reva -> إعادة تسمية المتغير وسيقوم ReVa بتنفيذ الإجراء.
هل تحب عملي؟ هل تريد دعم هذا المشروع وغيره؟ هل أنت مهتم بكيفية تصميم وبناء هذا المشروع؟ تم إنشاء هذا المشروع والعديد من المشاريع الأخرى مباشرةً على البث الخاص بي على https://twitch.tv/cyberkaida!