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 کے IR تک اٹھانا، کنٹرول فلو کو ترتیب دینا، الگورتھم کا نام بتانا — LLVM کا کام ہیں، اور LLVM کسی بھی حجم میں کسی ویب صفحے میں نہیں سماتا۔ اس کے برعکس کہنا اس سائٹ کا سب سے آسان جھوٹ ہوتا۔
Capstone 5، Emscripten سے بنایا گیا، صرف x86۔ اصل بلڈ وہی لائبریری یہاں سے جوڑتا ہے: deps/capstone.
اگلا سرا

نیٹو، بائٹ کوڈ اور ابھرتی ہوئی صورتیں

پیداوار صورت پر منحصر ہے، کیونکہ یہ بہانہ کہ ہر چیز C میں ڈی کمپائل ہو جاتی ہے، کسی کے کام نہیں آتا۔ فرنٹ اینڈ یہ لیتا ہے: Executable and Linkable Format (ELF)، Portable Executable (PE) اور Mach-O میں نیٹو بائنریاں؛ بائٹ کوڈ، بشمول Java Virtual Machine (JVM) کی کلاس فائلیں، Dalvik Executable (DEX) اور Common Intermediate Language (CIL)؛ اور نئے اہداف جیسے CUDA کی Parallel Thread Execution (PTX)۔

نیٹو

ELF · PE · Mach-O

C سیوڈو کوڈ دیتا ہے، ساتھ وہ معنوی تہہ جو اس فورک کا اصل مقصد ہے۔

بائٹ کوڈ

Python · Lua · JVM · DEX · CIL

Python اور Lua بائٹ کوڈ اپنی ہی زبانیں واپس دیتے ہیں؛ منظم کوڈ کی راہیں Java خاندان یا C# خاندان کی پیداوار دیتی ہیں۔

ابھرتی ہوئی

WebAssembly · CUDA PTX

WebAssembly، WebAssembly Text format (WAT) میں بدل جاتا ہے۔ PTX کو بعد کی سوچ کے بجائے پہلے درجے کی ان پٹ مانا جاتا ہے۔

تعامل پذیر

ایک فنکشن کو تجرید کی سیڑھی چڑھتے دیکھیں

کوئی بائنری فنکشن چنیں اور اسے پائپ لائن سے قدم بہ قدم گزاریں: خام بائٹس، ڈس اسمبلی، اٹھایا ہوا IR، C سیوڈو کوڈ، اور آخر میں معنوی فیصلہ — بانام الگورتھم، ساتھ وہ شہادت جس نے اسے پہچانا۔

تجرید کے پانچ زینے: خام بائٹس، ڈس اسمبلی، اٹھایا ہوا IR، C سیوڈو کوڈ، اور بانام الگورتھم اپنے تفصیل نامے کے حوالے کے ساتھ
پورا خاکہ دیکھنے کے لیے اسکرول کریں →
آخری زینہ ہی اصل مصنوعہ ہے۔ اس سے اوپر کی ہر چیز وہی ہے جو دوسرے ڈی کمپائلر پہلے ہی دے دیتے ہیں۔

retdec — تفصیل نامے کی کشید


          

معنوی فیصلہ

ابھی بازیاب نہیں ہوا
معنوی مرحلے تک قدم بہ قدم جائیں۔

شہادت

اعتماد
—
طرز
بے نام

علامتیں ہٹا دی جائیں تو بازیابی کو صرف ساخت سے کام چلانا پڑتا ہے — مستقل قدریں، راؤنڈ کی گنتی، کنٹرول فلو کی شکل۔ یہی مشکل صورت ہے، اور ناپا ہوا 0.056 کا F1 اسی کا ہے۔

بازیابی کے اصل مراحل کی ایک لکھی ہوئی سیر، اسی صفحے کے لیے بنائی گئی۔ ڈی کمپائلر خود C++ میں ہے اور آف لائن چلتا ہے۔
یہ کیا واپس نکالتا ہے

ساخت کے چھ خاندان

رن ٹائم

Standard Template Library (STL) کے کنٹینر اور C++ رن ٹائم ڈھانچے — ایک std::vector کی شکل، جو مختص کرنے کے نمونے سے دوبارہ ابھر آتی ہے۔

خفیہ نگاری

AES، Secure Hash Algorithm (SHA) خاندان، ChaCha20، Rivest–Shamir–Adleman (RSA) اور بیضوی خم کے بنیادی اجزا، جو مستقل اقدار اور راؤنڈ ساخت سے پہچانے جاتے ہیں۔

ترتیب اور تلاش

Introsort، merge sort، binary search — بشمول وہ گہرائی کی حد والا موڑ جو introsort کو پکڑوا دیتا ہے۔

گراف

گراف الگورتھم، اور ساتھ BFS اور DFS کے گشت کے نمونے۔

ہم وقتی

std::thread، pthreads، OpenMP، Threading Building Blocks (TBB) اور خام ایٹمکس۔

سیریلائزیشن

Protobuf، FlatBuffers، MessagePack، JavaScript Object Notation (JSON) اور Extensible Markup Language (XML) کی فریمنگ۔

ناپا ہوا

216 بائنریاں، اور وہ عدد جو تکلیف دیتا ہے

آزمائشی مجموعے کی تمام 216 ELF بائنریاں قابلِ تعمیر C دیتی ہیں، اگر --buildableدیا جائے، جو طے شدہ طور پر چالو ہے۔ الگورتھم کی بازیابی الگ کہانی ہے، اور اسے ایمان داری سے بتانے کا طریقہ یہی ہے کہ دونوں اعداد ساتھ ساتھ رکھے جائیں۔

پیمانہنتیجہشرط
قابلِ تعمیر C پیداوار216 / 216--buildable، طے شدہ طور پر چالو
الگورتھم بازیابی کا F10.056بلا نام، 95% اعتماد کا وقفہ 0.034–0.083
الگورتھم بازیابی کا F11.000بانام، علامتوں والی بائنریاں
طے شدہ .c دوبارہ کمپائل ہوتی ہےنہیںنہ یہ فورک، نہ اصل RetDec
ان دونوں F1 اعداد کو ساتھ ساتھ پڑھیں۔ علامتوں کے ساتھ 1.000 کا مطلب ہے کہ شناخت کرنے والا علامتی جدول سے متفق ہے۔ ان کے بغیر 0.056 کا مطلب ہے کہ علامتیں ہٹی ہوئی بائنریوں پر ساختی بازیابی آج اندازے کے قریب ہے۔ صرف پہلا عدد بتانا تشہیر ہوتی؛ صرف دوسرا بتانا اس بات کو چھپاتا کہ جب پائپ لائن کو کوئی سہارا ملے تو وہ کام کرتی ہے۔
نیورل تطہیر

اختیاری، آف لائن، اور پہرے میں

تطہیر llama.cpp کے ذریعے GGUF ماڈلوں کے ساتھ چلتی ہے، مکمل طور پر آف لائن، اور صرف تب جب RETDEC_NEURAL_REFINE=1 ہو اور ماڈل کا راستہ دیا گیا ہو۔ یہ طے شدہ طور پر بند ہے اور کبھی بنیادی پیداوار کی جگہ نہیں لیتی۔

  • کمپائل کا پھاٹک۔ تطہیر شدہ پیداوار کو قبول ہونے سے پہلے gcc -fsyntax-only سے گزرنا ہوگا۔
  • ساختی توثیق۔ تطہیر کو اب بھی اٹھائی ہوئی ساخت سے مطابقت رکھنی ہوگی۔
  • یقینی بنیاد محفوظ رہتی ہے۔ بغیر تطہیر والی ڈی کمپائلر پیداوار ہی قابلِ جانچ دستاویز رہتی ہے۔ اگر آپ کو کسی نتیجے کا دفاع کرنا ہو تو آپ اسی کا دفاع کرتے ہیں۔
  • کوئی نیٹ ورک نہیں۔ مقامی GGUF inference۔ آپ کی بائنری کے بارے میں کچھ بھی مشین سے باہر نہیں جاتا۔
$ export RETDEC_NEURAL_REFINE=1
$ export RETDEC_NEURAL_MODEL=/models/qwen-coder.gguf
$ retdec-decompiler --buildable ./target.elf
یہ کس کے لیے ہے

جب سورس کوڈ نہ رہے تو بتاتا ہے کہ پروگرام کرتا کیا ہے

سافٹ ویئر ایسی شکل میں آتا ہے جسے مشین پڑھ سکتی ہے اور انسان نہیں۔ یہ اسے واپس کھول کر سیدھے لفظوں میں بتاتا ہے کہ پروگرام دراصل کر کیا رہا ہے۔

01

مالویئر کھولنے والی حفاظتی ٹیمیں

ناقابلِ مطالعہ کوڈ کے صفحوں کے بجائے آپ کو جواب ملتا ہے: یہ حصہ ڈیٹا گڈمڈ کر رہا ہے، یہ حصہ گھر فون کرنے کا طریقہ ہے، یہ حصہ چھپنے کا۔ تجزیہ کار کو سب سے پہلے یہی چاہیے۔

02

پرانے سافٹ ویئر والی کمپنیاں جن کے پاس سورس کوڈ نہیں

نظام آج بھی کاروبار چلا رہا ہے، اور جس نے اسے لکھا تھا وہ برسوں پہلے جا چکا۔ یہ اس کے کام کی تفصیل واپس نکال لاتا ہے، اور اسی کی ضرورت ہوتی ہے اس سے پہلے کہ کوئی اسے محفوظ طریقے سے دوبارہ بنا سکے یا بدل سکے۔

03

ہر وہ شخص جو کسی ایسی فائل صورت میں پھنسا ہو جس کی دستاویز کسی نے نہیں لکھی

پرانے ریکارڈ، ایک مشین جو صرف اپنے ہی سافٹ ویئر سے بات کرتی ہے، کسی حریف کی برآمد کردہ فائل۔ یہ اس کی ساخت نکال لیتا ہے تاکہ آپ کا اپنا سافٹ ویئر اسے پڑھ سکے۔

کیا آپ کو یہاں اپنی صورتِ حال نظر آتی ہے؟ یہ ابھی بیٹا ٹیسٹنگ کے لیے کھلا ہے، اور جن لوگوں کے لیے یہ بنا ہے، انہی کی رائے اسے واقعی بدلتی ہے۔ بیٹا ٹیسٹر بنیں →
انٹرفیس

Qt 6 GUI، یا بالکل کوئی GUI نہیں

C، اسمبلی، IR اور کنٹرول فلو گراف کے درمیان ہم آہنگ کوڈ نظارے، ساتھ فنکشن کی نیویگیشن، اسٹرنگ کی جانچ، بائنری براؤزر اور ایک معاون پینل۔ ہیڈ لیس موڈ ہر GUI انحصار گرا دیتا ہے، تاکہ وہی بلڈ CI میں بھی چلے۔

دوہرا لائسنس

اوپن سورس استعمال کے لیے GNU Affero General Public License (AGPL-3.0+)، یا ملکیتی تنصیب کے لیے تجارتی لائسنس۔ حقوقِ اشاعت Odin Loch، کاروباری نام Imortek، 2025–2026۔

v2.0.21 پر بھیجنے کے قابل۔ CI کے پھاٹک پیداواری پختگی کے معیار کے بجائے ترقی کی حالت ظاہر کرتے ہیں — یہ منصوبے کا اپنا بیان ہے، کوئی نتیجہ اخذ نہیں کیا گیا۔