„Kódvisszafejtő program” változatai közötti eltérés

[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
a Informatikai portál AWB
Nincs szerkesztési összefoglaló
1. sor:
A '''decompiler'''-ek (vagy '''kódvisszafejtő programok''')
olyan programok, melyek a [[fordítóprogram]]okkal ellentétes műveletet hajtanak végre.
Azaz az alacsony absztakciósabsztrakciós szintű (gépi kódú) futtatható programokat fejtik vissza (amelyek számítógépek által értelmezhető formában vannak) magasabb absztrakciós szintű kóddá, (amelyet emberek által olvasható formában jelenítenek meg).
(amelyek számítógépek által értelmezhető formában vannak) magasabb absztrakciós szintű kóddá, (amelyet emberek által olvasható formában jelenítenek meg).
 
== Bevezetés ==
 
A "decompiler" kifejezést leginkább olyan programoknál használják, amelyek futtatható programokat (a fordítóprogramok kimenetét) visszafejtik egy (viszonylag) magas szintű nyelvben írott forráskóddá. Ha ezt a visszafejtett kódot ismét lefordítjuk (egy [[fordítóprogram]] segítségével), akkor a létrejövő program működése megegyezik az eredeti programéval.
 
Ezzel szemben a [[disassembler]]-ek a futtatható programot [[assembly]] nyelvre fejtik vissza (amit valamilyen [[assembler]] segítségével lehet újra lefordítani futtatható programmá).
 
A kódvisszafejtés '''(decompilation)''' az a folyamat, melynek során egy ilyen programot használunk. Az angol '''decompilation''' jelentheti magát a visszafejtett kódot is.
 
Ezt a folyamatot használhatjuk abban az esetben, ha elveszett a forráskód, vagy hibajavításra, biztonsági rendszerekben, vagy [[interoperability]]-ben.<ref>[http://www.program-transformation.org/Transform/WhyDecompilation "Why Decompilation"]</ref>
vagy hibajavításra, biztonsági rendszerekben, vagy [[interoperability]]-ben.
<ref>[http://www.program-transformation.org/Transform/WhyDecompilation "Why Decompilation"]</ref>
A kódvisszafejtés sikere azon múlik, hogy mennyi információ található a visszafejtendő kódban és azon is hogy az elvégzett kód-analízis mennyire kifinomult.
 
A [[bytecode]] formátumok, melyet a virtuális gépek használnak (pl. a [[Java Virtual Machine]]) gyakran jelentős mennyiségű metaadatot tartalmaznak valamint olyan magasabb szintű adatokat, melyek jelentősen megkönnyíthetik a kódvisszafejtést. A gépi kód ezzel szemben alig tartalmaz metaadatot, ezért sokkal nehezebb visszafejteni.
gyakran jelentős mennyiségű metaadatot tartalmaznak valamint olyan magasabb szintű adatokat, melyek jelentősen megkönnyíthetik a kódvisszafejtést. A gépi kód ezzel szemben alig tartalmaz metaadatot, ezért sokkal nehezebb visszafejteni.
 
Egyes fordítóprogramok vagy fordítás után futtatott programok [[obfuscated code]]-ot (összezavart kód) képeznek (abból a célból, hogy megnehezítsék a kódvisszafejtést).
Ezt a módszert a [[reverse engineering]] megnehezítésére találták ki.
 
== Fázisok ==
A decompilerek felfoghatók úgy is mint programok sorozatai, melyek mindegyike a teljes visszafejtési folyamat egyes fázisait hajtja végre.
A decompilerek
felfoghatók úgy is mint programok sorozatai, melyek mindegyike a teljes visszafejtési folyamat egyes fázisait hajtja végre.
 
=== Betöltő (Loader) ===
31 ⟶ 26 sor:
=== Parancsokra bontás (Disassembly) ===
 
=== IdiomákIdiómák ===
 
=== Programanalízis ===
42 ⟶ 37 sor:
 
== Jogállás ==
 
== Jegyzetek ==
{{források}}
67 ⟶ 63 sor:
==== .NET ====
* [http://en.wikipedia.org/wiki/.NET_Reflector .Net Reflector] egy ingyenes segédprogram, melyben van Osztály böngésző (Class Browser), Static analysis és kódvisszafejtő.
* [http://www.netdecompiler.com Dis# – .NET decompiler] használatával szerkesztheted a lokális változókat valamint további neveket a visszafejtett kódban és a vátozásokatváltozásokat project fájlokba mentheted.
* [http://jsc.sourceforge.net jsc – .NET decompiler] ezen programmal a megírt c# programodat php, java vagy javascript programmá, kóddá tudod átfordítani.