Դեկոմպիլյատոր

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Jump to navigation Jump to search

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

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

Դեկոմպիլյացիան մասնավորապես օգտագործում են ծրագրի հակառակ մշակաման(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-ի համար

Հղումներ[խմբագրել | խմբագրել կոդը]