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.
[ad#ad-androidiani-1]
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:
- Intercettare il pacchetto e cambiarlo onthefly ( Costoso e richiedeva troppo tempo )
- Cambiare il core di android che gestisce le chiamate ad internet.
- 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 ;)
+1 for English version.
+1 for English version.
ho appena comprato “documents to go”.
Grandi Ragazzi!!!
ho appena comprato “documents to go”.
Grandi Ragazzi!!!
bravi jesolani! me piase
bravi jesolani! me piase
[…] to rephrase things to make a little more sense in English. For the original article (Italian) go to androidiani.com and for the translated (via google-translate) go here translated […]
English version is up andrea!
http://strazzere.com/blog/?p=255
English version is up andrea!
http://strazzere.com/blog/?p=255
[…] For the originale article go here. […]
[…] Vía Androidiani […]
scusate, ma comprare dal market è lecito o si può solo osservare senza comprare nulla?
scusate, ma comprare dal market è lecito o si può solo osservare senza comprare nulla?
Grazie mille ragazzi per il vostro lavoro… Siete bravissimi!!!
Una domanda stupida… ma i soldi se li prendono dall’account di google o dalla scheda?
Grazie mille ragazzi per il vostro lavoro… Siete bravissimi!!!
Una domanda stupida… ma i soldi se li prendono dall’account di google o dalla scheda?
Complimenti per questa applicazione!
Complimenti per questa applicazione!
Ho segnalato l’articolo inglese ad hackaday.com , direi che merita :)
Ho segnalato l’articolo inglese ad hackaday.com , direi che merita :)
@65paul: non si sa se sia lecito o meno, però è google che fa affari così :)
@emuboy: tnx :) speriamo ci linkino lol
[…] info: Purchase applications outside of the authorized zones (Strazzere.com) Originele tekst: Androidiani.com (Italiaans) Vorige […]
@65paul: non si sa se sia lecito o meno, però è google che fa affari così :)
@emuboy: tnx :) speriamo ci linkino lol
Davvero un’applicazione unica, sono fiero che sia partita dal caro Andrea!
Davvero un’applicazione unica, sono fiero che sia partita dal caro Andrea!
[…] (o tiksliau vienas italas, kuriam padejo amerikietis), kurie sugebėjo parašyti programą (originalus postas originalo kalba) atrakinančią mokamas programas Market’e :) Žinoma, UI nėra pats gražiausias, bet ne […]
Ciao a tutti, vi seguo da quando ho cominciato a lavorare con la piattaforma Android, e mi sembrava assurdo che non fosse possibile utilizzare il market in Italia!
Grazie a questa applicazione, il problema sembra bypassato, complimenti a tutti.
Approfitto per dirvi, se ne avete voglia, di dare uno sguardo alla pagina web (http://www.araneum.it/android/) che illustra le funzionalità dell’applicazione che ho sviluppato, basata sulla gestione degli onomastici.
L’applicazione è acquistabile sul market e si chiama “Name Day” (Onomastici) al costo di 2 US$.
Grazie dell’ospitalità
Rolando Ramieri
Ciao a tutti, vi seguo da quando ho cominciato a lavorare con la piattaforma Android, e mi sembrava assurdo che non fosse possibile utilizzare il market in Italia!
Grazie a questa applicazione, il problema sembra bypassato, complimenti a tutti.
Approfitto per dirvi, se ne avete voglia, di dare uno sguardo alla pagina web (http://www.araneum.it/android/) che illustra le funzionalità dell’applicazione che ho sviluppato, basata sulla gestione degli onomastici.
L’applicazione è acquistabile sul market e si chiama “Name Day” (Onomastici) al costo di 2 US$.
Grazie dell’ospitalità
Rolando Ramieri
Hy Tim
I would be interested to extend this hack to the german market.
Would be cool to have an app that could switch between different markets.
You wrote that you will publish your code as GPL, are you still going to do that?
regards rac
Hy Tim
I would be interested to extend this hack to the german market.
Would be cool to have an app that could switch between different markets.
You wrote that you will publish your code as GPL, are you still going to do that?
regards rac
rac, i’m sorry … I’m andrea not Tim. And I developed the app named MarketEnabler..
Tim is a co-worker on the idea behind.
Plus, the app will work fine on the german market too. Bye
rac, i’m sorry … I’m andrea not Tim. And I developed the app named MarketEnabler..
Tim is a co-worker on the idea behind.
Plus, the app will work fine on the german market too. Bye
Sorry Andrea… I meant you… was reading both posts at the same time and messed up the Authors ;-)
First, thank you a lot for your effort… I’m from CH and there we dont have market access so I had to install pirated apps :-/
But with your hack I actually could buy all this apps so developer will be pleased from your app too ;-)
As I understood the market takes some values (MCC, MNC, …) and makes a client footprint with it to identify the target market… your application just changes this values that the market gets a footprint from a US T-Mobile and opens the US/UK Market.
What my question was about is about:
Certain apps are just on german market, as example RadAlert wich is protected but free app on german market.
My idea was that your app could be extended to fake a DE T-Mobile footprint to get access to local apps.
regards rac
Just saw the post from tim about manually doing it… will write you the german values when I have it ;-)
I posted the values at xda dev (http://forum.xda-developers.com/showpost.php?p=3740019&postcount=23)
small bug in your code:
gsm.operator.alpha and setprop gsm.sim.operator.alpha will stay with US on reset in the app but restored on reboot
Sorry Andrea… I meant you… was reading both posts at the same time and messed up the Authors ;-)
First, thank you a lot for your effort… I’m from CH and there we dont have market access so I had to install pirated apps :-/
But with your hack I actually could buy all this apps so developer will be pleased from your app too ;-)
As I understood the market takes some values (MCC, MNC, …) and makes a client footprint with it to identify the target market… your application just changes this values that the market gets a footprint from a US T-Mobile and opens the US/UK Market.
What my question was about is about:
Certain apps are just on german market, as example RadAlert wich is protected but free app on german market.
My idea was that your app could be extended to fake a DE T-Mobile footprint to get access to local apps.
regards rac
Just saw the post from tim about manually doing it… will write you the german values when I have it ;-)
I posted the values at xda dev (http://forum.xda-developers.com/showpost.php?p=3740019&postcount=23)
Android market switch…
So bekommt man Zugriff auf den US oder den DE paid market
Das reverse engineering wurde von Tim und Andrea gemacht, Andrea hat auch die Market enabler app geschrieben die den US market freischaltet.
US market (T-Mobile)
Danke an Tim (strazzere im x…
small bug in your code:
gsm.operator.alpha and setprop gsm.sim.operator.alpha will stay with US on reset in the app but restored on reboot
Are you sure rac?… This is strange because it’s working for me…
Are you sure rac?… This is strange because it’s working for me…
[…] QUI l’ articolo originale […]
I didn’t checked every time (just once) but on reboot the values are ok so nevermind but still strange.
Maybe some shell command you dropp of didn’t return well?
Anyway, I wrote a little shell script to select different markets, you can find it on my site.
with my sh script its working fine so I guess Dalvik VM somehow terminates the command…
with the script it always done in 2 sec but with your app it depends… sometimes 2 sec and sometimes I waited a minute and if I had luck it didn’t force close.
How are you dropping the shell commands?
I think it must hang in there somewhere
I didn’t checked every time (just once) but on reboot the values are ok so nevermind but still strange.
Maybe some shell command you dropp of didn’t return well?
Anyway, I wrote a little shell script to select different markets, you can find it on my site.
Yes rac, Probably i don’t get the correct values..
This is strange…
Yes rac, Probably i don’t get the correct values..
This is strange…
with my sh script its working fine so I guess Dalvik VM somehow terminates the command…
with the script it always done in 2 sec but with your app it depends… sometimes 2 sec and sometimes I waited a minute and if I had luck it didn’t force close.
How are you dropping the shell commands?
I think it must hang in there somewhere
Raga ma è uscita la nuova versione? Perchè aTrackDog mi dice che c’è la versione 2.0
Dove la trovo?
Raga ma è uscita la nuova versione? Perchè aTrackDog mi dice che c’è la versione 2.0
Dove la trovo?
AIUTO! ciao io abito in svizzera e sono presso l’operatore swisscom. Ho il problema dell’APD che a ogni riavvio si reimposta e non ho più le app a pagamento. I dati dell’APN sono:
Nome Swisscom
APN gprs.swisscom.ch
Proxy Non impostato
Porta Non impostato
Nome Non impostato
Passwd Non impostato
Server Non impostato
MMSC null
ProxyM Non impostato
PortaM Non impostato
MMC 228
MNC 01
Tipo default
Potresti aggiungerlo alla versione Beta per favore?
AIUTO! ciao io abito in svizzera e sono presso l’operatore swisscom. Ho il problema dell’APD che a ogni riavvio si reimposta e non ho più le app a pagamento. I dati dell’APN sono:
Nome Swisscom
APN gprs.swisscom.ch
Proxy Non impostato
Porta Non impostato
Nome Non impostato
Passwd Non impostato
Server Non impostato
MMSC null
ProxyM Non impostato
PortaM Non impostato
MMC 228
MNC 01
Tipo default
Potresti aggiungerlo alla versione Beta per favore?
[…] a meno che non abbiate un dispositivo rooted . In questo caso potrete scaricare la mia applicazione Market Enabler, che modifica i parametri del market facendo credere a google che abitiamo in […]
L’applicazione sembra essere veramente bella ma sul mio Hero ottengo il seguente errore We got an error Houston.
Vi sono solozioni per questo?
L’applicazione sembra essere veramente bella ma sul mio Hero ottengo il seguente errore We got an error Houston.
Vi sono solozioni per questo?
ragazzi io ho un htc tim non ancora flashato.. market enabler però non funziona, non trovo nulla a pagamento!
colpa del mio magic ancora originale tim?
ragazzi io ho un htc tim non ancora flashato.. market enabler però non funziona, non trovo nulla a pagamento!
colpa del mio magic ancora originale tim?