Blog (218)
Komentarze (4k)
Recenzje (1)

Jak obejść ograniczenia Sklepu Windows Phone?

Strona główna@djfoxerJak obejść ograniczenia Sklepu Windows Phone?
19.08.2013 18:14

Każdy z producentów ma własne unikalne aplikacje w sklepie Windows Phone, co więcej, ograniczone często do konkretnych modeli urządzeń (np. Nokia Pro Cam ograniczona do modeli 92x i 1020). Zatem teoretycznie nie zainstalujemy aplikacji od Noki na HTC i na odwrót, także dedykowanej aplikacji do zdjęć dla Lumii 920 nie pobierzmy na Lumię 820. Okazuje się jednak, że można to w prosty sposób obejść, bez magicznej wiedzy.

Przygotowania do pracy

Aby móc działać w jakikolwiek sposób, należy pobrać program Fiddler. Dzięki tej aplikacji będziemy w stanie monitorować ruch jaki generuje nasze urządzenie z Windows Phone. Kiedy już zainstalujemy Fiddlera, czas na konfigurację:

bEEwLCUT

[list] [item]Musimy sprawdzić nasze IP, na którym zainstalowany jest Fiddler. Najszybciej wykonamy to z linii poleceń. Skrótem Windows+R otwieramy okno Uruchamianie, wpisujemy w nim cmd, aby uruchomić linię poleceń. Wpisujemy komendę ipconfig i sprawdzamy nasz adres IP.

479698

[/item][item]Komputer, na którym jest Fiddler, pełnić będzie rolę proxy. Zatem ustawmy w Windows Phone odpowiednie opcje. Połączmy się z sieci WiFi (w której już jest obecny komputer z Fiddlerem) i poprzez przytrzymanie palca na nazwie sieci, dodajmy proxy.

107222
107223

Adres IP ustawimy taki, jaki jest na komputerze z Fiddlerem, zaś nr portu wpisujemy: 8888 (domyślnie dla Fiddlera).

bEEwLCUZ

[/item][item]Czas na uruchomienie Fiddlera. W menu opcji Tools->Fiddler Options... w zakładce Connections, zaznaczyć należy Allow remote computers to conect.

479705

[/item] [/list]

Analiza podglądu

Już na tym etapie wszelki ruch sieciowy wykonywany z poziomu telefonu, powinien być wychwytywany przez Fiddlera (jeśli tak nie jest, sprawdź czy opcja File->Capture Traffic jest zaznaczona). Warto teraz wyczyścić okno Fiddlera (ikona krzyżyka i wybieramy Remove all).

bEEwLCVa

Wejdźmy na urządzeniu z Windows Phone do Sklepu i wybierzmy jakąś aplikację do wyświetlenia. W oknie Fiddlera pojawi się m.in. log z hostem marketplaceedgeservice.windowsphone.com. Jest to link, który został wysłany ze smartofnu do Sklepu. Zobaczmy jak wygląda taki przykładowy adres:

http://marketplaceedgeservice.windowsphone.com/v8/catalog/apps/9c3e8cad-6702-4842-8f61-b8b33cc9caf1?os=8.0.10211.0&cc=PL&oc=&lang=pl-PL&hw=50700000&dm=RM-825_eu_poland_295&oemId=NOKIA&moId=&cf=00-0

Szybko zauważymy:

  • ID aplikacji (to ten długi GUID).
  • Wersję systemu urządzenia - znacznik os
  • Język i region - znacznik cc i lang
  • Wersję sprzętu - znacznik hw
  • Wersja firmwareu (określa model urządzenia i operatora) - znacznik dm
  • Producent/OEM - znacznik oemId
bEEwLCVb

Oczywiście to nie wszystkie parametry, jakie są wysyłane, ale te które na daną chwilę mogę się nam przydać.

Jak podmienić wartości?

Wiemy już jak wygląda link do Sklepu i co w nim jest przesyłane. Jak teraz w locie podmienić wartości na takie, jakie zechcemy ustawić? Użyjemy tu Fiddlera. Można to osiągnąć w dwojaki sposób. Z poziomu GUI (zakładka AutoResponder i ustawienie reguł) lub w skrypcie. Opcja pierwsza jest najprostsza, ale najmniej uniwersalna i konfigurowalna, druga zaś ma większe możliwości i nią się właśnie zajmiemy:

[list] [item]Skrótem Ctrl+R otwieramy plik z regułami dla Fiddlera.[/item][item]Znajdujemy linijkę: [code=c#]static function OnBeforeRequest(oSession: Session) {[/code] [/item][item]za tą linijką wklejamy kod:

bEEwLCVc

[code=c#]if(oSession.uriContains("_ORG")) { oSession.url = oSession.url.Replace("_ORG"","_ZMIANA"); }[/code]

Powyższy kod sprawdza, czy w url znajduje się szukany ciąg, jeśli tak jest, podmienia go.

_ORG jest szukanym elementem w stringu, _ZMIANA to wartość na jaką chcemy zamienić.

[/item][item]Po edycji zapisujemy plik.[/item][/list]

Wykorzystanie

Znamy wygląd url wysyłanego do Sklepu oraz z czego się składa, teraz przyszedł czas na kilka przykładów wykorzystania tej wiedzy.

Pobieranie aplikacji OEM od innego producenta, niż producent urządzenia

Sprawa jest prosta. Posiadamy np. Lumię od Nokii, a chcemy pobrać aplikację Photo Enhancer, która dedykowana jest tylko dla urządzeń od HTC. Naszym celem jest podmiana producenta OEM, jaki jest doklejany do url. Oto co należy zrobić:

[list] [item]Wykonać wszystkie kroki opisane w punkcie Przygotowania do pracy[/item][item]W kodzie z punktu Jak podmienić wartości? ustawiamy:

  • _ORG - NOKIA
  • _ZMIANA - HTC

[/item][item]Wchodzimy bezpośrednio do Sklepu z linku: Photo Enhancer [/item][item] Otwiera się okno Sklepu...

107225
107226

... i instalujemy aplikację. [/item][/list]

Dla ułatwienia podaję listę z linkami aplikacji od konkretnych producentów:

Instalacja aplikacji dostępnych tylko dla określonych urządzeń

Na pewno wszyscy kojarzą aplikację Nokia Pro Cam, która wraz z aktualizacją Amber, została udostępniona tylko dla urządzeń Lumia z serii 92x oraz 1020. Nic nie stoi jednak na przeszkodzie, aby pobrać Nokia Pro Cam np. na Lumię 820. W tym celu, podmienimy model urządzenia, jaki przesyłany jest w url. Poszczególne etapy wyglądają następująco:

[list] [item]Wykonać wszystkie kroki opisane w punkcie Przygotowania do pracy[/item][item]Zapisujemy nazwę firmwareu urządzenia. Można to zrobić poprzez analizę linka wysyłanego do Sklepu lub prościej, w opcjach: Ustawienia->info+dodatki, klikamy na więcej i spisujemy nazwę z pola Manufacturer Name.[/item][item]W kodzie z punktu Jak podmienić wartości? ustawiamy:

  • _ORG - nazwa_z_manufacturer_name
  • _ZMIANA - RM-877_nam_att_205 (będziemy przestawiać się jako Lumia 1020 od ATT)

[/item][item]Wchodzimy bezpośrednio do Sklepu z linku: Nokia Pro Cam [/item][item] Otwiera się okno Sklepu...

107227
107228

... i instalujemy aplikację. [/item][/list]

Kilka uwag

W ten sposób mamy dostęp do wszelakich aplikacji umieszczonych w Sklepie Windows Phone. Na koniec kilka uwag i porad:

  • Niektóre aplikacje (jak Hub od HTC z zegarkiem w kafelku) wymagają dodatkowych sterowników/plików, stąd nie będą w pełni funkcjonalne na innych, niż dedykowane urządzenia.
  • W ten sposób można również mieć dostęp do aplikacji ograniczonych przez region/język. Wówczas należy ustawić proxy na zagraniczne (może być niebezpieczne!).
  • Internet Explorer i Sklep na Windows Phone posiadają cache z wynikami zwracanymi z serwera, stąd podmiana nie zawsze będzie natychmiast widoczna.
  • W edytowany pliku w Fiddlerze można dodawać własny kod w C#.
  • Pamiętajmy, aby wyłączyć proxy po zakończonej pracy!

Miłego grzebania! :)

bEEwLCVP