Դեկոմպիլյատոր
Դեկոմպիլյատորը ծրագիր է, որը տրանսլյացվում է կատարվող մոդուլը ՝ (կոմպիլյացիայի ելքում ստացված ) սկզբանկան կոդը բարձր մակարդակի ծրագրավորման լեզվի։
Դեկոմպիլյացիան, պրոցեսս է որը դեկոմպիլյատորով վերստեղծումն է սկզբնական կոդը։
Դեկոմպիլյացիան մասնավորապես օգտագործում են ծրագրի հակառակ մշակաման(Reverse engineering) դեպքում։
Դեկոմպիլյացիայի «հաջողությունը» կախված է ներկայացված կոդի ինֆորմացիայի ծավալից։ Բայթկոդը,որը օգտագործվում է վիրտուալ մեքենաների մեծամասնության կողմից (օր.`Java Virtual Machine կամ .NET Framework Common Language Runtime) հաճախ պարունակում են լայն մետատվյալներ, մինչդեռ մեքենայական կոդը ավելի բարդ է դեկոմպիլացվում։ Հիմնականում դժվար կարդացվող են համարվում այն կանչերը, որոնք կատարվում են ենթածրագրից կամ անուղղակի հասցեավորմամբ ( բարձր մակարդակի ծրագրավորման լեզուներում ֆունկցիայի կամ պրոցեդուրաների ցուչիրներ)։
Եթե հայտնի է, թե որ լեզվով է գրված եղել դեկոմպիլացվող ծրագիրը, ապա առաջին հերթին հետազոտվում է Run-time գրադարանը, քանի որ հիմնականում ծրագրի կոմպիլյացիան այդ գրադարանում պրոցեդուրաների կանչերի հետ է կապվում։ Բացի դրանից շատ կոմպիլյատորներ թույլ են տալիս տեսնել, թե ինչ ասսեմբլերական կոդի են վերածվում ծրագրի օպերատորները կոմպիլյացիայից հետո։ Ամենահեշտը տարբերվում են պրոցեդուրաների կանչերը և նրանցից վերադարձը։
Որոշ կոմպիլյատորներ և կոմպիլյացիայից հետո օգտագործվող գործիքներ ծրագրային կոդը ենթարկում են օբֆուսկացիայի ` դեկոմպիլյացիան դժվարացնելու համար։
Դեկոմպիլյատորների օրինակներ[խմբագրել | խմբագրել կոդը]
- FernFlower
- .NET Reflector, dotPeek — .NET հավաքների կոմպիլյացիայի համար
- ILSpy
- Delphi Decompiler
- JAD — JAva Decompiler
- VB Decompiler — Visual Basic 6.0-ի համար
Հղումներ[խմբագրել | խմբագրել կոդը]
- Basics of Compiler Design
- Language Implementation Patterns Archived 2016-03-05 at the Wayback Machine.