Codice Automodificante

La programmazione di codice automodificante (in inglese self-modifying code) è una particolare tecnica di programmazione volta a realizzare programmi in grado di modificare il proprio codice durante l'esecuzione.

Per la complessità dell'analisi relativa a tali algoritmi, è una tecnica sconsigliata per quasi tutte le applicazioni: allo stato attuale solo i virus, i programmi di intelligenza artificiale ed alcuni algoritmi di protezione del software fanno uso di codice automodificante. I virus lo fanno per cercare di sfuggire all'analisi dei programmi antivirus, mentre in intelligenza artificiale serve per simulare (o per alcuni imitare) l'apprendimento. Infine gli algoritmi di protezione del software usano il codice automodificante per rendere difficoltosa la realizzazione di "crack" in grado di eliminare la protezione sul software stesso.

Normalmente il codice automodificante viene scritto nel linguaggio nativo del processore su cui deve girare (assembly), tuttavia è possibile, con opportuni accorgimenti, scrivere codice automodificante con linguaggio di alto livello.

In origine i programmi automodificanti erano realizzati per ottenere il massimo delle prestazioni dalle macchine, ma con i moderni microprocessori ciò non è più vero, anzi spesso ottengono il risultato opposto: un moderno processore può venire rallentato dal codice automodificante.

Attualmente l'utilizzo della tecnica del codice automodificante viene sconsigliata da tutti i produttori di microprocessori[senza fonte] poiché rende notevolmente più complessa la realizzazione degli stessi microprocessori. I microprocessori moderni suddividono le istruzioni e i dati in due aree separate di memoria. Il codice automodificante non è dotato di questa netta suddivisione dato che utilizza i dati per adattare il proprio codice e questo rende la sua gestione in un processore moderno molto difficile. Intel e AMD attualmente supportano l'esecuzione di codice automodificante sui loro prodotti della linea x86. Questo supporto è mantenuto per questioni di compatibilità con le precedenti applicazioni.

Note

Voci correlate

Codice Automodificante  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica

Tags:

Lingua ingleseProgramma (informatica)Programmazione (informatica)

🔥 Trending searches on Wiki Italiano:

Achille StaraceBones (serie televisiva)Luigi PirandelloMassoneriaRicchi, ricchissimi... praticamente in mutandeRebel MoonCaterina BalivoIranPalmiro TogliattiTommaso ZorziStatistiche della Serie AGenerazioneLivia TurcoCento domenicheAlessandro BarberoOmicidio di Giulio RegeniLa smorfiaPirati dei CaraibiChelsea Football ClubBlow (film)NetflixKylian MbappéValentino RossiDakota FanningNazionale di calcio dell'ItaliaRoma città apertaEleonora GiorgiOttavia PiccoloPredappioAlbert KesselringWilhelm SchmalzAtlante delle stragi naziste e fasciste in ItaliaNatalie ImbrugliaStrage di MarzabottoAlcide De GasperiFontana di TreviBeppe FenoglioEmilio SalgariCarolyn JonesFesta della mammaFederico DimarcoMaria BelloGiuseppe MoscatiMatteo ArnaldiMaze Runner - Il labirintoPablo EscobarL'ispettore GentlyVeronaNove (rete televisiva)M. Night ShyamalanOlivier GiroudStation 19ITA AirwaysGenoa Cricket and Football ClubEpisodi di FalloutBridgertonComitato di Liberazione NazionaleMeryl StreepRoberto VannacciThe Gentlemen (serie televisiva)Giulio AndreottiGarri KasparovThe CursedAntonia BricoCopycat - Omicidi in serieClint EastwoodUna ragazza e il suo sognoEpisodi de Il clandestinoFranco BaresiAntonio ScuratiSpaccanapoliFrancesco FlachiGeppi CucciariVia FrancigenaTavola periodica degli elementiFirenzeEpisodi di Grey's Anatomy (diciannovesima stagione)GhulIl conformista (film)🡆 More