أداة REA أصابت في استعادة 121 عضوًا من واجهة الجسر في تطبيق Electron، لكنها فوّتت إعدادًا أمنيًا يغيّره معالج حدث لاحقًا. فلا تعتبر مخرجات أي أداة تحليل آلي قائمة كاملة بما في البرنامج.
REA أداة مفتوحة المصدر (MIT) لتحليل البرامج عبر وكلاء الذكاء الاصطناعي. نشر فريق DevToolLab في 18 أكتوبر 2026 اختبارًا لها على تطبيق Electron واحد. استعادت الأداة الأعضاء الـ121 دون فقد أو اختلاق بحسب الكاتب. والاختبار على الإصدار 6.5.0، بينما أحدث إصدار منشور على GitHub هو 6.7.0، ولا يقول سجل الإصدار إن الحالة المفوَّتة عولجت. فهذا المقال تحليل لتجربة منشورة، لا مراجعة للأداة ولا شهادة أمان.
الخلاصة أولًا
- ما نجح: استعادة كل أعضاء desktopBridge البالغ عددهم 121، وثلاث من أربع نوافذ تطابقت إعداداتها مع المصدر.
- ما فات: معالج حدث will-attach-webview يغيّر إعدادًا أمنيًا لمعاينة المتصفح داخل التطبيق، ولم يظهر في المخرجات.
- ما لم يُحسم: 132 عملية إرسال بقنوات متغيرة.
- الإصدار: الاختبار على 6.5.0 ولا تُنقل نتائجه إلى 6.7.0 بأي اتجاه.
ما هي REA؟
بحسب مستودعها الرسمي: خادم MCP وأداة سطر أوامر لمساعدة الوكلاء في تحليل ملفات تنفيذية وتطبيقات JavaScript/Electron و.NET ومواقع وAndroid وغيرها. ترخيص كودها MIT.
والأدوات التجارية مثل IDA Pro وHopper وJEB على المستخدم أن يحصل عليها قانونيًا، ولا تمنح REA مفاتيحها. تقول الوثائق إن كل استنتاج يأتي مع دليله وحدوده، وإن التحليل يجري محليًا، وإن سياسة بيانات مزود النموذج تنطبق على ما يتلقاه الوكيل. وتكلفة النموذج والمحركات التجارية منفصلة عن الأداة.
الاختبار: من، وعلى ماذا؟
| الحقل | ما ذكره المختبِر |
|---|---|
| من ومتى | DevToolLab Team، 18 أكتوبر 2026. لا انتماء معلنًا للأداة، والموقع فيه إعلانات وعرض ترقية وروابط لأدواته. |
| الإصدار | REA 6.5.0؛ Node 24.22.0 |
| الهدف | تطبيق T3 Code (Electron، ترخيص MIT) الإصدار v0.1.0، الصادر 15 أكتوبر، والالتزام 81493ef |
| النظام والنموذج والعتاد | غير محددة في الصفحة |
| اللغة والمهمة | تحليل حزم Electron ومطابقة جسر العرض بالمصدر؛ ليست بالعربية |
ما الذي نجح؟
| النتيجة | ما نقله الكاتب |
|---|---|
| واجهة الجسر | استُعيد كل أعضاء desktopBridge البالغ عددهم 121 دون فقد أو اختلاق، بمقارنتها بملف preload من 607 أسطر |
| إعدادات النوافذ | ثلاث من أربع نوافذ تطابقت إعداداتها مع المصدر؛ والنافذة الرئيسية بُنيت من متغير فصُنّفت «ديناميكية» |
| قنوات الاتصال بين العمليات | 207 عملية إرسال من الواجهة و10 معالجات في الرئيسية؛ ربطت الأداة استدعاءً واحدًا بمعالجه، وبقيت 132 عملية بقنوات متغيرة غير محسومة |
الدلالة العملية: الجزء الثابت من الشيفرة، كالواجهة المعلنة، تلتقطه الأداة جيدًا. أما ما يُبنى أو يُعدَّل أثناء التشغيل فهو حيث تضعف. وحسابنا: 132 من أصل 207 عملية إرسال، أي نحو 64%، بقيت قنواتها غير محسومة.
ماذا فاتها؟
ذكر الكاتب أن معالجًا لحدث will-attach-webview في التطبيق يغيّر إعدادًا أمنيًا، هو contextIsolation، لمعاينة المتصفح داخل التطبيق. ولم يظهر هذا في مخرجات REA. ويفسّر الكاتب ذلك بأن الأداة تنمذج منشئات النوافذ لا التفضيلات التي تُعدَّل لاحقًا في معالجات الأحداث.
ولا نقدّم هنا تفصيلًا تشغيليًا عن الثغرات. المهم أن الأداة بحسب هذه التجربة تقول «أين يتوقف إثباتها»، وأن القارئ يلزمه ألا يعتبر غياب بند من المخرجات دليل غيابه من التطبيق.
كم استغرق التحليل، وما حدود الميزانية؟
ذكر الكاتب أن تشغيل التحليل على التطبيق كله استغرق 227 ثانية على 2,665 ملف JavaScript، أي نحو 8.5 مليون عقدة AST. ثم استنفد ميزانية النتائج (نحو 2 جيجابايت) داخل حزمة تابعة.
وحصر التحليل في حزم التطبيق نفسه استغرق نحو 35 ثانية. حسابنا: 227 ÷ 35 يعطي نحو 6.5 أضعاف، فالنطاق الضيق أسرع كثيرًا. وهذا قياس لتشغيل واحد على جهاز غير محدد، وليس مقياس سرعة عامًا.
هل ينطبق ذلك على 6.7.0؟
- نشر المطور 6.7.0 في 18 أكتوبر (07:45 بحسب الصفحة، بلا منطقة زمنية ظاهرة). ويذكر السجل أن 6.6.0 وُسم لكنه لم يُنشر على npm، وأن 6.7.0 يضم تغييراته. ولا تذكر الصفحة هل وصل 6.7.0 نفسه إلى npm.
- من تغييرات 6.6.0، أي غير موجودة في الإصدار المُختبَر: استعلامات للحقائق المحتفظ بها عن JavaScript، وتحليل أوضح لخيارات BrowserWindow الثابتة مع إبقاء الحالات غير المحسومة ظاهرة.
- لا يذكر سجل الإصدار حالة webview، فلا يصح الجزم هل كانت النسخ الأحدث ستلتقطها. فلا تُنقل نتائج هذا الاختبار إلى 6.7.0 بأي اتجاه.
ما الذي تثبته التجربة؟ وما الذي لا تثبته؟
| تثبت (بحسب كاتب واحد) | لا تثبت |
|---|---|
| استعادة دقيقة ثابتة لواجهة جسر من 121 عضوًا وأغلب إعدادات النوافذ، في تطبيق واحد والتزام واحد | حل القنوات الديناميكية (132 غير محسومة)، أو التقاط الإعدادات المعدّلة في المعالجات، أو التعميم على تطبيقات أخرى، أو أن أحدًا أعاد التجربة باستقلال |
ماذا تفعل بعد ذلك؟
الاقتراحات التالية منا، وليست من الاختبار ولا من وثائق الأداة، عدا الفقرة عن النسخ فهي ما ذكره المختبِر:
- اقرأ مخرجات أي أداة تحليل آلي على أنها «ما أثبتته»، وليست قائمة بكل ما في البرنامج.
- ثبّت نسخة الأداة؛ يذكر المختبِر أن الأداة صدرت منها 32 نسخة منذ 12 يوليو 2026.
- نقترح أن تحلل برامج تملك حق تحليلها فقط، وأن تقرأ ترخيص الهدف.
- نقترح مراجعة مسار النموذج الذي يتلقى النتائج إن كان البرنامج حساسًا.
- نقترح أن تقابل ما تجده الأداة بقراءة معالجات الأحداث في المصدر يدويًا، فهي النقطة التي فاتت هنا.
أسئلة وأجوبة
هل REA مجانية؟
كودها مجاني بترخيص MIT، لكن المحركات التجارية مثل IDA Pro وتكلفة النموذج منفصلتان وعليك تدبيرهما.
هل أثبت الاختبار أن T3 Code آمن؟
لا. هو تحليل ثابت لتطبيق واحد، وقد فاتته حالة محددة، فلا يصلح شهادة أمان.
هل تنطبق النتيجة على الإصدار 6.7.0؟
لا تُنقل إليه. الاختبار على 6.5.0 ولم يُعد على الأحدث، ولا يذكر سجل 6.7.0 معالجة حالة webview.
هل ترسل REA ملفاتي إلى الإنترنت؟
بحسب الوثائق، التحليل يجري محليًا. لكن ما يتلقاه الوكيل من نتائج تحكمه سياسة بيانات مزود النموذج الذي تستخدمه.
من أجرى الاختبار، وهل له مصلحة؟
DevToolLab Team، ولا انتماء معلنًا للأداة. لكن موقعه فيه إعلانات وعرض ترقية وروابط لأدواته، ولم يعد أحد التجربة باستقلال.
مصطلحات بلغة مبسطة
- التحليل الثابت: فحص الشيفرة دون تشغيل البرنامج.
- Electron: إطار يبني تطبيقات سطح المكتب بتقنيات الويب.
- واجهة الجسر: الدوال التي تعرضها نافذة التطبيق لجزئه الخلفي.
- MCP: بروتوكول يربط الوكلاء بأدوات خارجية.
المصادر
رُوجعت الوقائع على الصفحات المذكورة في 19 أكتوبر 2026. نتائج الاختبار من DevToolLab ولم يعدها أحد باستقلال.



