Applicazioni a Pagamento anche in Italia con MarketEnabler

3 Maggio 200958 commenti

Attenzione: Questa applicazione permette solamente l'accesso al market a pagamento e non incitiamo in nessun modo l'utilizzo di tale applicazione per scopi illeciti o fraudolenti.

Come preannunciato oggi lanceremo l'applicazione che aiuterà tutti quelli che si ritrovano in una zona del mondo dove non è concesso scaricare applicazioni a pagamento dall'Android market. Se ci seguite frequentemente ( e se non lo fate forse è il caso di cominciare ;) ) saprete che ieri abbiamo lanciato una preview dell'applicazione e di quello che farà.. Ma rivediamolo anche qui:

Gli Artefici

Partiamo con presentare Tim Strazzere, un amico americano ( in realtà ho scoperto da poco che ha origini siciliane ) , che scrive articoli interessantissimi sul reversing di applicazioni e di sistemi di controllo dentro android. (link al blog) Il suo articolo bomba fu uno che riguardava il reversing del market..  Contattandolo scoprii che stava lavorando ad uno scraper del market. A questo punto avvenne il nostro incontro su gtalk .. Io gli rompevo le scatole e lui mi sopportava ;) L'altro artefice di quest'applicativo sono io Andrea Baccega che si era assolutamente annoiato di chiedere sempre al suo amico d'oltre oceano se poteva procurargli le applicazioni a pagamento da poter recensire.


Il metodo

Io e Tim ci siamo messi al lavoro per trovare il modo di abilitare il market a pagamento anche in italia. Prima di esporvi il metodo e le soluzioni adottate, vorrei farvi capire come siamo arrivati a produrre queste idee di risoluzione.

Per poter mettere mano a quello che il market restituiva bisognava capire come lavora e che tipologia di dati si scambia con i servers di google. Non è bastato un semplice sniff dei pacchetti facendo un semplice MITM.. Come ci si potrebbe aspettare i dati scambiati non sono in  chiaro..

A questo punto, se volevamo capire che cosa si stava dicendo android e google, dovevamo reversare il market e capire esattamente quale funzione si occupava della codifica e quale della decodifica.. Ma cosa ancora più importante era capire che cosa facevano questi due metodi.

Con sorpresa abbiamo scoperto che i metodi di codifica e decodifica utilizzati sono ampiamente documentati ed è la Base64.decodeWebSafe e la Base64.encodeWebSafe .. Entrambi dispobili nelle google data api.

Una volta sniffati e decompressi un buon numero di pacchetti abbiamo trovato essenzialmente alcuni dati che sapevamo di dover cambiare:

  • Nome dell’operatore ( che nel caso mio era Vodafone IT e Strazzere aveva T-Mobile)
  • Numero dell’operatore ( che nel caso mio era 22210 e invece quello corretto era 31026 ) ( Per chi volesse sapere il numero dell’operatore è composto da MCC+MNC )

Secondo le nostre ipotesi infatti, semplicemente cambiando ogni occorrenza di questi valori, avrei potuto leggere il market a pagamento.

Dopo un piccolo BrainStorming abbiamo ipotizzato alcune strade:

  1. Intercettare il pacchetto e cambiarlo onthefly ( Costoso e richiedeva troppo tempo )
  2. Cambiare il core di android che gestisce le chiamate ad internet.
  3. Cambiare il core di android che gestisce il nome e il numero dell’operatore.

Framework.jar

Di primo acchito mi sono subito messo all’opera per ricompilare interamente android e creare una patch che avrebbe dovuto gestire e restituire i valori t-mobile invece di quelli vodafone..

Sebbene questa procedura sia stata lunga e dolorosa lungi da me rompervi con altri dettagli.. Per quei pochi curiosi, ho dovuto cambiare ServiceState ( è facile intuire dove).

Una volta ricompilato android con le modifiche abbiamo incrociato le dita e con qualche sforzo sono riuscito a far girare la mia versione di android su una thedude patchata.

A nostra sorpresa però l’enorme lavoro non è bastato poichè il market non utilizzava solamente la classe ServiceState e infatti metà dati erano italiani e metà americani.. La soluzione perciò era un altra..

Setprop

Nella versione modificata di thedude ho voluto effettuare un ultimo test. Per chi non lo sapesse android ha una lista di (passatemi l’imprecisione) variabili globali che sono nella realtà delle proprietà.

Alcune di queste proprietà sono scrivibili mentre altri sono solamente readOnly. Attraverso alcuni comandi di bash abbiamo scoperto che la mia modifica non cambiava alcune proprietà e dovevano essere cambiate manualmente atraverso la shell..

Dopo alcuni tentativi ci siamo riusciti… E io vedevo le applicazioni a pagamento!!!.. A questo punto Tim mi dice:

“Vuoi vedere che senza la tua patch di framework.jar e solamente utilizzando opportunamente setprop riesci ad avere il market a pagamento?”

Presto fatto, ho scaricato l’ultima versione di android dell’intramontabile JesusFreke e l’ho flashata sopra a tutto il lavoro che avevo appena fatto ( ovviamente facendo un bel nandroid backup ) ..

Apro la jf faccio il login, effettuo tutti i comandi di setprop e provo il market… … … Funziona!!!

Il risultato di questa scoperta è che tutte le idee che ci eravamo fatti, tutto il brainstorming operato è stato inutile, la soluzione ai nostri problemi era così semplice che nessuno dei due ci aveva  pensato .. Almeno non fino alla fine :P

Inoltre, questa ultima soluzione permette di non essere firmware dipendenti.. Se fosse stata necessaria la patch a framework.jar la soluzione sarebbe stata applicabile solamente ad alcuni firmware.

L’applicazione

Bando alle ciance e parliamo dell’applicazione , del suo utilizzo e del disclaimer.

Disclaimer

  • Come al solito, io non sono responsabile dell’utilizzo che ne farete, la mia applicazione vuole solo essere un Proof Of Concept e abilitare la possibilità ( Ancora limitata ) di vedere le applicazioni a pagamento.. Anche in Italia.
  • Se utilizzando l’applicazione combinerete qualche casino non mi ritengo responsabile.
  • L’applicazione sarà a breve rilasciata sotto GPL ( appena trovo 10 minuti per sincronizzare eclipse. )
  • Attenzione: Questa applicazione permette solamente l’accesso al market a pagamento e non incitiamo in nessun modo l’utilizzo di tale applicazione per scopi illeciti o fraudolenti.

Come utilizzare l’applicazione

L’applicazione ha solamente 2 bottoni ;) uno a destra e uno a sinistra..

  • Il Bottone di Sinsitra abilita il market.
  • Il bottone di destra ripristina i valori normali ( in caso qualche applicazione riscontri dei problemi dopo la modifica al market ).

Più facile di così ;)

Nota: Ad ogni riavvio bisogna aprire la applicazione per abilitare la prima volta il market.

Download di Market Enabler

L’applicazione può essere scaricata da qui.

Installazione dell’applicazione

Per installare l’applicazione dovrai semplicemente lanciare il comando

adb install MarketEnabler.apk

o dal browser di android visitate questo link : http://tinyurl.com/marketenabler

Per problemi con la applicazione, riferitevi al nostro forum!

Donazioni: Le donazioni sono sempre ben accette! Pubblicheremo inoltre al più presto un elenco di tutti i donatori che credono nel nostro lavoro.

Per donare (anche 1€), clicca qui.

CopyRight

Potete copiare o prendere spunto da quest’articolo e ridistribuire l’app ( che verrà presto ridistribuita in GPL ) purchè venga citata la fonte dell’articolo e che il download link non venga cambiato.

English: You could copy/translate this post or redistribute the app ( which will be soon released under GPL )  but you’ve to cite this post and do not change the download link of the app.

Nota

Per utilizzare il market a pagamento dovrete registrarvi un account su google checkout. Google Checkout è una piattaforma di pagamento sicuro simile a paypal.

Per farlo usate il browser del vostro pc e puntatelo qui. Le istruzioni di google vi guideranno passo passo ;)

English Version of this Post

Probably androidiani.com Staff will release an english version of this post.. Otherwise, if Tim Strazzere will do it, we will cite them.  So stay Tuned ;)

Loading...
WP Facebook Auto Publish Powered By : XYZScripts.com