Patch? Cos'è?

« Older   Newer »
 
  Share  
.
  1.     +1   -1
     
    .
    Avatar

    FaNaTiiK

    Group
    Global Mod
    Posts
    5,931
    Location
    Milano

    Status
    Offline
    Significato primario: aggiornamento o correzione di software

    La produzione di software, commerciale o libera, è usualmente soggetta ad errori di scrittura del codice e malfunzionamenti, chiamati bug, che vengono scoperti successivamente al rilascio del software stesso.
    Nel suo significato primario, patch (letteralmente "pezza") è un termine inglese che in informatica indica, 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

    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

    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 premetterne (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), dopo di che 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 bytes modificati per neutralizzare la protezione può variare da poche unità a diverse centinaia di migliaia di bytes. In genere una patch interviene su file eseguibili, ma a volte apporta modifiche anche (o solo) a file DLL. Non mancano i casi in cui oltre che apportare modifiche ad uno o più files già esistenti aggiungano o cancellino interi altri files. 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 rivelamento 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.
     
    Top
    .
0 replies since 1/6/2009, 12:10   481 views
  Share  
.
Top