Analisi di InstallShield 5 |
||
Data |
by "Pnluck" |
|
7/06/2004 |
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.