ایک ڈی کمپائلر جو واپس نکالتا ہے الگورتھم، صرف کوڈ نہیں
اداروں کو اکثر ایسا سافٹ ویئر سمجھنا پڑتا ہے جس کا سورس کوڈ ان کے پاس نہیں: کوئی پرانا نظام، کوئی خریدا ہوا جزو، یا کوئی ایسی چیز جو آئی اور مشکوک لگتی ہے۔ ایسے اوزار پہلے سے موجود ہیں جو مشینی کوڈ کو واپس پڑھے جانے والے مراحل میں بدل دیتے ہیں۔ RetDec Imortek ایک قدم آگے جا کر بتانا چاہتا ہے کہ وہ مراحل ہیں کیا — یہ حصہ خفیہ کاری کا معیار AES ہے، یہ حصہ ترتیب ہے، یہ حصہ بتاتا ہے کہ ڈیٹا بھیجنے کے لیے کیسے باندھا جاتا ہے۔
اپ سٹریم RetDec v5.0 2022 سے غیر فعال ہے۔ یہ اب بھی ان چند کھلے ڈی کمپائلروں میں سے ہے جن کا اگلا سرا واقعی وسیع ہے — اور اس وسعت کو زندہ رکھنا قابلِ قدر ہے۔
یہ کیا ہے، ایک منٹ میں
سافٹ ویئر ایسی شکل میں آتا ہے جو مشین پڑھ لیتی ہے اور انسان نہیں۔ جب سورس کوڈ موجود ہی نہ ہو — فراہم کنندہ جا چکا، معاہدے میں کبھی شامل ہی نہیں تھا، فائل کسی ایسی جگہ سے آئی جس پر بھروسا نہیں — تو کوئی نہیں بتا سکتا کہ پروگرام اصل میں کرتا کیا ہے۔ ہاتھ سے جانچنے کا مطلب ہے مشینی ہدایات ایک ایک کر کے پڑھنا۔
یہ کمپائل شدہ فائل کو کھول کر اس سے C دوبارہ بناتا ہے: آزمائشی مجموعے کی تمام 216 بائنریاں قابلِ تعمیر C کی صورت میں واپس آتی ہیں۔ پھر یہ معنی کے پیچھے جاتا ہے — کون سی خفیہ نگاری، کون سی ترتیب، کون سی تھریڈنگ، کون سی فائل صورت — اور بتاتا ہے کہ یہ کتنی بار کامیاب ہوتا ہے، بشمول اُس صورت کے جہاں بمشکل ہوتا ہے۔
مالویئر کھولنے والی حفاظتی ٹیمیں، جنہیں کوڈ سے پہلے جواب چاہیے۔ وہ کمپنیاں جو ایسا سافٹ ویئر چلا رہی ہیں جس کا سورس کسی کے پاس نہیں، اور جنہیں کچھ بھی محفوظ طریقے سے دوبارہ بنانے یا بدلنے سے پہلے اس کا بیان چاہیے۔ اور ہر وہ شخص جو ایسی فائل صورت میں پھنسا ہے جس کی دستاویز کبھی بنی ہی نہیں — پرانے ریکارڈ، یا وہ مشین جو صرف اپنے ہی سافٹ ویئر سے بات کرتی ہے۔
اصل ڈی کوڈر، WebAssembly میں کمپائل کیا ہوا
اس سے اوپر کی ہر چیز تجرید کی سیڑھی پر ایک لکھی ہوئی سیر ہے۔ یہ پہلا زینہ ہے جو واقعی چل رہا ہے: Capstone — وہی ڈس اسمبلر جو اصل RetDec بلڈ جوڑتا ہے — آپ کے چسپاں کیے ہوئے بائٹس ڈی کوڈ کرتا ہوا۔
capstone — WebAssembly
791 کلوبائٹ (KB) اس لیے کہ ایک اصل 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 سیوڈو کوڈ، اور آخر میں معنوی فیصلہ — بانام الگورتھم، ساتھ وہ شہادت جس نے اسے پہچانا۔
retdec — تفصیل نامے کی کشید
معنوی فیصلہ
شہادت
علامتیں ہٹا دی جائیں تو بازیابی کو صرف ساخت سے کام چلانا پڑتا ہے — مستقل قدریں، راؤنڈ کی گنتی، کنٹرول فلو کی شکل۔ یہی مشکل صورت ہے، اور ناپا ہوا 0.056 کا F1 اسی کا ہے۔
ساخت کے چھ خاندان
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، طے شدہ طور پر چالو |
| الگورتھم بازیابی کا F1 | 0.056 | بلا نام، 95% اعتماد کا وقفہ 0.034–0.083 |
| الگورتھم بازیابی کا F1 | 1.000 | بانام، علامتوں والی بائنریاں |
طے شدہ .c دوبارہ کمپائل ہوتی ہے | نہیں | نہ یہ فورک، نہ اصل RetDec |
اختیاری، آف لائن، اور پہرے میں
تطہیر 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
جب سورس کوڈ نہ رہے تو بتاتا ہے کہ پروگرام کرتا کیا ہے
سافٹ ویئر ایسی شکل میں آتا ہے جسے مشین پڑھ سکتی ہے اور انسان نہیں۔ یہ اسے واپس کھول کر سیدھے لفظوں میں بتاتا ہے کہ پروگرام دراصل کر کیا رہا ہے۔
مالویئر کھولنے والی حفاظتی ٹیمیں
ناقابلِ مطالعہ کوڈ کے صفحوں کے بجائے آپ کو جواب ملتا ہے: یہ حصہ ڈیٹا گڈمڈ کر رہا ہے، یہ حصہ گھر فون کرنے کا طریقہ ہے، یہ حصہ چھپنے کا۔ تجزیہ کار کو سب سے پہلے یہی چاہیے۔
پرانے سافٹ ویئر والی کمپنیاں جن کے پاس سورس کوڈ نہیں
نظام آج بھی کاروبار چلا رہا ہے، اور جس نے اسے لکھا تھا وہ برسوں پہلے جا چکا۔ یہ اس کے کام کی تفصیل واپس نکال لاتا ہے، اور اسی کی ضرورت ہوتی ہے اس سے پہلے کہ کوئی اسے محفوظ طریقے سے دوبارہ بنا سکے یا بدل سکے۔
ہر وہ شخص جو کسی ایسی فائل صورت میں پھنسا ہو جس کی دستاویز کسی نے نہیں لکھی
پرانے ریکارڈ، ایک مشین جو صرف اپنے ہی سافٹ ویئر سے بات کرتی ہے، کسی حریف کی برآمد کردہ فائل۔ یہ اس کی ساخت نکال لیتا ہے تاکہ آپ کا اپنا سافٹ ویئر اسے پڑھ سکے۔
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 کے پھاٹک پیداواری پختگی کے معیار کے بجائے ترقی کی حالت ظاہر کرتے ہیں — یہ منصوبے کا اپنا بیان ہے، کوئی نتیجہ اخذ نہیں کیا گیا۔