في 8 أكتوبر 2026، تصدّر مستودع برمجي لم يسمع به أحد قبل ثلاثة أشهر قائمة المشاريع الرائجة (Trending) على GitHub في المرتبة الأولى.
اسمه REA، أي "هندسة عكسية لأي شيء" (Reverse Engineer Anything)، وهو يمنح وكيلك الذكي مُفكّك شيفرة حقيقيًا.
**احفظ هذه الصفحة كمرجع - إذا كنت تريد النسخة المطوّلة، فالمنهج الكامل المكوّن من 20 درسًا حول هذا الموضوع متاح الآن على**
ينقلك المشروع من شاشة طرفية فارغة إلى نسخة معاد بناؤها تجتاز اختبارات التكافؤ الخاصة بها، مع كتابة كل أمر وكل موجّه (Prompt) بالتفصيل. ابدأ من هنا.
كان رد الفعل هو نفسه في كل مكان ذلك الأسبوع.
لخّصها ماثيو بيرمان (Matthew Berman) في ثلاث كلمات، وشاهدها 3.6 مليون شخص.
https://x.com/MatthewBerman/status/2108245653843509415
مشروع REA هو خادم MCP مفتوح المصدر بالإضافة إلى واجهة سطر أوامر (CLI) يتكامل مع Claude Code و Codex و Cursor و Gemini CLI.
يعمل برخصة MIT، طوّره morluto، وصدر إصداره الأول في 12 يوليو 2026، وبعد ثلاثة أشهر تجاوز 100,000 نجمة على GitHub.
كل شيء يعمل محليًا، وكل نتيجة تأتي موسومة إما كملاحظة، أو استنتاج، أو مجهول، مع إرفاق العنوان أو موقع الاستدعاء الداعم لها.
هذا هو المسار الكامل من ملف ثنائي مغلق إلى نسخة معاد بناؤها تملكها أنت، في ثماني خطوات.

قبل الخطوات: ما أطلقه الناس فعليًا باستخدام هذه الأداة
الأداة ليست هي القصة، بل ما تم إنجازه خلال أربعة أسابيع هو القصة.
أعاد فريق ArtCraft بناء سبعة تطبيقات من Adobe كبدائل مجانية ومفتوحة المصدر، ثم انتقلوا لاستهداف Office عبر WordCraft و GridCraft و DeckCraft.
أصبح العدد اثني عشر تطبيقًا حتى الآن، جميعها مكتوبة من الصفر بلغة Rust، وتعمل بشكل أصلي على ثلاث منصات، وجميعها باستثناء واحد تعمل أيضًا داخل علامة تبويب في المتصفح عبر WebAssembly.
وفي جانب الألعاب، الأدلة أكثر تحديدًا:
- حصلت لعبة Super Mario Sunshine على نسخة أصلية للحواسيب الشخصية: استغرقت حوالي 365 ساعة عمل من الوكيل و 17.3 مليار رمز (Token)، باستخدام Claude و Codex معًا
- إعادة بناء لعبة Touhou باستخدام الوكلاء على مدونة REA الرسمية: 697 دالة، 696 تطابقًا تامًا، وأصبحت قابلة للعب في حوالي 12 يومًا
- تفكيك وإعادة بناء تطبيق المصادقة Aegis (3,077 صنفًا)، مع اجتياز جميع حالات الاختبار البالغ عددها 133
- إعادة بناء دالة توزيع الصوت (sound-pan) في لعبة DX-Ball بلغة C، حيث اجتازت 3,205 من حالات اختبار x86 الأصلية وأعادت إنتاج جميع البايتات المترجمة البالغ عددها 63
لاحظ ما لا تتضمنه هذه القائمة.
لم يقم أحد بكسر فحص الترخيص، ولم ينشر أحد الشيفرة المصدرية لشخص آخر.
كل حالة من هذه الحالات هي سلوك تم استرداده، وتدوينه، وإعادة بنائه في شيفرة جديدة.
01. وجّه الهدف قبل أن تفتح أي شيء
سبب انتشار هذه الأداة ليس أنها تقرأ شيئًا واحدًا بشكل جيد. إنها تقرأ تقريبًا كل شيء، وتعرض الأدلة لكل ادعاء تقدمه.
https://x.com/RoundtableSpace/status/2109165852578992582
هذه القائمة هي أيضًا أول قرار تتخذه. الطريقة الأكثر شيوعًا لإضاعة فترة بعد الظهر هي اللجوء إلى مُفكّك الشيفرة عندما يكون الهدف تطبيق Electron تتواجد ملفات JavaScript الخاصة به أمامك مباشرة.
وجّه REA نحو تطبيق Electron وستحصل على الوحدات، والاستيرادات، وحدود IPC في ثوانٍ دون الحاجة لأي محرك على الإطلاق، بينما يؤدي فتح ملف Mach-O أو ELF أصلي إلى إنشاء قاعدة بيانات Hopper، وهو المسار الأعمق والأبطأ.
معرفة البيئة التي تعمل فيها توفر ساعات، لذا اجعل هذا مهمة موجّهك الأول.
1أريد فهم كيفية عمل [الميزة] في [التطبيق]، والذي يقع في [المسار المطلق].2 أخبرني أولاً بنوع هذا الهدف (أصلي، Electron/JS، .NET، Go، APK، WASM)3 واختر أداة REA المناسبة لفتحه. لا تبدأ التحليل العميق بعد.4 ثم ارسم له خريطة في فقرة واحدة: مما بُني، وما حجمه، وأين يجب أن5 أبحث أولاً عن [الميزة]. افصل بين الملاحظات والاستنتاجات والمجاهيل.

الجزء الذي لا يذكره أحد تقريبًا: العديد من ألعاب Unity تُصدر منطقها بصيغة .NET، و REA يقرأ .NET دون الحاجة إلى محرك إضافي.
وهذا هو السبب الكامل الذي يجعل لعبة Steam مدفوعة تنتقل من ملف ثنائي إلى شيفرة C# قابلة للتعديل في أقل من نصف ساعة.
وكل تطبيق Electron على جهازك قابل للقراءة الآن، دون حتى تشغيله:
1# where the JavaScript lives2macOS: /Applications/<App>.app/Contents/Resources/app.asar3Windows: C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar4 npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
02. ثبّت الأداة في خمس دقائق، ثم أضف محركًا واحدًا
ما يجعل هذا النظام يعمل ليس موجّهًا ذكيًا. إنه محرك تفكيك شيفرة حقيقي متصل بالوكيل، وهذا بالضبط كيف وصفه أحد المطورين.
https://x.com/techNmak/status/2108431092462338178
تقوم عملية الإعداد بتسجيل خادم MCP لدى وكيلك وتثبيت مهارة سير العمل المقابلة.
وتعرض كل تغيير قبل كتابة أي شيء، وتُنشئ نسخة احتياطية لما تتعامل معه.
node -v # Node 22.19+, 24.11+ or 26+. Versions 23 and 25 are not supported
1npx rea-agents@latest setup # registers the MCP server, asks before writing2npm install --global rea-agents # the short rea command, forever3rea --help4# restart the agent, then verify. doctor only checks, it never changes anything5npx -y rea-agents@latest doctor --client claude_code --json
إعادة التشغيل أهم مما تبدو عليه: يجب بدء جلسة الطرفية من جديد، وتحتاج تطبيقات سطح المكتب إلى إغلاق كامل، لأن إغلاق النافذة لا يكفي.
ثم أضف محركًا فقط لما تريد قراءته فعليًا:
هناك ملف يستحق كتابته قبل هدفك الحقيقي الأول: قواعد المنزل في claude-md.
حلّل فقط ما تملكه، ضع وسمًا على كل ادعاء بأنه ملاحظة أو استنتاج أو مجهول، واستشهد بالعنوان الداعم له، ولا تعتبر أبدًا أن سلوكًا تم استرداده قد اكتمل دون اجتياز اختبار.
1# native programs and games: Ghidra 12.1.x and JDK 21 or newer2 export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC3 export JAVA_HOME=/absolute/path/to/jdk-214 npx -y rea-agents@latest doctor --provider ghidra --json56 # Android apps: JDK 17+ and jadx-headless-mcp 0.7.17 export REA_JADX_MCP_JAR=/absolute/path/jadx-headless-mcp-0.7.1-all.jar8 rea inspect-android-package /path/App.apk910 # smart contract bytecode, Linux x64 for now11 rea inspect-evm-interface ./runtime.hex hex --json
03. الاستطلاع: الخريطة تسبق الشيفرة
لا تفتح دالة واحدة بعد.
أمر واحد يخبرك بالجهاز الذي يعمل عليه الملف الثنائي، وعدد الدوال بداخله، وكل النصوص القابلة للقراءة المدفونة فيه.
هذا النص هو أسرع دليل ستحصل عليه طوال اليوم: نقاط النهاية (endpoints)، وسلاسل الأخطاء، وأسماء الميزات تصف التطبيق قبل أن تقرأ أي منطق.
1rea.open_binary { path: "/Applications/Target.app/Contents/MacOS/Target" }2rea.binary_overview {}3 arch: arm644 functions: 1,284 identified5 entry: _main @ 0x1000051c067rea.search { query: "http" }8 0x10004a2c0 "https://api.target.app/v3/sync"9 0x10004a300 "Authorization: Bearer "1011rea.xrefs { address: "0x100012ab0" }12 147 references -> core config loader, called everywhere

يحسب REA عدد مرات استدعاء كل دالة، وهذا الرقم هو رقم الإسناد المرجعي (cross-reference).
الدالة التي تُستدعى 147 مرة تمثل بنية التطبيق، أما التي تُستدعى مرتين فهي مجرد دالة مساعدة يمكن تأجيلها.
رتّب حسب هذا الرقم وانزل تدريجيًا، ولا ترتّب أبدًا حسب ترتيب الملف، لأن ترتيب الملف هو الطريقة التي يضيع بها الناس عطلة نهاية الأسبوع داخل ملف ثنائي لا يحتوي سوى على أربع دوال مثيرة للاهتمام.
04. فك ترجمة دالة واحدة، ثم اجعل Opus يسمّي كل شيء فيها
يقوم مُفكّك الترجمة (Decompiler) بتحويل تعليمات الآلة الخام إلى شيء قريب من لغة C.
تخرج النتيجة خشنة: أسماء مثل var_28، وتحويلات أنواع (casts) في كل مكان، وفروع متشابكة، والخشونة مقبولة، لأن قابلية القراءة هي كل ما يحتاجه النموذج.
1# one function by address, as JSON you can save and reuse2rea decompile /path/to/Target 0x100012ab0 --provider hopper --json > fn_config.json34# or find it by name and follow its references5rea function /path/to/Target parseConfig --provider hopper --json6rea xrefs /path/to/Target 0x100012ab0 --provider hopper --json
ثم سلّم هذه المخرجات إلى Opus 5.5 واجعله يقوم بالجزء الذي يعجز عنه مُفكّك الشيفرة:
1إليك شبه الشيفرة (pseudocode) المفكوك من دالة تحتوي على 147 إسنادًا مرجعيًا.231. أعد تسمية كل متغير بناءً على كيفية استخدامه، واذكر الغرض منه في جملة واحدة.42. اذكر هياكل البيانات التي تقرأها وتكتبها، وسمِّ النمط الذي تتبعه.53. أعد كتابتها كشيفرة نظيفة وطبيعية باللغة التي توحي بها اصطلاحات الاستدعاء.64. أشّر على أي معالجة مفقودة للأخطاء، أو تحقق من المدخلات، أو فحص أمني.78فكّر بمستوى جهد xhigh قبل الإجابة. ضع علامة على أي شيء لست متأكدًا منه.

يأتي Opus 5.5 بخمسة مستويات للجهد: منخفض، متوسط، عالٍ، xhigh، وأقصى (max).
المستوى المتوسط يفحص ويتنقل، والعالي يشرح الدوال العادية، والأقصى مخصص للشيفرة المشفرة (obfuscated) والعمليات الحسابية المعقدة للمؤشرات.
الجهد هو أكبر مؤشر لجودة التحكم في هذا المسار، ومعظم الناس يتركوه على الوضع الافتراضي ثم يلومون النموذج.
فك الترجمة يمنحك ما تفعله الشيفرة، والنموذج يمنحك السبب، والأسماء اللازمة لإعادة بنائها.
05. التشويش: اكسر ما يستحق الكسر، ووزّع ميزانية الباقي
بعض التطبيقات مصممة لمقاومة ما تفعله بالضبط: منطق مبعثر، وسلاسل مشفرة، وفروع وهمية أُضيفت فقط لإهدار انتباهك.
هذا هو المكان الوحيد الذي يعاني فيه حتى أفضل نموذج، وهناك أرقام موثقة لذلك.
وجّه مختبر Elastic Security Labs نموذج Claude Opus إلى أداة تشويش Tigress عبر 20 مهمة، وخرج بنتيجتين مباشرتين.
المحاولة الفاشلة تكلف ضعف المحاولة الناجحة تقريبًا، لأن النموذج يستمر في الدفع قبل أن يستسلم، وعاد التشويش متعدد الطبقات بنتيجة صفر، لذا فإن الإصرار عليه هو أغلى طريقة لعدم تعلم أي شيء.

القاعدة العملية هي تخصيص ميزانية لكل دالة، وليس لكل جلسة.
أزل الحشو أولاً، لأن أداة مجانية تُسمى Caveman تزيل حوالي 75% من نفايات الشيفرة المفكوكة، ليتمكن النموذج بعدها من تركيز انتباهه على المنطق الحقيقي.
1تبدو هذه الدالة مشوشة (obfuscated). اعمل بأقصى جهد (max effort).231. حدد التقنيات الموجودة (تسطيح تدفق التحكم، المسندات المعتمة،4 الشيفرة الميتة، تشفير السلاسل، تقسيم الدوال) وأشر إلى كل منها هنا.52. حلّها: أزل الفروع الميتة، قيّم المسندات المعتمة، ألغِ تسطيح6 التوجيه، وفك تشفير السلاسل المدمجة إذا كان المفتاح قابلاً للاسترداد. أظهر ما تبقى.73. قيّم الثقة من 1 إلى 10. إذا كانت أقل من 6، سمِّ الأجزاء غير المؤكدة والسياق الذي سيحلها.8 لا تخمن بصمت.
06. السرب: متحكم واحد، وعمال كثيرون
لا تستطيع محادثة واحدة قراءة 500 دالة بشكل جيد.
إنها تنسى ما رأته قبل أربعين دالة، وتسمّي نفس الهيكل بثلاث طرق مختلفة، وتبدأ في تناقض نفسها بصمت.
الحل ليس المزيد من السياق، بل تقسيم الأدوار: متحكم يوزع العمل، وعمال يأخذ كل منهم دالة واحدة ويتوقف.

1أنت متحكم هندسة عكسية. خريطة الدوال موجودة في functions.json2(العنوان، الاسم، الحجم، عدد الإسنادات المرجعية).341. جمّع الدوال في مجموعات بناءً على قربها في رسم الاستدعاء؛ ورتّب المجموعات حسب عدد الإسنادات المرجعية.52. وزّع كل مجموعة على عامل. لا تحلل أي دالة بنفسك أبدًا.63. احقن الهياكل التي تم حلها بالفعل في كل ملخص لتبقى الأسماء متسقة.74. مستوى الثقة الأقل من 6 يحصل على مراجعة ثانية مع سياق من الجيران المحلولين.85. تتبّع إجمالي استهلاك الرموز (tokens) وأبلغ عنه بعد كل مجموعة.910أنت عامل. تحصل على دالة واحدة مفكوكة والهياكل المحلولة حتى الآن.11أعد بالضبط: العنوان، الغرض، الثقة (1-10)، structs_used، structs_new،12clean_source، flags. أعد استخدام أسماء الهياكل الموجودة، ولا تخترع اسمًا ثانيًا13لهيكل أعطاك إياه المتحكم بالفعل. دالة واحدة فقط. توقف عند الانتهاء.
يوفر REA أيضًا مسارات عمل موجّهة مدمجة في خادم MCP لا يفتحها معظم الناس أبدًا:
- - investigate_feature - تتبع ميزة من الاكتشاف إلى الدوال الدقيقة
- - compare_application_versions - قارن بين إصدارين لترى ما تغير فعليًا
- - verify_reconstruction - تحقق من نسختك المعاد بناؤها مقابل الأدلة المحفوظة
- - audit_residual_unknowns - اذكر ما لا يزال غير مثبت
07. الغرفة النظيفة: الحاجز بين سياقين هو المنتج
إعادة البناء بأسلوب "الغرفة النظيفة" تعني أنك تنسخ ما يفعله التطبيق ولا تنسخ أبدًا الشيفرة الموجودة بداخله.
إذا فعلت ذلك بشكل صحيح، فما تصدره سيكون ملكك بالكامل، وإذا أخطأت، فستحمل حقوق طبع ونشر شخص آخر داخل مستودعك الخاص.
هذه طريقة عمرها 40 عامًا، وليست اختراعًا لعام 2026.
في أوائل الثمانينيات، أعادت Compaq بناء نظام BIOS الخاص بشركة IBM بهذه الطريقة بحوالي مليون دولار، وهو السبب الوحيد لوجود حواسيب شخصية من علامات تجارية أخرى.
في عام 1992، قالت المحكمة في قضية Sega ضد Accolade إن تفكيك الشيفرة يمكن أن يُعتبر استخدامًا عادلاً عندما يكون الطريقة الوحيدة لفهم كيفية عملها، وفي عام 2000 خسرت Sony قضية Sony ضد Connectix بنتيجة 3-0 لأن المحاكي النهائي لم يكن يحتوي على أي شيفرة من Sony.
والجانب الآخر من الخط واضح بنفس القدر: في عام 2011، وصل جورج هوتز إلى تسوية مع Sony ووافق على التوقف بعد نشر مفتاح الجذر (root key) لجهاز PS3.

أربع قواعد تبقيك في الجانب الصحيح، وفريق ArtCraft يتحقق من الأربع تلقائيًا في كل عملية بناء:
- - راقب، ولا تنسخ أبدًا. شغّل الهدف كصندوق أسود، والتقط صورًا لنافذته فقط، ولا تلصق شيفرته في مشروعك أبدًا
- - المواصفات، وليس المصادر. تنسيقات الملفات تأتي من معايير عامة (OOXML هو ECMA-376 / ISO 29500، بالإضافة إلى مواصفات RTF و ODF المنشورة)، ولا تأتي أبدًا من قراءة محلل منافس
- - الأصول الأصلية فقط. كل أيقونة، وخط، وقالب، وصوت يتم رسمه بالشيفرة، أو يكون ملكية عامة، أو مرخصًا بشكل مفتوح، مع وجود صف له في ملف نسب الحقوق
- - افصل بين المهمتين. وكيل واحد يسترد السلوك ويكتب المواصفات، وسياق مختلف ينفذ من تلك المواصفات وحدها
القاعدة الأخيرة هي التي يتخطاها الناس، وهي الحدود الحقيقية.
وكيل التحقيق الخاص بك ملوث بحكم التعريف، لأنه قرأ الشيفرة المفكوكة، بينما يجب ألا يكون وكيل البناء كذلك.
1من التحليل المكتمل، اكتب مواصفات غرفة نظيفة لإعادة التنفيذ.23صف السلوك فقط: كل واجهة عامة، نموذج البيانات، كل ميزة مرئية للمستخدم4كمتطلب قابل للاختبار، تنسيقات الملفات المقروءة والمكتوبة، ومعالجة الأخطاء.56لا تتضمن العناوين، أو الإزاحات (offsets)، أو أسماء المتغيرات المفكوكة، أو لغة التجميع، أو أي شيء7منسوخ من الأصل. يجب أن يتمكن مطور لم يرَ الملف الثنائي قط من8تنفيذ إصدار متوافق من هذا المستند وحده.910الأقسام: البنية، نموذج البيانات، واجهة برمجة التطبيقات العامة، تنسيقات الملفات، حالات الاختبار.
العمل من وصف ليس مجرد غطاء قانوني.
بل يتيح لك اتخاذ القرار الصحيح للغتك الخاصة بدلاً من وراثة قرارات اتخذها شخص ما قبل عقدين، ولهذا السبب يكون WordCraft أسرع من Word في بعض الأماكن.
08. تحقق من التكافؤ، ثم أصدره عبر MCP
لم تكن تملك الشيفرة المصدرية الأصلية أبدًا، لذا لا يمكنك المقارنة سطرًا بسطر.
أنت تقارن السلوك: نفس المدخلات في النسختين، ونفس المخرجات تعود.
1ابنِ بيئة اختبار سلوكية تقارن الملف الثنائي الأصلي بنسختي المعاد بناؤها.23أنشئ 50 مدخلاً: 30 عادية، 10 حدية (فارغة، أقصى حجم، يونيكود)، 10 خاطئة4(مشوهة، تالفة). شغّل كل منها عبر الاثنين، وقارن بايت ببايت حيثما أمكن5ودلاليًا في غير ذلك. أبلغ عن معدل التطابق، والاختلافات، وخطورة كل منها6(تجميلي / سلوكي / حرج). احفظ في report.md.
"أعتقد أنه يتطابق" ليس دليلاً، لكن معدل التطابق دليل، وذلك التقرير هو أكثر شيء مقنع يمكنك وضعه في أعلى منشور الإصدار.
ثم أصدر النسخة المعاد بناؤها بالطريقة التي فعلها REA وتطبيقات Craft، كخادم MCP، حتى يتمكن وكيل الشخص التالي من قيادة أداتك كما قدتَ أنت REA.
امنح كل دالة اسمًا واضحًا وأمر تثبيت بسطر واحد، وسيصبح كل إجراء أمرًا مسمى يمكن للنقرة، والاختصار، والوكيل تشغيله بشكل متطابق.
1claude mcp add wordcraft -- wordcraft-cli mcp23> Open report.docx, make every heading 14pt bold, export to PDF4 ok select.all-headings -> 12 selected5 ok format.font-size 14 . format.bold6 ok export report.pdf (selectable text, bookmarks kept)
الحدود، والأخطاء الخمسة التي تضيع عطلة نهاية الأسبوع
لا يستطيع REA لمس الخادم، لأنه يقرأ ما هو موجود على جهازك، والشيفرة التي تعمل على خوادم الشركة لم تُشحن إليك أبدًا.
الشيفرة المفكوكة هي إعادة بناء، وليست المصدر الأصلي، وهذا هو السبب الكامل لوجود الخطوة 08.
تظل الملفات الثنائية C++ المجردة من الرموز أصعب بكثير من ألعاب Unity .NET، والمحركات التجارية لا تزال تحتاج إلى تراخيص حقيقية.
- - فتح مُفكّك شيفرة على تطبيق Electron بينما JavaScript موجود هناك مباشرة
- - تفريغ الملف الثنائي بالكامل قبل قراءة الملخص، مما يدفن المنطق ويرفع الفاتورة
- - قراءة الدوال حسب ترتيب الملف بدلاً من عدد الإسنادات المرجعية
- - السماح للنموذج بنسخ الشيفرة إلى نسختك المعاد بناؤها، مما يكسر مفهوم الغرفة النظيفة بلصقة واحدة
- - الإصدار دون تقرير تكافؤ
الخط الصادق على الجانب القانوني، بما أن نصف منصة X قضى أسبوعًا في الصراخ بشأن القرصنة: قراءة تطبيق على حاسوبك الخاص هي تعلم، وإعادة بناء ميزة من سلوكها هي الطريقة التي عملت بها الصناعة منذ الثمانينيات، ونسخ الشيفرة أو كسر الميزات المدفوعة هو الجزء الذي يعرضك للمقاضاة.
ادرس الأصل، وأصدر نسختك الخاصة.
لكل خطوة من هذه الخطوات الثماني درس خلفها على
reacourse.xyz ، مع الموجّهات الدقيقة، وأنماط الفشل، والأجزاء التي يتوقف فيها هذا النظام عن العمل.
كانت الشيفرة المغلقة تعني سابقًا أنك لن تعرف أبدًا.
الآن تعني: أرني الدليل.
سيستمر معظم الناس في الدفع شهريًا لميزة كان بإمكانهم فهمها في فترة بعد ظهر وإعادة بنائها في عطلة نهاية الأسبوع.
أما القلة الذين يتعلمون قراءة البرمجيات، فسيبنون كل ما يريدون.
تابعني واشترك في قناتي على تيليجرام:





