Dark side tale
Compro una scheda hardware di cui mi
riprometto di condividere maggiori dettagli e che viene venduta in due bundle diversi.
1. Scheda + Applicazione A
2. Scheda + Plugin per applicazione B
Siccome mi interessa tantissimo il secondo bundle, comincio ad informarmi su come comprarlo. Sul mercato americano non è mai comparso. Sembra disponibile forse in Giappone ed è in vendita al pubblico in Australia, ma il negozio online non sembra voler spedire verso gli Stati Uniti.
Navigo sul sito dell’azienda che produce la scheda scoprendo che il bundle B è abbastanza supportato, infatti è possibile scaricare un aggiornamento che però richiede che la versione precedente sia già attivata. È giusto, non mi oppongo anche se mi da un po’ fastidio il fatto che non riesca a poter comprare quello che voglio. Scompatto ed installo l’aggiornamento e scopro l’esistenza di una fantomatica libreria “ApplicazioneA.Dll”, ovvero il plugin venduto da una società terza usa codice di chi ha scritto l’applicazione A in licenza per poter implementare il plugin per B. Ad occhio e croce il formato del codice seriale, 6 gruppi alfanumerici di quattro cifre, sembra essere identico con quello dell’Applicazione A. Nel frattempo scopro l’esistenza di un’offerta limitatissima per il bundle numero 1. Mi azzardo, provo, ricevo.
Tento di usare il PID dell’applicazione A con il plugin B ma non funziona. Ogni volta che il plugin viene lanciato parla con un server internet per chiedere se la chiave è valida. La cosa mi infastidisce tanto, saranno pure cacchi miei quando e come voglio lanciare l’applicazione/plugin? Ci attacco un proxy, guardo la connessione HTTP (che tapini, manco usare SSL per questo tipo di dialogo) e sorpresa il plugin B parla con i server dell’applicazione A.
Mi incazzo, hanno abbondantemente gonfiato le siffatte ciufole. È ora di adattare il software alle _MIE_ esigenze. Tento di carpire come comunicano client e server sperando di usare il trucco del proxy ma c’è bisogno di una attivazione riuscita per tentare un replay attack. Guardare codice in assembler e cercare di fare il reverse engineering di quale sia il messaggio di sblocco non è più alla mia portata; tra l’altro penso che un replay attack non è il modo più semplice per riattivare il software qualora dovesse servire. Tento disperatamente la patch binaria, non saranno mica così pirla da non aver perlomeno da qualche parte “firmato” il codice tramite una banale checksum.
Trovo un pezzo di codice che fa più o meno questo:
int EAX = 0;
EAX = Call_ProceduraMisteriosaX();
if (EAX == 0)
{
return 0;
}
EAX = Call_ProceduraMisteriosaY();
if (EAX == 0)
{
return 0;
}
EAX = Call_GetPointerForError(EAX);
return EAX;
Sostituisco i due if(EAX == 0) con return 0; in assembler equivale a sostituire TEST EAX, EAX con XOR EAX, EAX. Ovvero rimpiazzare due volte l’opcode 33 (TEST) con l’opcode 85 (XOR), cambiando lo stato di 10 bit in tutto su una ventina di milioni.
Sono scettico ma funziona molto bene.
La coscienza? È a posto. Il prezzo dei due bundle è identico. L’applicazione A non mi interessa. Ho cercato in tutti i modi di comprare il secondo bundle senza successo; e dal punto di vista economico non mi sembra di danneggiare nessuno, visto che la distribuzione degli introiti dei due bundle sembra essere la stessa. E a suggerirlo c’è il fatto che l’azienda di B distribuisca un’applicazione a riga di comando simile all’applicazione A in maniera totalmente gratuita. Sinceramente certe manovre distributive tafazzi-style mi lasciano completamente allibito; nel frattempo s’è fatta ora di tornare al lavoro di tutti i giorni nel bright side.
-quack
Potrebbero interessarti anche:
- Windows Live Writer plugin: footnote
- Tor exit node lookup in ASP.Net
- Regex & Lambda
- Expression Tree
- Tricky questions


Facebook,
Wikio,
Segnalo.

lunedì 8 febbraio 2010 alle 8:59 PM -
Per farti perdonare come minimo dovresti creare un crack con tanto di mod di star wars, faccione dell'imperatore Palpatine che ride e spedire tutto su cr.cks.am
Permalink
martedì 9 febbraio 2010 alle 1:56 AM -
In Italia se fotocopi un libro che non è in commercio piu' non costituisce reato (non arrechi danno all'autore)... Non so se la stessa cosa valga per le applicazioni, e non so se negli USA ci sia qualche legge simile...
Solo una curiosità: come li hai trovati quei dieci bit su circa venti milioni?!? Tutte le volte che ho provato a fare cose simili mi sono perso nel disassembly
Permalink
martedì 9 febbraio 2010 alle 2:08 AM -
@zakk:
Ho usato PE Explorer, sono partito dalla stringa contenente il messaggio di errore e sono andato indietro. PEE è abbastanza evoluto da riconoscere Jump Tables e ne ho trovata una piena di puntatori a codice che restituivano codici di errore negativi (ed infatti il plugin segnalava errore -620) vicino all'unica referenza alla stringa. Indietro, indietro, pum!
Permalink
martedì 9 febbraio 2010 alle 11:16 AM -
Tu sei un pazzo
Permalink
mercoledì 10 febbraio 2010 alle 12:28 AM -
Devo ricordarmi di riprenderlo, mi ha sempre fatto un'ottima impressione quel software. Anche io ho l'assembler un po' arrugginito, mi hai fatto venire voglia di rinfrescarlo, grazie Paperino!
Permalink
mercoledì 10 febbraio 2010 alle 3:49 AM -
Ora provo a scaricare PE Explorer... Thanks!
Permalink