Newsgroup: it.lavoro.informatica
Titolo: Protezione software

Salve a tutti,
ho il sospetto d'essere OT (anche se forse piu' IT
di altre discussioni :)) quindi eventualmente accetto
consigli su dove migrare per porre la domanda!
Mi sono imbattutto in un problema forse banale, che
pero' non so bene come risolvere in modo sicuro.
Sto scrivendo un programma per cellulari e volevo
creare una protezione basata sull'IMEI per controllare
se il software e' stato regolarmente registrato. L'idea
di base era quella di trovare/inventare un algoritmo
per associare un codice seriale all'IMEI e quindi
basare i controlli su quello. Mi pare pero' una
protezione un po' debole e facilmente aggirabile.
Temo infatti che studiando il codice sorgente con un
disassembler potrebbe risultare semplice scoprire
l'algoritmo utilizzato e creare un key generator che
lo riproduca. Tralasciando il fatto che probabilmente
mai nessuno si prendera' il disturbo di crackare il
mio software, mi interessava approfondire la questione
anche per curiosita' e interesse personale.
In definitiva, voi come risolvereste questo problema?
Grazie!

Il Fri, 22 Jan 2010 00:49:53 GMT, Bane ha scritto:
[cut]
Anni fa avevo sviluppato un software per Windows che distribuivo shareware,
scritto in C++.
Era completo ma alcune funzioni erano attivabili con un codice licenza.
Qualche mese dopo me lo ritrovai crackato ! (il fatto in realt� mi
gratific�, qualcuno si era impegnato a disassemblare un programma che
pensavo non fosse molto conosciuto).
Ho risolto togliendo del tutto il codice che prima era presente ma
"inattivo", lasciando in circolazione una trial incompleta ma sufficiente
alla valutazione qualitativa e funzionale.
Quando me lo comprano do il link privatamente al douwnload della versione
completa, insieme ad una licenza personale.
PaF

 versione completa, insieme ad una licenza personale.
non mi pare tu abbia risolto granché. è più facile metterlo sul mulo che 
crackarlo...

 crackarlo...
Devono mettere sul mulo l'eseguibile insieme al file di licenza che
spedisco, che contiene i dati dell'utente. Niente di non crackabile, per�
dal 2001 non � successo, anche perch� non ho volumi di vendita enormi e
tengo traccia di tutti i clienti (ne avr� venduti un centinaio, era un
progetto che portavo avanti nel tempo libero per hobby).
PaF

 dal 2001 non � successo
Come fai a saperlo?
Ti ricordo che "crackare" significa, per lo pi�, aggirare i controlli
all'interno del codice, quindi se parte del tuo codice esegue controlli
sul file di licenza, basta annullare quelle istruzioni con un bel JMP :)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 sul file di licenza, basta annullare quelle istruzioni con un bel JMP :)
Voglio dire che dal 2001 sul mulo c'� ancora la versione vecchia. Pu� anche
essere che non interessi pi� a nessuno :-)
PaF


Slegandomi dal sw di PaF, stavo pensando che in certi contesti visto che la 
connessione a internet � sempre pi� diffusa, la banda non � malaccio, un 
tipico sw nella sua versione completa e soggetta a licenza personale, 
potrebbe in realt� installarsi solo come modulo di start-up e file di 
licenza in binario. Il modulo all'avvio raccoglie i dati del pc e li invia 
assieme al file di licenza ad un web service dal quale viene scaricato o 
meno il sw vero e proprio. Praticamente sul pc il sw reale non c'� mai, 
quindi � impossibile craccarlo... e se uno al web service non invia 
l'accoppiata buona di macchina + licenza (e la licenza ovviamente al suo 
interno contiene i dati della macchina) non ottiene il sw.

 spedisco, che contiene i dati dell'utente. 
sai che problema...

 come risolvereste questo problema? Grazie!
Non lo risolvi. Qualsiasi software e` craccabile, e protezioni sempre 
piu` strette vanno a danneggiare i clienti onesti piu` che i cracker 
(vedi i DVD video, il macrovision sulle VHS, o anche il sistema di Steam).
In ogni caso quasi nessuno di quelli che te lo craccano l'avrebbero 
pagato. E quello che l'avrebbero pagato magari vedono la versione 
craccata come una "demo completa" e poi magari la comprano per scrupolo.
Quindi non rompere troppo le balle ai tuoi onesti clienti (metti che gli 
si rompe il cellulare e l'IMEI cambia e devono aspettare che tu faccia le 
verifiche prima di spedirgli una versione nuova del software...) e 
preoccupati meno (non zero, ma il giusto) della pirateria.
Il modo migliore per combatterla e` fornire qualcosa in piu` ai clienti 
(dagli in anteprima le nuove versioni, per esempio) piuttosto che perdere 
tempo con le protezioni.
Bye.

 sai che problema...
Sono consapevole di non aver trovato la soluzione alla fame del mondo, per�
a me nel caso specifico � bastato, visto che il programma ancora me lo
comprano :-)
PaF

 quindi � impossibile craccarlo...
Hmmm tu dici? si pu� sempre intercettare il codice che effettua il
download dell'eseguibile e modificarlo perh� il sw venga salvato su disco
per poi essere riutilizzato. Non � neanche troppo complicato. 



Vero, alla fine lato pc non si pu� far altro che mettere cancelli su 
cancelli... per� pi� ce ne sono pi� uno si deve sbattere per toglierli... 
:-)
Direi che in questo senso le webapp hanno il loro bel vantaggio, craccare 
l'applicazione � praticamente impossibile.


si infatti, tanto tutti i sistemi vengono craccati quindi tanto vale
sbattersene il file di licenza e la soluzione che meno impatta il
programmatore e non ci perdi in sicurezza tanto il 90% di quelli che
comprerebbero il software lo faranno comunque mentre e degli altri te ne
sbatti.
L'unico software davvero sicuro � quello abbinato ad un device che
vendi, esempio: settore tessile una macchina che tagli in base ha dei
parametri del software che la controlla via pc, il rivenditore vende la
macchina e il software abbinato (e aggiornamenti gratis).
So che � un esempio del cazzo ma alla fine senza investire troppo in
risorse alla fine puoi usare:
* file di licenza
* chiavetta usb e vari kit
* check periodico online di serial number e dati user
un misto di quelli su
oppure fare una webapps.
oppure una applicazione mista in parte desktop ed in parte usa dei
webservice.
(va da se che negli ultimi due casi se l'utente � pagante deve avere
l'applicativo disponibile sempre e comunque, ossia ci sono costi legati
a server affidabili, buona banda, appoggiarsi a servizi di cloud etc...
paradossalmente se un acaro ti buca il sistema tutti i clienti
potrebbero chiedere i danni)
va b� anche oggi ho detto la mia

 vendi, 
Oppure che richiedono un'attivit� che l'utente non pu� fare da solo e che
varia da cliente a cliente (es. preparazione dei dati di base di un db)
PaF


ebbene si.
qualche hanno fa (minchia nel 2003) in toscana andava tanto un software
per la gestione di frantoi che costava su mille euri che richiedeva
l'installazione fatta direttamente dalla ditta.
(in pratica facevano un dns di sistema e zack)

 versione completa, insieme ad una licenza personale.
Lo posso dire in altra maniera?
Non esiste protezione che, prima o dopo, qualcuno non riuscir� ad
aggirare... ;-)
-- 
Ciao!
Luca

 sw.
ammesso e non concesso che funzioni, la tecnica di legare licenza + 
macchina è adatta a licenze "per seat" e non "per named user". per 
carità, va benissimo, però sono scelte da fare. va detto per un utente 
che *compra* una licenza non poter installare il software dove vuole è un 
vincolo iniquo e poco sopportabile.

 speculativo e moralmente discutibile IMVHO.
Io ho fatto questa scelta, che in effetti piace molto ai comuni: compri il
mio software e lo installi su quanti pc vuoi. 
Perï¿œ dopo il primo anno ho un canone di assistenza (assolutamente non
obbligatorio) che mi permette di pagare la persona che risponde al telefono
(la maggior parte delle volte il cliente ï¿œ pigro, preferisce chiamare
piuttosto che leggere il manuale dove troverebbe la soluzione ai suoi
problemi).
PaF

 l'applicazione � praticamente impossibile.
Premesso che su di me lo sviluppo web agisce da lassativo, ammetto che �
un bel vantaggio. La veste web classica va bene per applicazioni
gestionali. Ci sono ambiti in cui si addice meno. Certo, con Silverlight
si possono fare cose molto simpatiche e che superano i limiti classici del
web.



E vabbe', invece di licenza sw si scrive nel contratto che compra una 
licenza d'uso di un servizio vincolato alla macchina e morta li :-)


Stravero, anzi, piï¿œ che per pigrizia molti clienti chiamano apposta anche se 
sanno quello che devono fare proprio perchï¿œ hanno pagato il canone, e quindi 
DEVONO chiamarti... mica scherzo.

 speculativo e moralmente discutibile IMVHO.
mah... io ho poca esperienza di software standalone ma sul software
venduto abbinato a servizi il costo di sviluppo ï¿½ tutto al servizio di
quante licenze o royalty ha generato la versione precedente o servizi ad
esso abbinato.

 interessa.
Ti interessa se vendi direttamente tu ci� che sviluppi.
PaF

 La pensiamo diversamente: io avrei encomiato Robin Hood :-)
te semplicemente non pensi. assumi semplicemente che sia giusto ciò che 
in quel preciso istante ti fa comodo.

 speculativo e moralmente discutibile IMVHO.
Tua idea. Rispettabile idea. 
Ti fo' notare che le royalties non sono illegali. 
Ciao 

 interessa.
beh immagino mai sentito parlare di bonus produzione o simile...
comunque se il software vende 1000 probabilmente avrai in futuro con
quel cliente rapporti migliori e meglio pagati, se vende 1 ci rimetti
pure tu; e poi a me ad esempio fa piacere sapere che il mio software
vende 1000; e lavorativamente parlando prova a sviluppare qualcosa per
conto tuo e venderlo per conto tuo cos� magari ti interessa anche quanto
vendi e quanto fa incazzare quando utilizzano il tuo lavoro senza pagarlo.

per poi essere riutilizzato. Non � neanche troppo complicato. 
Puoi fare come fanno alcuni sviluppatori per l'iphone: il codice e'
incompleto, il telefono si collega al server per l'autenticazione e
gli passa il suo unique_ID.
A quel punto il server manda la parte di codice mancante usando come
chiave, se non ho capito male, il checksum dell'applicazione integra e
lo unique_ID del telefono.
Gli unique_ID che non sono abbinati a una transazione vengo o
blacklistati e il software smette di funzionare, male che vada siccome
il pezzo di codice mancante e' adatto solo a un singolo telefono
l'applicazione si rifiutera' comunque di girare su altri.
Se ritrovo il link all'articolo con i dettagli della protezione lo
posto.
Saluti.
-- 
Living in Barbaropoli
http://www.barbaropoli.com

speculativo e moralmente discutibile IMVHO.
Sulla carta fila tutto liscio come l'olio, salvo poi avere un 70%
delle applicazioni che ci sono sull'Apple store che si trovano pirata.
In questo caso non regge neanche la scusa del "lo volevo solo provare"
visto che e' possibile acquistare un software e farselo rimborsare se
non e e' soddisfatti senza dover dare nessuna spiegazione ne' a Apple,
ne' allo sviluppatore.


posto.
Ecco qua, in ordine cronologico:
http://www.darkapples.net/?p=228
http://www.darkapples.net/?p=237
http://www.darkapples.net/?p=242


gli passa il suo unique_ID.
Non cambia molto rispetto al software trial cui mancano molte
funzionalit� e lo unique_id non � diverso dal "token" calcolato sui
dati della macchina (licenza "per seat", come diceva rootkit). Scade
la trial, paghi e ti mandano (o ti scarichi) quello completo. Il
problema � che tutto � "crackabile" e quindi una volta che hai il
software completo, ottenuto in un modo o nell'altro, puoi debuggare il
codice e rimuovere la parte di autenticazione mediante unique_id.



No, perche' l'applicazione e' sempre monca e ti serve sempre internet
per farla partire.


per farla partire.
Ma non dicevi che "il server manda la parte di codice mancante" ?



Certo gliela manda se il computer non e' in blacklist e comunque
firmandola al volo con una chiave crittografica unica per il computer
che sta facendo la richiesta.
Chiuso il programma la parte mancante sparisce e il programma e' monco
di nuovo.
Saluti,


di nuovo.
E dove sarebbe il problema nel craccare il software perch�, una volta
scaricata e decrittata la parte mancante, questa venga salvata da
qualche parte, in modo da saltare a pi� pari l'autenticazione la volta
dopo e caricarla direttamente dal supporto?

dopo e caricarla direttamente dal supporto?
Che ti devi riscrivere mezzo programma ed eliminare tutti gli altri
check che sono presenti nel programma stesso.
Poi se ti blacklisto in base all'ID della tua macchina e la parte
mancante non te la mando la vedo dura fare le prove per craccare il
tutto.
Saluti.


tutto.
Se il client comunica col server passando un id e il server gli passa
il pezzo mancante, le prove consistono nel cercar di salvare quel
pezzo mancante da qualche parte oltre ad eseguirlo nella maniera
classica. Durante questa fase, il dialogo col server � inalterato; il
server non sa cosa succede lato client col pezzo mandato. Dopodich�,
fatto questo, assicuratomi che riesco a salvare correttamente il pezzo
mancante, disabilito la comunicazione col server e mi concentro
nell'iniettare il codice che carica il pezzo mancante dal supporto su
cui � salvato.

cui � salvato.
Guarda, e' molto semplice: tu ti connetti al mio server e mi mandi il
tuo unique ID.
Io lo cerco nel mio DB.
Non lo trovo.
Non ti mando niente.
Fine del gioco. E ci sono decine e decine di applicazioni non crackate
che funzionano cosi'.
Scenario 2:
Ti mando la parte anche se so che il tuo non e' un ID legittimo.
Poi dopo un tot ti blocco l'applicazione.
Scenario 3:
Ti mando la parte anche se so che il tuo non e' un ID legittimo.
Ma te ne mando una che funziona in modo diverso e che ti tento in
tanto ti freeza il tuo PC/iPhone/vattelappesca.
E via dicendo.
Poi l'idea e' che piu' check metti anche all'interno della logica del
programma, piu' difficile diventa crackare il programma.
Fino al punto che uno semplicemente dice: non ne vale la pena, vado a
crackare aqualcosaltro.


che ti tento in tanto
^^^^^^^^^^^^^^di tanto in tanto.


 
Secondo me bisogna considerare anche gli scenari 4 e 5:
Scenario 4:
Per un qualche motivo il tuo sistema è convinto che l'ID non sia 
legittimo e quindi provoca i blocchi/freeze descritti dai punti 2/3 ma il 
cliente è legittimo e si accorge delle tue malefatte. Ti lascio 
immaginare le grane e la pubblicità che riceverai da un tale cliente.
Scenario 5:
l'utente ha problemi di connessione e non può usare l'applicazione che ha 
regolarmente acquistato perché questa non può verificare se è 
"legittima".
Se questo problema si traduce in un mancato guadagno è probabile che ti 
venga chiesto un risarcimento per i danni subiti.
Senza contare tutti gli utenti che, per motivi di sicurezza (o 
tecnologici), utilizzano i pc senza la connessione ad Internet e che non 
potranno essere tuoi clienti.
Personalmente, da alcuni anni ho deciso di intraprendere strategie 
differenti: abbassare il prezzo il più possibile, inserire direttamente 
nel programma i dati sul cliente che lo ha acquistato e metterli in bella 
mostra. Al limite imporre all'utente di fare una telefonata per 
comunicare un codice visualizzato dal programma ed ottenere il 
corrispondente codice da inserire per completare l'installazione. Però, 
una volta installato il programma deve funzionare senza infastidire 
ulteriormente l'utente.
Un altro sistema che utilizzo sono le chiavette hardware, ma solo per 
applicativi il cui prezzo ne giustifichi il costo.
Jodi

Jodi
Il mio discorso partiva dalle considerazioni sulla piattaforma iPhone
che per sua natura e':
Identificabile univocamente
Always on
Le protezioni le puoi implementare in maniera piu' o meno drastica,
piu' o meno soft.
In linea di principio concordo con le tue considerazioni, in pratica
il tasso di pirateria e' altissimo (>75%) anche per applicazioni che
costano 99c.
A questo punto tanto val scrivere applicazioni e giochi gratuiti e
cercare di vivere di sponsorizzazioni e advertisement (tipico del
mercato dei videogiochi in flash).
Se vogliamo parlare di PC, mi ricordo di un paio di casi (Mass
effects, Batman Arkham asylum) nei quali usare una versione pirata era
talmente una rottura di palle che probabilmente molti avranno comprato
l'originale.
Ovviamente ci sono anche casi in cui chi ha comprato l'originale e'
dovuto ricorrere all'uso di un crack per giocare in santa pace.
Sono due rovesci della medaglia ed e' argomento costante di
discussione tra gli sviluppatori indipendenti.
Alla fine molti dicono: il programma/gioco non e' protetto, ma il
prezzo penalizza l'utente onesto perche' e' calcolato in base al
livello di pirateria medio che vedo nelle pie applicazioni.
In pratico lo sviluppatore dice: per 1000 copie voglio che mi entrino
X soldi, quindi il prezzo per singola applicazione considerando un
tasso di pirateria dell'ottante percento e' Y.
Saluti.


 mercato dei videogiochi in flash).
leggo su wikipedia che farmville ha 13 milioni di giocatori, con 50 milioni 
di giocatori attivi al mese; con gli introiti di adsense (o altra 
pubblicit�) immagino se ne ricavi una cifra importante 

 notte dei tempi.
anche la mafia quindi sarei giustificato a chiedere a tutti i pensionati
della zona 100 euro la settimana senn� "ti do fuoco all'orto" tanto che
faccio di male la mafia esiste dalla notte dei tempi.

 No, per� sarebbe folle pensare di eliminarla completamente.
ah beh! mi sa che sul lato prettamente non tecnico c'� poco da discutere
abbiamo idee totalmente opposte. :)

 Diciamo che chi specula con me non va d'accordo.
Ma tu NON sei in stato di necessit�.
PaF



Se il CEO non dice fregnacce, Zynga investe 1 milione di dollari al
mese in pubblicita' per promuovere i suoi giochi.


 bonus e dei meriti lavorativi agli straordinari o alle ore lavorate?
Il bonus pu� essere una forma di premiazione nei confronti di chi lavora
bene, pur rimanendo nell'ambito delle 40 ore settimanali. Io l'ho vissuto
personalmente sia da dipendente, sia da consulente (l'ho scritto in
passato, una societ� per cui ho sviluppato software per conto di un cliente
mi ha riconosciuto un tot per la soddisfazione dello stesso).
PaF

 
ï¿½ il libero mercato... oltretutto in una cittï¿½ dove anche un monolocale
puï¿½ costare 200mila euro ï¿½ ovvio che il proprietario non lo affitterï¿½
mai 250euro altrimenti sarebbe un investimento del cazzo; con imprevisti
e tutto il resto su un immobile dato in affitto devi recuperare almeno
un interesse del 4% annuo.
da cui 200mila X 4% => 8mila / 12 => arrotondiamo a 650ï¿½ mese,
oltretutto ci sono anche altri costi da considerare ma io l'ho fatta
semplice.
A te fa incazzare che gli altri per avere qualcosa di piï¿½ siano disposti
a sacrificarsi un po.