Patch (informatica)

Da Wikipedia, l'enciclopedia libera.

In informatica il termine patch può avere diversi significati.

Significato primario: aggiornamento o correzione di software[modifica | modifica wikitesto]

La produzione di software, proprietario o libero, è usualmente soggetta ad errori di scrittura del codice sorgente e malfunzionamenti, chiamati bug, che vengono scoperti solo successivamente al rilascio del software stesso. Nel suo significato primario, patch (letteralmente "pezza") è un termine inglese che indica dunque, come hot fix, un file eseguibile creato per risolvere uno specifico errore di programmazione, che impedisce il corretto funzionamento di un programma o di un sistema operativo. Tali file generalmente vengono rilasciati dagli stessi produttori, nell'attesa di pubblicare una nuova versione del software stesso.

Una patch può essere di due tipi: binaria o sorgente. In entrambi i casi si tratta del risultato di una differenza (estrapolata attraverso speciali programmi di comparazione) che permette di aggiornare un file partendo da una versione precisa. Una patch è quindi la differenza tra una versione di un file e lo stesso file in versione precedente.

Le patch vengono pesantemente usate nello sviluppo in team del software poiché risultano essere molto pratiche. Le patch binarie vengono emesse dai produttori di software proprietario per correggere i bug direttamente nell'eseguibile. Nel mondo open source (e tra gli sviluppatori di uno stesso progetto) si usano le patch sorgenti, ossia ricavate da file di testo semplice (i listati dei sorgenti). In unix con diff e patch si creano e applicano le patch. In particolare i gestori di versione come CVS, offrono la possibilità di generare automaticamente patch tra versioni. Un ottimo esempio di come vengano utilizzate le patch sui sorgenti è dato dal kernel linux.

Service Pack[modifica | modifica wikitesto]

Software di grandi dimensioni, come ad esempio i sistemi operativi, dopo il rilascio sono soggetti a decine o centinaia di hot fix, e per rendere più agevole l'aggiornamento, periodicamente tutte le patch rilasciate vengono raggruppate in un unico eseguibile, che nella terminologia di alcuni produttori (principalmente Microsoft) prende il nome di Service Pack. I Service Pack per Windows vengono rilasciati a cadenza circa annuale.

Un Service Pack può essere di tipo incrementale, se raccoglie gli aggiornamenti solo a partire dal Service Pack precedente, oppure completo, se raccoglie tutti gli aggiornamenti a partire dal rilascio del prodotto, rendendo così non necessario aver già installato quello precedente (la Apple, ad esempio, definisce la tipologia completa combo update).

Un Service Pack non dovrebbe, per definizione, aggiungere nuove funzionalità ad un software, ma limitarsi a correggerne i malfunzionamenti. Ci sono però frequenti eccezioni, quando ad esempio durante l'uso una funzionalità originaria, pur non presentando malfunzionamenti, si rivela insufficiente o mal progettata. È il caso ad esempio del Service Pack 2 di Windows XP, dedicato per l'80% ai problemi di sicurezza, che oltre alle correzioni dei bachi ha introdotto un nuovo firewall, le Directx 9.0c e il supporto della tecnologia Bluetooth.

I Service Pack sono concepiti, e l'installazione tempestiva ne è consigliata, in modo da anticipare i cracker che si precipitano ad analizzare la patch appena rilasciata per attaccare chi ancora non ha riparato le falle.

Significato secondario: rimozione (illegale) delle protezioni di un software[modifica | modifica wikitesto]

Secondariamente per patch si intende particolari tipi di crack il cui scopo è rimuovere, a livello del codice assemblato, le protezioni di un programma in modo da permetterne (illegalmente) l'uso senza le necessarie licenze.

Per dare la possibilità agli utenti di provare un programma, prima di decidere se acquistarlo o meno, i programmatori distribuiscono gratuitamente versioni modificate di tali programmi. Queste modifiche rendono i programmi utilizzabili solo parzialmente (versioni Lite o Demo) o interamente ma solo per un determinato periodo di tempo (versioni Trial o Tryout con licenza di tipo shareware), dopodiché gli utenti per continuare ad utilizzarli dovranno acquistarne la versione originale, quella senza limitazioni.

Attraverso il cracking, il cracker bypassa le limitazioni della versione protetta del programma e ne ottiene una perfettamente funzionante (detta versione craccata o warez), funzionante cioè al pari di quella che otterrebbe se decidesse di acquistare il programma stesso. Fatto questo ricorre all'uso di un patcher, un software che fa il confronto tra le due versioni differenti del programma, quella protetta e quella appena sbloccata, in modo da generare un eseguibile (la patch, appunto) che non ha altro scopo se non quello di ripetere lo stesso lavoro appena compiuto dal cracker. Una volta distribuita in rete, la patch viene scaricata da altri per sbloccare le loro copie di tale programma e farne un uso illimitato come se possedessero la licenza.

La quantità di byte modificati per neutralizzare la protezione può variare da poche unità a diverse centinaia di migliaia. In genere una patch interviene su file eseguibili, ma a volte apporta modifiche anche (o solo) a file di tipo DLL. Non mancano i casi in cui oltre che apportare modifiche ad uno o più file già esistenti, aggiungano o cancellino interi altri file. Quelli aggiunti devono per forza essere stati presi in "prestito" da una versione originale completa del programma, che il cracker stesso (o altri per lui) ha legittimamente acquistato.

Una patch può a sua volta avere dimensioni che variano da pochissimi kilobytes ad alcuni megabytes. Le dimensioni variano non solo a seconda delle modifiche che devono apportare ma anche a seconda delle dimensioni degli eventuali elementi di creatività aggiunti dal cracker per confezionare la patch stessa: alcune infatti durante l'esecuzione mostrano foto o disegni e/o riproducono delle musichette, nonché i crediti a scorrimento, come se fossero dei film.

Per poter funzionare, una patch deve verosimilmente essere usata sull'esatta versione del programma a cui si riferisce, anche se non è impossibile concepire delle patch per versioni multiple. Il risultato è ottenibile o inserendo funzioni di rilevamento della versione e incorporando diverse versioni della patch in un unico eseguibile, oppure tentando di rivelare lo specifico blocco di codice da modificare in modo indipendente dalla locazione. Pur essendo il secondo approccio maggiormente flessibile, al produttore del programma basta modificare anche solo marginalmente (foss'anche solo usando istruzioni NOP) il codice target per disabilitare la patch.

Voci correlate[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica