← أحدث الأبحاث
🤖 machine learning

Pretraining on Call Graphs: When Binary Analysis Tasks Profit From Context

تتقصى هذه الورقة كيف يؤدي دمج سياق مخطط استدعاء الدوال (call graph) في تضمينات الدوال الثنائية إلى تحسين المتانة والإفادة في المهام المعتمدة على السياق مثل الدوال المتعلقة بمساحات الأسماء (namespace)، مع الكشف عن أن هذه التحسينات لا تعمم عالمياً عبر المهام اللاحقة وقد تؤدي حتى إلى إيجاد مقايضة بين الأداء الدلالي والأداء النحوي.

المؤلفون الأصليون: Samuel Valenzuela, Johannes Kinder

نُشر 2026-08-04
📖 4 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: Samuel Valenzuela, Johannes Kinder

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تخيل أنك محقق تحاول حل لغز ما، لكن كل ما تملكه من أدلة هو مكتوب بشفرة سرية تتغير في كل مرة يكتبها المؤلف. هذا هو عالم تحليل الكود الثنائي (binary code analysis). عندما يتم تجميع برنامج حاسوبي، فإنه يتحول إلى تدفق من تعليمات الآلة التي لا تشبه شيئاً من الكود الأصلي القابل للقراءة من قبل البشر. الأمر يشبه أخذ كعكة لذيذة، وخبزها، ثم محاولة معرفة الوصفة بمجرد تذوق الفتات. التحدي يكمكم في أن خبازين مختلفين يمكنهما صنع نفس الكعكة تماماً باستخدام مكونات أو خطوات مختلفة قليلاً، ومع ذلك تبدو النتيجة متطابقة في المذاق. في العالم الرقمي، يعني هذا أن قطعتين من الكود يمكن أن تبدوا مختلفتين تماماً على السطح، لكنهما تقومان بنفس الشيء تماماً.

ولفك هذه الشفرات، يستخدم العلماء تعلم الآلة (machine learning) لإنشاء "التمثيلات المتجهة" (embeddings). فكر في التمثيل المتجه كبطاقة هوية فريدة أو بصمة لقطعة من الكود. إذا تطابقت البصمتان، فمن المرجح أن الكود يفعل الشيء نفسه. عادةً، تُصنع بطاقات الهوية هذه من خلال النظر إلى دالة واحدة فقط (مهمة صغيرة داخل البرنامج) بشكل منعزل. ولكن ماذا لو أعطينا المحقق خريطة للحي بأكرا؟ في البرمجة، تسمى هذه الخريطة رسم بياني للاستدعاء (call graph)، وهو يوضح أي الدوال تستدعي الدوال الأخرى. السؤال الكبير هو: هل يساعد إعطاء المحقق خريطة للحي في تحديد المشتبه به بشكل أفضل، أم أنه يربك المحقق بمزيد من الضجيج؟

هذه الورقة البحثية، بعنوان "التدريب المسبق على الرسوم البيانية للاستدعاء: متى تستفيد مهام تحليل الكود الثنائي من السياق"، تغوص في هذا السؤال بالضبط. أراد الباحثان، صمويل فالنزويلا وجوهانس كيندر، معرفة ما إذا كان إضافة "سياق الحي" (الرسم البياني للاستدعاء) إلى بطاقة هوية الكود سيجعل المحقق أكثر ذكاءً بالفعل. لقد أخذا اثنين من أذكى "محققي الكود" الموجودين حالياً (يُطلق عليهما CLAP و jTrans) وعلمهما كيفية النظر في الرسم البياني للاستدعاء باستخدام نوع خاص من الذكاء الاصطناعي يسمى الشبكة العصبية الرسومية (GNN). واختبرا هؤلاء المحققين الجدد المدركين للسياق في ثلاث وظائف مختلفة: العثور على الكود المتطابق، وتخمين اسم دالة ما، ومعرفة إعدادات المترجم (compiler settings) التي استُخدمت لبنائه.

إليك ما وجداه، وهي نهاية غير متوقعة للقصة. عندما كان الهدف هو العثور على كود متطابق (مهمة تسمى Binary Code Similarity Detection)، كان المحققون المدركون للسياق مذهلين. فمن خلال النظر في الرسم البياني للاستدعاء، استطاعوا رصد التطابقات التي فاتت المحققين الأصليين، خاصة عندما يكون الكود ضخماً أو معقداً. على سبيل المثال، عندما كان الرسم البياني للاستدعاء يحتوي على حوالي 64 عقدة، بدأ المحققون الأصليون في فقدان التركيز، لكن المحققين الجدد حافظوا على هدوئهم.

ومع ذلك، تأخذ القصة منعطفاً حاداً عندما حاول المحققون القيام بمهام أخرى. فعندما طلب الباحثون منهم تخمين اسم دالة ما (مهمة دلالية/semantic)، كانت النتائج مختلطة. فبينما أصبحت الشبكة العصبية الرسومية المعقدة أسوأ في ذلك، فإن نهجاً أبسط يعتمد فقط على حساب متوسط معلومات الحي أدى بشكل جيد أو حتى أفضل من المحققين الأصليين. اتضح أن تدريب الذكاء الاصطناعي ليكون بارعاً في "إيجاد التطابقات" لم يساعده بالضرية في تسمية الأشياء بشكل صحيح، كما أن النماذج المعقدة قد تكون جعلت المهمة أكثر تعقيداً مما ينبغي.

والأمر الأكثر إثارة للاهتمام، هو أنه عندما كانت المهمة هي رصد التفاصيل التقنية مثل مستوى تحسين المترجم المستخدم (مهمة تركيبية/syntactic)، اعتمدت النتيجة على الطريقة المستخدمة. فقد أدى المحققون الذين يستخدمون الشبكات العصبية الرسومية المعقدة أداءً ضعيفاً، حيث ساء أداؤهم كلما زاد السياق لديهم. ومع ذلك، فإن نماذج المتوسط البسيط كانت في الواقع أفضل في رصد هذه التفاصيل التقنية عندما مُنحت القدرة على الوصول إلى رسوم بيانية للاستدعاء أكبر. يشير هذا إلى أنه بينما قد تفوت النماذج المعقدة التي تركز على الصورة الكبيرة للحي التفاصيل التقنية الدقيقة، فإن النظر البسيط في الحي بأكمله يمكن أن يساعد في تجميع تلك الأنماط التقنية منخفضة المستوى بفعالية.

اكتشف الباحثون أيضاً أن "خريطة الحي" هذه لم تكن مفيدة للجميع بالتساوي. فقد حققت نتائج رائعة للدوال التي تعد جزءاً من مجموعة أكبر أو مساحة أسماء (مثل مكتبة من الأدوات)، لكنها لم تساعد كثيراً الدوال التي تقوم بمنطقها الخاص والمعزول. في الواقع، تشير الدراسة إلى أنه إذا كنت تريد للذكاء الاصطناعي الخاص بك أن يكون جيداً في رصد التفاصيل التقنية، فقد ترغب في استخدام نهج المتوسط البسيط بدلاً من النهج المعقد، حيث تميل النماذج المعقدة إلى طمس الخطوط الفاصلة للمهام التركيبية.

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

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →