Analisi di  InstallShield 5

Data

by "Pnluck"

 

7/06/2004

UIC's Home Page

Published by Quequero



 

Ciao pn ti ringrazio per il tute, breve e conciso ma soprattutto il peggio formattato che abbia mai visto :). Per dovere di trasmissione delle opere d'arte lo lascio integro, cosi come me l'hai mandato, di modo che anche i posteri possano giovare di cotal impaginazione. :) La prossima volta entra piu' nel dettaglio mi raccomando.

 

 

Ke bello riempire gli spazi :)

Home page se presente:

E-mail: [email protected]

Pnluck, #crack-it,#insidenet

Ke bello riempire gli spazi :)

Difficoltà

(X)NewBies ()Intermedio ( )Avanzato ( )Master

 

Breve studio al funzionamento di InstallShield 5


Studio InstallShiled5
Written by Pnluck

Introduzione

Vediamo come funziona questo installer, anche se è una vecchia versione

Tools usati

Tools usati : UltraEdit 32,IsDcc2,mkcrc,I5comp tutte e tre da protools

URL o FTP del programma

InstallShield è un software che crea procedure di installazione per giochi e programmi, forse è il programma più usato nel suo genere. I tools usanti sono: UltraEdit credo ke già lo conoscete, gli altri tre li spiegherò nel tute.

Se potete trovate un programma con l ‘istallshield vecchio in qualche vecchio cd o su internet :)

Essay

Come funziona il programma
Per prima cosa procuratevi un cd in cui ci sia un prg ke verrà installato tramite InstallShield 5 o inferiore. Questa versione ke studiamo è una a 16bit, al contrario del prg recente, ke è a 32bit. Io ho studiato l’InstallShield presente nel cd di ArmoredFirst 3 originale (xkè comprato in edicola). Studiando il metodo di protezione del gioco, che richiede in un semplice serial, e con nessuna protezione anti-copia.Sbirciando nel cd con vari software, ho scoperto che il cd è protetto da una protezione basata su TOC fasullo, e dato ke nel 98, CloneCd non c’era ancora (credo), era difficile fare una copia del gioco :). Comunque torniamo allo studio di InstallShield5. Quando si lancia il setup del gioco, InstallShield crea in c:\windows\temp, una cartella di nome: _ISTMP ( + n, dove n è un numero da zero in poi, ciò dipende se sono stati avviati altri processi con l’InstallShield).DIR (esempio: _ISTMP0.DIR), nella quale ci sono vari file. I file che vengono inseriti questa cartella, sono stati estratti dai file _user1.cab e _sys1.cab ( presenti nel cd nella cartella da vi è setup.exe), ma questi non sono dei file cab standard, ma hanno un algoritmo proprio di installshield. Per estrarre o semplicemente vedere i file contenuti in essi, io ho usato il prg dos:
I5comp, scaricabile da protools con source compreso. Ecco come si usa I5comp ( le funzione + utili):
I5comp l file.cab         “l” serve per vedere i file contenuti nel
I5comp e file.cab         “e” estrae il file presenti nel cab nella directory di i5comp
Nel file _user1.cab sono i file della softwarehouse che a sviluppato il prg, come le immagini che si vedono durante l’installazione, ed è sempre presente il file VALUE.SHL, nel quale ci sono tutti i text che si vedono durante come l’installazione, come le istruzioni x l’installazione o i text che escono nei MessageBox, questo file ci sarà molto utile dopo.
Il file _sys1.cab sono presenti tutti i file necessari ad InstallShield x l’installazione come  l’Unistall o i file .ini per l’impostazioni                                                                                                         
Il file data1.cab contiene solo il listato ( almeno x il mio caso) di tutti i file ke verranno installati sul pc, ke sono presenti nel cd. Voi pensate e se vedo i file da installare in data1.cab e copio questi in una cartella del pc senza ke faccio l’istallazione ? Io vi dico vi ricoradate il metodo di protezione? E’ un TOC  modificato, x esempio ci può essere un file che nel cd è di 700mb ma in realtà è di 70mb, e se provate a copiare questo sul pc, il win vi dice che non è possibile xkè ad un certo punto il file è danneggiato. Se conoscete un metodo x risolvere a ciò x favore contattatemi sono molto curioso.                                                                           
Questi file .cab sono riconoscibili xkè se li aprite con un hexeditor essi hanno la prima riga così (almeno x l’InstallShield 5):
49 53 63 28 00 51 00 01 00 00 00 00 00 00 02 00 00 che in ascii è: ISc(.Q.......... .Ora andiamo nella cartella del cd dove c’è il file setup, qui sono presenti oltre a quei file cab già menzionati, altri file interessanti, ma il più interessante di tutti è SETUP.INS, questo file, ke è criptato, contiene lo script ke comanda setup.exe, per decriptare questo file si usa il prg IsDcc in questo modo: isdcc setup.ins > setup.txt. Dopo ciò apriamo setup.txt, e si può vedere che il linguaggio dello script è una specie di c, xkè vengono dichiarate le stringhe e i numeri, poi ci sono le funzioni (dichiarate tramite prototipe), ke vengono richiamate dai vari label. Ogni label fa eseguire un operazione a setup.exe, ad esempio nel mio caso il label17, controlla se il serial inserito è corretto o no, questo semi-linguaggio è molto comprensibile, e ci sono possono essere chiamate anche a dll esterne o ad api. Vi spiego solo come funge un label xkè  ripeto ancora, questo semi-linguaggio è molto comprensibile:

0010AF:00B4:         MYDLL.MydllCallByRef(lNumber1, lString2);   chiama mydll.ddl in /_istmp(n)1,dir/ e ci passa i due argomenti
0010BA:0021:         lNumber0 = LAST_RESULT;    viene messo in lNumber0 il risultato dell'istruzione precedente
0010C2:0128:         lNumber2 = lNumber1 != 1;  lNumber1 è diverso da 1
0010D4:0022:         if (lNumber2 = 0) then  se numero è uguale a zero
                               goto label18; vai a label 18
                               endif;  questa istruzioneindica la fine dell’if, quindi l’istruzione ke seguono vengono eseguite se  if è diverso da zero, quindi può essere considerato come un else
0010E2:0112:         StrLoadString("", "INVALID_PKEY", lString3);  carica  il messaggio di errore in lString3
0010F9:002A:         MessageBox(lString3, -65535); viene lanciata una MessageBox con l’errore
001103:002C:         goto label16;   e vai a label16<  

Un label viene chiuso con l’inizio di un altro label, tranne l’ultimo nel quale alla fine di esso viene messo un end;

 

Metodo di Reversing                                                                                                                           Avendo finito le spiegazione sul funzionamento di InstallShield, ora vi spiego un concreto metodo (provato su altri molti giochi) di reversing ad InstallShield. Dato ke abbiamo il source di setup.ins, ke è lo script che controlla le funzioni di setup.exe e quindi controlla anche se il serial inserito è giusto, basta trovare il label giusto, modificarlo ( ci sono 2 modi) e sostituire il file modificato a quello originale. Prima di tutto lanciamo setup.exe, e quando questo ci chiede di inserira la key, noi inseriamo a caso e ci scriviamo il txt ke esce dal MessageBox. Ora andiamo a vedere in c:\windows\temp\_istmp(n).dir\ il file value.shl che come detto contiene i text di tutte le MessageBox e cerchiamo la scritta di errore e ci dovrebbe uscire una cosa del genere                                                           
INVALID_PKEY=Invalid product key, please re-enter.                                                                                  
Qui INVALID_PKEY è una costante con il valore del msg di errore, ora andiamo da setup.ins decriptato cioè da setup.txt e cerchiamo invalid_pkey, ke si trova nel label17, il quale ve l’ho spiegato prima, ora ci basta cambiare quell’ if, e per far ciò ci sono due modi, cambiare l’if in setup.text e criptare questo  o cambiarlo direttamente in setup.ins.
Per il primo modo cambiamo:  
if (lNumber2 = 0) in if (lNumber2 = 1) ed usare “mkcrc setup.text” (in ms-.dos) x re-criptare, e quindi rifare il cd da capo sostituendo il file. Per il secondo metodo dobbiamo copiare setup.ins sul pc, ed aprirlo con un hexeditor e cercare Invalid_pkey che compare in chiaro, poi dato che i numeri sono sottoforma di dword bisogna cercare questa sequenza 41 00 00 00 00 (il 41 l’ho trovato prima di tutti i numeri) e sostituirlo con 41 01 00 00 00, salvarlo e rifare il cd da capo, cambiando questo al vecchio :)

Per oggi è tutto. Alla prossima

Pnluck

Note finali

Questa è il mio primo studio serio su un vero (anche se vecchio) prg, spero di essere stato esauriente,e di aver spiegato bene il metodo di attacco. Ringrazio la UIC e #crack-it. Alla next                  

Disclaimer

Qui inserirete con questo carattere il vostro piccolo disclaimer, non è obbligatorio però è meglio per voi se c'è. Dovete scrivere qualcosa di simile a: vorrei ricordare che il software va comprato e  non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo immane che ogni singolo programmatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.

Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.