Dekompileer Disain

Algselt http://www.backerstreet.com/decompiler/introduction.htm

Sissejuhatus

Dekompileerimist on kujul reverse masinaehitus arvutiprogrammide. Selle eesmärk on muuta kompileeritud binaar faili source file. Üks võib soovida seda teha mitmel põhjusel, nagu aru saada, kuidas programm töötab, või proovida mõnda programmi muuta, et suurendada seda või fix bug.

Dekompileerimist on olnud juba aastaid, ilmselt kunagi, sest inimesed on hakanud koguma programmid kõrgetasemelise keeles, et madalama taseme formaadid nagu montaaž ja masinkood.

Mitmed katsed on tehtud kirjalikult binary executable decompilers. Sel lehel on toodud mõned näited.

Seal on isegi rohkem decompilers saadaval hallata keskkonnas, mis kasutavad bait-koodi, nagu Java ja C#. Ulatuslik nimekiri on kättesaadav programmi ümberkujundamise wiki.

Nendel lehekülgedel me teile keskenduda dekompileerimist binaarne executables, või masin koodi lähtekoodi, kuna see on palju raskem kui decompiling Java bait-koodi või C#.

Mitme keele ja koostajad saab toota masinat kood, mis sisaldab mõningaid Java, C# ja Visual Basic koostajad. Seetõttu decompiler pead teadma, mis keel oli koostamiseks kasutatud programmi, ja on toetus, et genereerida, et keel. Siiski on enamik raske probleeme dekompileerimist ilmuda kui kasutate vähem piiravate keeles, nimelt C, Pascal või C++.

Kõige algoritme saab kasutada kõiki keeli, nii et me enamasti kasutada näited kirjutatud C. Kui me näitame algoritmi, kasutame C või C++, kuna need on kõige saadaolevate keelte kohta, nii Linux ja Windows.

Sõltumata sellest, sihtkeel, decompiler enamasti tegeleb 3 üksustele:

  • Kood objektid (ülesanded, aruanded)
  • Andmeobjektid (ülemaailmsed ja kohalikud muutujad)
  • Tüübid (muutuja tüüpi, funktsiooni prototüübid)

Pidev probleem decompiler on proovida järeldada, ühe või mitme kolm isikut eespool jada baiti leida binaarne fail. Selleks, et seda teha, see on kasulik teada, kuidas arendamise vahendid (mida me nimetame “edasi tarkvaratehnika” tööriistad) kasutatakse siis, kui kirjutamise programm, sest see on protsess, me üritame taastada.

Tagasi esilehele