Jak obejść ograniczenia Sklepu Windows Phone?


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ę:

  • 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.

desk

  • 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.

desk [join] desk

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

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

desk

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 ).

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

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:

  • Skrótem Ctrl+R otwieramy plik z regułami dla Fiddlera.

  • Znajdujemy linijkę:
    static function OnBeforeRequest(oSession: Session) {
    
  • za tą linijką wklejamy kod:
if(oSession.uriContains("_ORG"))
{
	oSession.url = oSession.url.Replace("_ORG"","_ZMIANA");
}

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ć.

  • Po edycji zapisujemy plik.

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ć:

  • Wykonać wszystkie kroki opisane w punkcie Przygotowania do pracy

  • W kodzie z punktu Jak podmienić wartości? ustawiamy:

  • _ORG - NOKIA

  • _ZMIANA - HTC

  • Wchodzimy bezpośrednio do Sklepu z linku: Photo Enhancer

  • Otwiera się okno Sklepu…

desk [join] desk

… i instalujemy aplikację.

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:

  • Wykonać wszystkie kroki opisane w punkcie Przygotowania do pracy

  • 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 .

  • 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)

  • Wchodzimy bezpośrednio do Sklepu z linku: Nokia Pro Cam

  • Otwiera się okno Sklepu…

desk [join] desk

… i instalujemy aplikację.

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! :)