(به : )ها برنامه‌هایی هستند که کدهای اجرایی (فایل با پسوند هایی مانند exe) را به عنوان وردودی دریافت می‌کنند و آن را به سورس‌کد برنامه تبدیل می‌کنند، به‌طوری که این کد قابلیت کامپایل شدن را داشته‌باشد. عملکرد دیکامپایلرها دقیقاً برعکس کامپایلرها می‌باشد. کامپالرها سورس‌کد را به فایل اجرایی تبدیل می‌کنند ولی دیکامپایلرها برعکس.
 به طور کلی کامپایلرها قادر به بازگرداندن یک فایل اجرایی به سورس کد آن به شکل دقیق و بی‌نقص نیستند و در اکثر مواقع کدهایی مبهم( ) می‌سازند. با این حال دیکامپایلرها هنوز ابزاری بسیار مهم در به شمار می‌روند.
 دیکامپایلر(مترجم‌وارون) معمولاً کد اجرایی را به در ترجمه می‌کند به طوری که اگر کد جدید دوباره گشت در اجرا مانند کد اجرایی اصلی عمل کند.
 از دیکامپایلر برای مباحث امنیت کامپیوتر ، تصحیح خطاها و... استفاده می شود.
زبان های کامپایلری مفسری که از کد میانی و استفاده می کنند معمولاً به صورت کامل قابل برگشت هستند ، یعنی حتی شماره ی خطوط و نام متغییرهای کد اصلی هم قابل برگشت است.از این دست زبان‌ها می توان به جاوا و .net اشاره کرد. به عنوان مثال دیکامپایلر jd-gui برای جاوا وجود دارد که کد را به صورت کامل برمی گرداند.
برای جلوگیری از دیکامپایل برنامه ها ابزاری با عنوان مبهم کننده ی کد( obfuscated code) وجود دارد که عملیات مهندسی معکوس را مشکل تر می کند.
 دیکامپایلرها در پروسه تبدیل یک فایل اجرایی به سورس کد فاز های مختلفی را طی میکنند که در ادامه فازهای مختلف آن را بررسی میکنیم.
 اولین فاز در دیکامپایل عمل بارگزاری و تجزیه کد ورودی که به است را انجام میدهد. این مرحله باید قسمت های مختلفی را مشخص کند. از جمله معماری و همچنین کد معادل تابع main در زبان c که در واقع شروع کدیست که توسط ها نوشته شده است.
 
فاز منطقی بعدی در عملیات دیکامپایل کردن عبارت است از جداسازی قطعات(disassembling) کد ماشین و تبدیل آن به یک کد machine independent intermediate representation (IR) به طور مثال دستورالعمل ماشین پنتیوم را در قسمت زیر مشاهده میکنید. به کد زیر ترجمه خواهد شد.
 
 
بعد از این مراحل به ترتیب idioms, program analyses, dataflow analyses, type analyses, structuring و در نهایت code generation ‌انجام میشود که توضیحات کامل تر آن ها را به همراه مثال میتوانید در لینک مربوط به مقاله اصلی مشاهده نمایید.
 
 دیکامپایلر ها معمولا یک فرمت به خصوص از باینری ها را مورد هدف قرار میدهند. برخی مانند Intel x86, ARM, MIPS از دستورالعمل های معمولی استفاده میکنند و برخی دیگر نیز بایت کدهایی مانند(Dalvik, Java class files, WebAssembly, Ethereum) مخصوص به ماشین های مجازی میباشد. 
 
اخیرا برنامه گیدرا(ghidra) نیز توسط سازمان اطلاعات آمریکا به شکل open-source در آمده و یک ابزار بسیار قدرتمند و پیشرفته محسوب میشود.
{"title": "دی‌کامپایلر", "link": "https://fa.wikipedia.org//w/index.php?title=%D8%AF%DB%8C%E2%80%8C%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%B1&oldid=34466688", "language": "fa"}