Dekompilator

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 19 februari 2022; verifiering kräver 1 redigering .

En dekompilator  är ett program som översätter en körbar modul (erhållen vid utgången av en kompilator ) till en likvärdig källkod i ett programmeringsspråk på hög nivå .

Dekompilering  är processen att återskapa källkod med en dekompilator.

Dekompilering, i synnerhet, används i omvänd konstruktion av program.

Framgången för dekompileringen beror på mängden information som presenteras i den dekompilerade koden. Bytekoden som används av de flesta virtuella maskiner (som Java Virtual Machine eller .NET Framework Common Language Runtime ) innehåller ofta omfattande metadata som gör dekompilering ganska genomförbar, medan inbyggd kod är slankare och svårare att dekompilera. Speciellt anrop till subrutiner eller funktioner med indirekt adressering av anrop (när det gäller programmeringsspråk på hög nivå, anrop genom pekare till funktioner/procedurer) verkar vara svåra att läsa.

Om det är känt på vilket språk det dekompilerade programmet skrevs, så demonteras och analyseras först och främst runtime- biblioteken (RTL - runtime library) för kompilatorn från detta språk , eftersom kompileringen av programmet i princip reduceras till anrop med olika parametrar för procedurer från dessa bibliotek. Dessutom låter många kompilatorer dig se vilken assemblykod programsatserna blir till efter kompilering. Dessa konstruktioner blir mallar för dekompilatorn, så dekompileringsprocessen liknar i viss mening att känna igen en ändlig uppsättning sådana mallar i maskinkod. Procedursamtal och returer från dem är lättast att känna igen. De fungerar som gränser för att återställa förfarandets uttalanden.

Vissa kompilatorer och efterkompileringsverktyg fördunklar kod för att göra det svårare att dekompilera.

Dekompilatorer kan tänkas bestå av ett antal faser, som var och en bidrar till vissa aspekter av den övergripande dekompileringsprocessen.

Dekompileringsexempel

Se även