RetDec Imortek · v2.0.21

مُفكِّك برمجيات يستعيد الخوارزمية، لا الشيفرة وحدها

كثيرًا ما تحتاج المؤسسات إلى فهم برمجيات لا تملك شيفرتها المصدرية: نظام قديم، أو مكوّن مُشترى، أو ملف وصل ويبدو مريبًا. توجد أدوات بالفعل تعيد شيفرة الآلة إلى خطوات مقروءة. ويحاول RetDec Imortek خطوة أبعد: أن يسمّي ما هذه الخطوات — هذا الجزء معيار التعمية المتقدّم (AES)، وهذا الجزء فرز، وهذا الجزء كيفية حزم البيانات للإرسال.

اللغةC++
النسخةv2.0.21
المنبعRetDec v5.0
النجوم2
آخر دفعةمؤخرًا
لماذا تفريع RetDec

المشروع المنبع RetDec v5.0 خامل منذ 2022. ويظل واحدًا من المفكِّكات المفتوحة القليلة ذات واجهة أمامية عريضة فعلًا — وهذا الاتساع يستحق أن يبقى حيًّا.

المُضافاستعادة المكتبات دلاليًّا
المُضافواجهة Qt 6
المُضافتنقيح عصبي اختياري دون اتصال
المُضافكشف الخوارزميات والتزامن & التسلسل
بلغة بسيطة

ما هذا، في دقيقة واحدة

المشكلة

تُشحن البرمجيات في صورة تقرأها الآلة ولا يقرأها الإنسان. وحين لا توجد شيفرة مصدرية — اختفى المورّد، أو لم يشملها العقد يومًا، أو وصل الملف من جهة لا تثق بها — لا يستطيع أحد أن يقول ما يفعله البرنامج فعلًا. وفحصه يدويًّا يعني قراءة تعليمات الآلة واحدة تلو الأخرى.

الحل

يفكّك الملف المُصرَّف ويعيد بناء شيفرة C منه: كل الملفات الثنائية الـ216 في مجموعة الاختبار تعود شيفرة C قابلة للبناء. ثم يطارد المعنى — أي تعمية، وأي فرز، وأي تعدّد خيوط، وأي صيغة ملف — ويبلّغ عن نسبة نجاح ذلك، بما في ذلك الحالة التي يكاد فيها لا ينجح.

لمن هو

فرق الأمن التي تفكّك البرمجيات الخبيثة وتحتاج إلى الجواب قبل أن تحتاج إلى الشيفرة. والشركات التي تشغّل برمجيات لا يملك أحد مصدرها وتحتاج إلى وصف لها قبل أن يُعاد بناء أي شيء أو استبداله بأمان. وكل من علِق بصيغة ملف لم تُوثَّق قط — سجلات قديمة، أو آلة لا تكلّم إلا برمجيتها الخاصة.

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

فاكّ الترميز الفعلي، مُترجَمًا إلى WebAssembly

كل ما فوق هذا جولة مكتوبة سلفًا في سلّم التجريد. وهذه هي الدرجة الأولى تعمل حقيقةً: Capstone — مُفكِّك التجميع نفسه الذي يربطه بناء RetDec الأصلي — يفكّ ترميز بايتات تلصقها أنت.

capstone — WebAssembly

‏791 كيلوبايت (KB) لأن فاكّ ترميز x86 الحقيقي يحمل مجموعة التعليمات كاملة — كل ترميز وبادئة وامتداد. هذا هو الحجم الصادق للشيء.

فاكّ الترميز
—
التعليمات
—
هذا فاكّ الترميز، لا المُفكِّك. الدرجات الأعلى — الرفع إلى التمثيل الوسيط لـLLVM، وهيكلة تدفّق التحكّم، وتسمية الخوارزمية — هي عمل LLVM، وLLVM لا تتّسع له صفحة وِب بأي حجم. والقول بغير ذلك أسهل كذبة في هذا الموقع.
Capstone 5، مبني بـEmscripten، لمعمارية x86 فقط. والبناء الأصلي يربط المكتبة نفسها من deps/capstone.
الواجهة الأمامية

صيغ أصلية وشيفرة بايت وصيغ ناشئة

المخرَج يعتمد على الصيغة، لأن ادّعاء أن كل شيء يُفكَّك إلى C لا يفيد أحدًا. تتلقّى الواجهة الأمامية ملفات ثنائية أصلية بصيغة التنفيذ والربط (ELF)، والتنفيذي المحمول (PE)، وMach-O؛ وشيفرة بايت، منها ملفات أصناف آلة جافا الافتراضية (JVM)، وتنفيذي دالفيك (DEX)، واللغة الوسيطة المشتركة (CIL)؛ وأهدافًا أحدث مثل تنفيذ الخيوط المتوازي (PTX) من CUDA.

أصلي

ELF · PE · Mach-O

ينتج شيفرة C وهمية، إضافة إلى الطبقة الدلالية التي هي سبب التفريع.

شيفرة البايت

Python · Lua · JVM · DEX · CIL

شيفرة بايت Python وLua تعود بلغتيهما؛ ومسارات الشيفرة المُدارة تُخرِج ناتجًا من عائلة Java أو عائلة C#.

ناشئ

WebAssembly · CUDA PTX

يتحوّل WebAssembly إلى صيغة WebAssembly النصية (WAT). ويُعامَل PTX مُدخَلًا من الدرجة الأولى لا فكرةً لاحقة.

تفاعلي

شاهد دالّة تصعد سلّم التجريد

اختر دالّة ثنائية ومرّرها خطوة خطوة في الخط: بايتات خام، ثم فكّ تجميع، ثم تمثيل وسيط مرفوع، ثم شيفرة C وهمية، وأخيرًا الحكم الدلالي — الخوارزمية باسمها، مع الدليل الذي حدّدها.

خمس درجات من التجريد: بايتات خام، وفكّ تجميع، وتمثيل وسيط مرفوع، وشيفرة C وهمية، والخوارزمية باسمها مع مرجع مواصفتها
مرّر لرؤية المخطّط كاملًا →
الدرجة الأخيرة هي المنتج. وكل ما فوقها هو ما تعطيه لك المفكِّكات الأخرى أصلًا.

retdec — استخراج المواصفة


          

الحكم الدلالي

لم تُستعَد بعد
تقدّم بالخطوات حتى المرحلة الدلالية.

الدليل

الثقة
—
الوضع
أعمى عن الأسماء

مع تجريد الرموز، على الاستعادة أن تعمل من البنية وحدها — الثوابت، وعدد الجولات، وشكل تدفّق التحكّم. هذه هي الحالة الصعبة، وهي التي يشير إليها مقياس F1 المقيس البالغ 0.056.

جولة مكتوبة سلفًا في مراحل استعادة حقيقية، كُتبت لهذه الصفحة. أما المُفكِّك نفسه فمكتوب بـC++ ويعمل دون اتصال.
ما الذي يستعيده

ست عائلات من البِنى

بيئة التشغيل

حاويات مكتبة القوالب القياسية (STL) وبنى زمن تشغيل C++ — شكل std::vector يعاود الظهور من نمط الحجز.

التعمية

‏AES، وعائلة خوارزمية التجزئة الآمنة (SHA)، وChaCha20، وريفست–شامير–أدلمان (RSA)، وأوليّات المنحنيات الإهليلجية، تُعرَّف بالثوابت وبنية الجولات.

الفرز & البحث

introsort، والفرز بالدمج، والبحث الثنائي — بما في ذلك تبديل حدّ العمق الذي يفضح introsort.

الرسوم البيانية

خوارزميات الرسوم، إضافة إلى أنماط الاجتياز بالبحث بالعرض أولًا (BFS) والبحث بالعمق أولًا (DFS).

التزامن

std::thread، وpthreads، وOpenMP، وThreading Building Blocks (TBB)، والذرّيات الخام.

التسلسل

‏Protobuf، وFlatBuffers، وMessagePack، وترميز كائنات جافاسكربت (JSON)، وتأطير لغة الترميز الموسّعة (XML).

مقيس

216 ملفًّا ثنائيًّا، والرقم المؤلم

كل الملفات الثنائية ELF الـ216 في مجموعة الاختبار تنتج شيفرة C قابلة للبناء مع --buildable، وهو مفعَّل افتراضيًّا. أما استعادة الخوارزميات فقصة أخرى، والطريقة الصادقة للإبلاغ عنها هي وضع الرقمين جنبًا إلى جنب.

المقياسالنتيجةالشرط
مخرَج C قابل للبناء216 / 216--buildable، مفعَّل افتراضيًّا
F1 لاستعادة الخوارزميات0.056بلا مساعدة الأسماء، فاصل ثقة 95% يبلغ 0.034–0.083
F1 لاستعادة الخوارزميات1.000بمساعدة الأسماء، ملفات ثنائية ذات رموز
إعادة ترجمة ملف .c الافتراضيلالا هذا التفريع ولا RetDec الأصلي
اقرأ رقمَي F1 معًا. 1.000 مع الرموز يعني أن الكاشف يتفق مع جدول الرموز. و0.056 بدونها يعني أن الاستعادة البنيوية على ملفات مجرَّدة من الرموز قريبة اليوم من التخمين. وذكر الأول وحده تسويق؛ وذكر الثاني وحده يخفي أن الخط يعمل حين يجد ما يستند إليه.
تنقيح عصبي

اختياري، دون اتصال، وخلف بوابة

يجري التنقيح عبر llama.cpp بنماذج GGUF، دون اتصال تمامًا، فقط حين يكون RETDEC_NEURAL_REFINE=1 ويُعطى مسار نموذج. وهو مُطفأ افتراضيًّا ولا يحلّ محلّ الخط الأساس أبدًا.

  • بوابة ترجمة. على المخرَج المنقَّح أن يجتاز gcc -fsyntax-only قبل أن يُقبل.
  • تحقّق بنيوي. يجب أن يظل التنقيح مطابقًا للبنية المرفوعة.
  • الخط الأساس الحتمي محفوظ. يبقى مخرَج المُفكِّك غير المنقَّح هو الأثر القابل للتدقيق. وإن احتجت إلى الدفاع عن نتيجة، فعنه تدافع.
  • لا شبكة. استدلال GGUF محلي. لا يغادر الجهازَ أي شيء عن ملفك الثنائي.
$ export RETDEC_NEURAL_REFINE=1
$ export RETDEC_NEURAL_MODEL=/models/qwen-coder.gguf
$ retdec-decompiler --buildable ./target.elf
لمن هو

يكتشف ما يفعله البرنامج حين تختفي الشيفرة المصدرية

تُشحَن البرمجيات في صورة تقرؤها الآلة ولا يقرؤها الإنسان. وهذا يفكّكها مجدّدًا ويخبرك، بكلام واضح، بما يفعله البرنامج فعلًا.

01

فرق الأمن التي تفكّك البرمجيات الخبيثة

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

02

شركات لديها برمجيات قديمة بلا شيفرة مصدرية

النظام ما زال يدير العمل، ومن كتبه رحل منذ سنوات. وهذا يستعيد وصفًا لما يفعله، وهو ما تحتاجه قبل أن يستطيع أحد إعادة بنائه أو استبداله بأمان.

03

كل من علق مع صيغة ملف لم يوثّقها أحد

سجلات قديمة، أو آلة لا تكلّم إلا برمجياتها، أو ملف تصدير من منافس. وهذا يستنتج البنية كي تستطيع برمجياتك أنت قراءته.

هل ترى حالتك هنا؟ هذا مفتوح للاختبار التجريبي الآن، ومن بُني لأجلهم هم من تغيّره ملاحظاتهم فعلًا. كن مختبِرًا تجريبيًّا →
الواجهة

واجهة Qt 6 الرسومية، أو بلا واجهة رسومية إطلاقًا

عروض شيفرة متزامنة عبر C والتجميع والتمثيل الوسيط ورسوم تدفّق التحكّم، مع تنقّل بين الدوال، وفحص للسلاسل، ومتصفّح للملف الثنائي، ولوحة مساعد. ويُسقط الوضع بلا رأس كل اعتمادية للواجهة الرسومية، فيعمل البناء نفسه في التكامل المستمر.

ترخيص مزدوج

رخصة جنو أفيرو العمومية العامة (AGPL-3.0+) للاستخدام مفتوح المصدر، أو ترخيص تجاري للنشر الاحتكاري. حقوق النشر Odin Loch، متاجرًا باسم Imortek، 2025–2026.

قابل للشحن عند v2.0.21. وبوابات التكامل المستمر تعكس معايير التطوير لا معايير نضج الإنتاج — هذا ما يقوله المشروع نفسه، لا استنتاجًا.