Decompiler Design – Hyrje

Origjinal: Decompiler Design – Introduction

Hyrje

Decompilation është një formë e kundërt inxhinieri e programeve kompjuterike. Qëllimi i saj është për të kthyer një përpiluar binary file në një burim file. Një mund të dëshironi të bëni këtë për disa arsye, si për të kuptuar se si punon programi, ose të përpiqet për të ndryshuar një program për të rritur atë, ose fix a bug.

Decompilation ka qenë rreth e rrotull për shumë vite, ndoshta ndonjëherë që njerëzit filluan të përpilojnë programe nga niveli i lartë i gjuhëve për të ulur nivelin e formate të tilla si kuvendi dhe makinë kodi.

Disa përpjekje janë zhvilluar në shkrim binare ekzekutueshme decompilers. Kjo faqe ka disa shembuj.

Ka edhe më shumë decompilers në dispozicion për të arritur në mjediseqë të përdorni byte-kodin, si Java dhe C#. Një listë të gjatë është në dispozicion në të programit të transformimit wiki.

Në këto faqe do të përqëndrohet në decompilation e binare të ekzekutueshëm, ose nga makinë kod në kodin burim, ngaqë kjo është shumë më vështirë se decompiling Java byte-kodin ose C#.

Disa gjuhë dhe përpilues mund të prodhojë makina të kodit, duke përfshirë edhe disa Java, C# dhe Visual Basic një përpilues. Prandaj decompiler do të keni për të ditur se cila gjuhë është përdorur për të hartuar programi, dhe do të duhet të ketë mbështetje për të gjeneruar atë gjuhë. Megjithatë, shumica e probleme të vështira në decompilation të shfaqet kur duke përdorur më pak kufizuese gjuhëve, gjegjësisht C, Pascal ose C++.

Shumica e algoritmeve mund të përdoret për të gjitha gjuhët, kështu që ne do të përdorin më së shumti shembujve të shkruar në C. Kur tregojmë një algoritëm, ne do të përdorim C ose C++, pasi këto janë më në dispozicion gjuhët në të dy Linux dhe Windows.

Pa marrë parasysh gjuhën e caktuar, një decompiler më së shumti ka të bëjë me 3 llojet e entiteteve:

  • Kodi i objekteve (funksionet, deklaratat)
  • Të dhënat e objekteve (globale dhe lokale variablave)
  • Tipet (llojet e ndryshueshme, funksioni prototipa)

Të vazhdueshëm problemin e një decompiler është që të përpiqen për të konkludoj një ose më shumë prej tre subjekteve të mësipërme nga një sekuencë të bytes gjetur në binary file. Në mënyrë që të bësh këtë, është e dobishme të dinë se si të zhvillimit të mjeteve të pasi që është proces ne jemi duke u përpjekur që të kthehet.

Leave a Reply

Your email address will not be published. Required fields are marked *