Դեկոմպիլյատորը ծրագիր է, որը տրանսլյացվում է կատարվող մոդուլը ՝ (կոմպիլյացիայի ելքում ստացված ) սկզբանկան կոդը բարձր մակարդակի ծրագրավորման լեզվի։

Դեկոմպիլյացիան, պրոցեսս է որը դեկոմպիլյատորով վերստեղծումն է սկզբնական կոդը։

Դեկոմպիլյացիան մասնավորապես օգտագործում են ծրագրի հակառակ մշակաման(Reverse engineering) դեպքում։

Դեկոմպիլյացիայի «հաջողությունը» կախված է ներկայացված կոդի ինֆորմացիայի ծավալից։ Բայթկոդը,որը օգտագործվում է վիրտուալ մեքենաների մեծամասնության կողմից (օր.`Java Virtual Machine կամ .NET Framework Common Language Runtime) հաճախ պարունակում են լայն մետատվյալներ, մինչդեռ մեքենայական կոդը ավելի բարդ է դեկոմպիլացվում։ Հիմնականում դժվար կարդացվող են համարվում այն կանչերը, որոնք կատարվում են ենթածրագրից կամ անուղղակի հասցեավորմամբ ( բարձր մակարդակի ծրագրավորման լեզուներում ֆունկցիայի կամ պրոցեդուրաների ցուչիրներ)։

Եթե հայտնի է, թե որ լեզվով է գրված եղել դեկոմպիլացվող ծրագիրը, ապա առաջին հերթին հետազոտվում է Run-time գրադարանը, քանի որ հիմնականում ծրագրի կոմպիլյացիան այդ գրադարանում պրոցեդուրաների կանչերի հետ է կապվում։ Բացի դրանից շատ կոմպիլյատորներ թույլ են տալիս տեսնել, թե ինչ ասսեմբլերական կոդի են վերածվում ծրագրի օպերատորները կոմպիլյացիայից հետո։ Ամենահեշտը տարբերվում են պրոցեդուրաների կանչերը և նրանցից վերադարձը։

Որոշ կոմպիլյատորներ և կոմպիլյացիայից հետո օգտագործվող գործիքներ ծրագրային կոդը ենթարկում են օբֆուսկացիայի ` դեկոմպիլյացիան դժվարացնելու համար։

Դեկոմպիլյատորների օրինակներ խմբագրել