Newsgroup: it.comp.programmare
Titolo: (OT) scommessa su chiavi hardware

Io e la mia collega abbiamo fatto una scommessa in merito al fatto che non è
possibile crakkare o comunque "produrre" una copia illegale di un software
che richiede un chiave hardware.......io che penso che un bravo
programmatore possa fare qualsiasi cosa !!!!..........., sono del parere che
non sia troppo complicato......voi che dite?????
GRAZIE

 wrote in message
news:8lnvn3$3cs$1...@fe2.cs.interbusiness.it...

Dipende dalla chiave hardware e dal tipo di protezione adottata, comunque e'
certo che si puo' fare: ci sono in giro sicuramente milioni di copie abusive
di Autocad che fino a poco tempo fa' proteggeva in questo modo (non lo so'
se lo fa' ancora, vista l'inutilita').
Sono convinto, ma rispetto le opinioni altrui, che proteggere un software in
questo modo e' una inutile perdita di tempo, di denaro ed alla fine anche di
clienti che si "rompono" di avere 'sta cosa fra le scatole. Senza contare
che in qualche caso non c'e' verso di farle funzionare per problemi di
hardware o di temporizzazione (credo); succede spesso per le chiavi
predisposte per le versioni rete.
Bye, Sonic.

 
Si puo' fare , ma non basta essere bravi programmatori, basta che ti rivolgi
a qualcuno che conosca i linguaggi macchina e ti crakka il programma.
Alcuni li puoi trovare su 
astalavista.com
 , ma per alcuni programmi di uso
non tanto commerciale bisogna arrangiarsi.
Ad una mia amica per crakkare un programma da stilisti che aveva una chiave
HW, le hanno chiesto 3 milioni
-- 
ciao e grazie
Suppo  by
(fabrizio)
"una rosa, comunque la si chiami, non perde mai il suo profumo"

 non sia troppo complicato......voi che dite?????
beh, direi che hai vinto tu!! ;-)
... tutto si può fare, è solo una questione di tempo e di pazienza.
Molte volte (nei casi semplici) si risolve semplicemene mettendo
qualche JMP quà e là o sostituendo ad es un JNE con JE (1 'un'! bit)
es. SUPERsemplificato in pseudocodifica:
se ChiaveHardwareOK
 allora vai avanti ...
 altrimenti esci
crackato:
se ChiaveHardwareOK
 allora esci
 altrimenti vai avanti ;-)
fatto sta cmq che chi produce le chiavi hardware e relativi
software fa di tutto per rendere la vita dei crackers + difficile,
ma, come ripeto, l'operazione non è impossibile.
byez
Alan Solo

 
Ma la tua soluzione é HW o SW.


 Ma la tua soluzione é HW o SW.
è SW!!
questo è il punto!!
possono mettere tutte le chiavi harware che vogliono,
ma saranno sempre scavalcabili via software!! ;-)
PS: se sei un aspirante cracker (a occhio direi di sì ;-),
ti do un consiglio,
un buon programmatore (come dice l'autore del thread)
_progetta_ e _scrive_ programmi, non passa il suo tempo a fare crack.
...secondo te da più soddisfazione progettare e costruire
una macchina o cortocircuitare i fili dell'accensione per accenderla??
cmq, se vuoi saperne di + (magari con uno spirito da _HACKER_ :-)) )
fai un giro su 
neworder.box.sk
, trovi alcuni link...
byez
Alan Solo


Come dicevo nel mio primo intervento: "dipende dalla chiave...". E' evidente
che se la chiave si limita al semplice controllo "ci sono/non ci sono", con
pazienza e un buon disassembler si puo' aggirare la protezione, ma purtroppo
esistono chiavi "piu' furbe" che contengono del codice necessario per
"decrittare" l'eseguibile originale.
Cioe' il programma e' normale fino alla chiamata alla chiave, poi e' una
serie di byte incomprensibili (non necessariamente nel main, ma in una dll
per esempio) ed e' proprio la chiave che lo codifica e lo trasforma in
codice eseguibile. Per cui se salti il controllo della chiave non potrai com
unque andare avanti e l'unica soluzione e' capire come agisce il codice di
decrittazione.
I metodi per eliminare la protezione in questo caso fanno uso di tecniche
sofisticate per fare un dump della memoria e ricostruire la dll in formato
pulito. Il costo di una simile operazione ne scoraggia certo l'impiego.
Bye, Sonic.

 pulito. Il costo di una simile operazione ne scoraggia certo l'impiego.
Come ho detto anch'io, non sempre non č cosě semplice
come sembra, ma la risposta alla domanda iniziale del thread č, cmq,
"sě, si puň crackare anche una protezione hardware"
...poi certo esisteno software house che dedicano il loro
tempo a fare solo questi tipi di protezioni e si
scervellano per rendere la vita dei cracker + difficile
e per scoraggiare ogni tentativo di crack...
Una protezione originale (secondo me) č quella di Quake 3 Arena della ID,
copio testualmete dal twilight (noto cd pirata):
"As you know this game is mainly internet based you will NOT
be able to play online with this release.. Sorry, but the online protection
is server based. Maybe there will be an update on the next TWILIGHT
release."
... e se non ci sono riusciti loro ;-))
non so se adesso l'hanno risolto (probabile) perň ...
byez
Alan Solo

Ma la tua soluzione é HW o SW.
Software. Si tratta di modificare il programma in modo che ignori la
mancanza di chiave hardware. Se nella chiave non e' contenuta alcuna
informazione, allora, la modifica si riduce a cambiare un bit dentro
il programma.
Curiosamente, questo e' punito piu' che non clonare la chiave HW, in
quanto nel primo caso si ha la cosiddetta "violenza sulle cose".
Lo stesso accade se si sostituisce il driver della chiave HW con una
libreria dinamica finta, che qualsiasi cosa il programma chieda dice
sempre di si', non importa se la chiave c'e' o non c'e'.
Acquistare un software a prezzo stracciato e curiosamente sprotetto,
rientra invece nella definizione di "incauto acquisto".
Si puo' dimostrare che se una chiave hardware funziona su tutti i PC
allora si puo' SEMPRE aggirare con un driver, le cui dimensioni sono
pari a quelle dello spazio delle risposte della chiave hardware.
Per esempio, io posso mettere in una chiave hardware un chip, con su
un programmino che calcola il codice fiscale telematico di un nome e
data di nascita.
A questo punto, il programma genera dei nomi casuali, tipo
	{ Serni Leonardo, nato a Vico Equense, ecc. }
e controlla che la chiave risponda "SRNLRD49M15L845M". Evidentemente
per crackare questo occorrerebbe avere nella DLL pirata TUTTI i dati
di TUTTI i possibili nomi e cognomi e indirizzi e date; impossibile,
in pratica. In teoria e' possibile, e funzionerebbe.
In questi casi qui o si violenta ulteriormente il programma, in modo
che il generatore di nomi "casuali" generi sempre gli stessi due tre
quattro nomi; oppure, si scopre qual e' l'algoritmo impiegato dentro
la chiave (reverse engineering hardware), o nel programma per vedere
se la chiave ha risposto il vero (r.e. software), oppure si violenta
il programma perche', qualsiasi cosa gli risponda la falsa chiave, i
conti tornino.
Un trucco assolutamente stupido e' modificare un eventuale puntatore
a strcmp() perche' punti a strcpy(). Questo fa si' che non solo alla
prima volta risulti tutto OK, ma che da quel momento in poi "sembri"
che la chiave abbia risposto bene, anche se non l'ha fatto:
	Programma		Chiave
	RISPOSTA ESATTA		RISTOPSA TTAESA <-- buffer SBAGLIATO
	(controllo)--> OK (ma il controllo ora modifica il buffer!)
	RISPOSTA ESATTA		RISPOSTA ESATTA <-- buffer corretto
	...
	(ulteriori controlli, che ovviamente saranno passati)
Quest'ultimo metodo consente ad es. di avere la chiave di register a
scrocco. Il programma ti chiede nome e cognome, poi il codice, ne fa
lo hash, vede che tu hai detto 83745 e la risposta esatta e' 18774 e
ti dice:
	RISPOSTA SCORRETTA. IL CODICE 18774 NON E' VALIDO.
Al giro dopo, tu immetti 18774 e... 8-)
Va da se' che ci sono sistemi per rendere la vita dvrissima a chi si
volesse cimentare con questi scherzi. Immagina per dire se pezzi del
sottoprogramma di calcolo della chiave fossero (per risparmiare, non
pensate male!) impiegati dalle routines di scrittura sul disco. O se
uno spiacevole bug, a intervalli irregolari, facesse si' che tutti i
controlli sulla chiave usassero *non gia'* la routine giusta, ma una
vecchia versione, del tutto identica, dimenticata nei sorgenti. Dato
che il risultato delle due versioni e' NORMALMENTE identico, benche'
il programmatore possa aver impiegato la diligenza del buon padre di
famiglia (articolo 2012, C. C. - credo?), i risultati di un cracking
potrebbero essere soddisfacenti per una settimana o due, distruttivi
il giorno seguente, senza lasciare tracce o indizi.
Cose tristi... |'-(
Leonardo "o' coccodrillo"
".signature": bad command or file name

 
Non sono proprio un aspirante hacker, ma sono un programmatore intenzionato
a studiare l'assembly.
Anch'io la penso come te, non mi passerebbe mai per l'anticamera del
cervello di danneggiare qualcuno, xo' l'utilità del saperlo fare , penso che
sarebbe d'aiuto per difendermi.
Crakkare a volte diventa quasi doveroso, specialmente con chi ti sfrombola
un aggiornamento ogni sei mesi e non si ha i soldi per comprarselo.
Cmq. hai ribadito il mio concetto, non bisogna essere buoni programmatori in
genere, ma conoscere i ling. macchina.
Ti ringrazio per le spiegazioni, pensavo che jmp stesse per jumper della
scheda.


 scheda.
di nulla, figurati
Bye bye! :-))
Alan Solo