kozarovv | 3 września 2016, 14:11

Henkaku!

Henkaku, co to właściwie jest? Henkaku to w wolnym tłumaczeniu Rewolucja. Henkaku to w tym przypadku także zamierzona gra słów, ponieważ pierwszy człon słowa odnosi się do Homebrew ENabler. I właśnie tym jest Henkaku, gotowym rozwiązaniem pozwalającym posiadaczom konsoli Playstation Vita, oraz Playstation TV na uruchamianie niepodpisanego przez Sony kodu. 

Będzie trochę o zabezpieczeniach konsoli, trochę o tym co zdjęcie tych zabezpieczeń nam daje. Trochę o tym co Sony na tym traci, i czy aby na pewno. Nie zabraknie też małej dawki technikaliów i historii samego henkaku. Wpis jest wynikiem chwilowego nadmiaru wolnego czasu, i mam nadzieje że zainteresuje chociaż kilka osób.  

 Rewolucje czas zacząć.

Zacznijmy od początku, czyli od dnia 28 lipca 2016 roku. Kiedy na blogu Yifan Lu znanego z wcześniejszych eksperymentów z zabezpieczeniami konsol Sony, pojawia się wpis informujący o Henkaku. Programista obiecuje homebrew enabler dla każdej Vity. Mało tego, data kiedy projekt zostanie udostępniony to 29 lipiec 2016 roku. Dokładnie tak, zero zapowiedzi, zero wodzenia za nos miesiącami, jeden dzień i ruszamy. Z wpisu dowiadujemy się kto stoi za Henkaku, czteroosobowa grupa programistów "amatorów". Wszystkich ich tzw. szaro-strefowa scena Playstation znała z wcześniejszych dokonań, więc oczekiwania były spore. Davee twórca Infinity dla konsoli PSP. Yifan Lu twórca Rejuvenate pozwalającego na ograniczone używanie zasobów PS Vita na nasze potrzeby, oraz współtwórca bibliotek VitaSDK. xyz tak ja i poprzedni programiści miał już wcześniej swój udział w hackowaniu VityOraz proxima znany jeszcze z czasów hackowania pierwszego pspTych czterech developerów tworzy ekipę "molecule", twórców henkaku.

Dzień później dokładnie tak jak zapowiadano henkaku zostaje oddane w ręce programistów oraz użytkowników. Co wyróżnia ten exploit na tle poprzednich? Prostota użycia. Wchodzisz z poziomu przeglądarki internetowej konsoli na specjalnie spreparowaną stronę, i po chwili możesz korzystać z aplikacji homebrew. Początkowo wymagane było wejście na stronę za każdym razem kiedy wyłączyliśmy wcześniej konsolkę. Po czasie zostały udostępnione pliki pozwalające utworzyć własny serwer, to z kolei pozwoliło napisać aplikacje na androida pozwalającą odpalać henkaku "w biegu". Ale xyz po cichu działał dalej, tworząc "Offline Installer", chociaż bardziej pasuje tutaj nazwa offline aktywator. Połączenie z internetem od teraz wymagane jest tylko w momencie instalacji. Później exploit odpalamy już lokalnie, podobnie jak nietrwałą "przeróbkę" na leciwe już PSP. 

 

Jak to wszystko działa? 

Od strony technicznej henkaku to seria exploitów otwierających drogę następnym częścią tego łańcucha aż do uzyskania pełnej kontroli nad kernelem. Twórcy podzielili działanie exploita henkaku na trzy następujące po sobie części. Nie sposób zrozumieć jak działa hack bez sporej wiedzy technicznej, ja postaram się bardzo uprościć działanie oraz terminy użyte w poniższym tekście. Sam opieram się tutaj na ogólnie dostępnych materiałach opublikowanych przez twórców, i moich domysłach. Ponieważ sam nie posiadam odpowiedniej wiedzy, żeby zrozumieć w pełni działanie henkaku. Osoby z odpowiednią wiedzą techniczną, lub po prostu próbujące zrozumieć więcej zapewne znajdą w internecie bardziej obszerne teksty z tym związane. Natomiast osoby nie zainteresowane, następny akapit może trochę znudzić. Mimo to zachęcam do przeczytania.

Stage 1

Twórcy henkaku jako swój punkt wejścia obrali WebKit, silnik przeglądarki zastosowany w PS Vita oraz PSTV. Niewątpliwą zaletą webkitu jest to że jego licencja obliguje korzystające z niego firmy do publicznego udostępniania kodu źródłowego zastosowanej przez firmę wersji. Więc wszystkie przypuszczenia twórcy henkaku mogli sprawdzać także badając kod źródłowy. Za cel obrano firmware konsoli oznaczony numerem 3.60. I tylko na tej wersji firmware hack był, jest, i będzie dostępny. Vita korzysta z ASLR, zabezpieczenia które ma za zadanie umieszczać dane w losowym miejscu w pamięci ram (mocno upraszczam) tak żeby nie dało się zaatakować konkretnego adresu. Dane za każdym razem znajdują się gdzie indziej. Jeden z nieznanych wcześniej błędów Java Scriptu w Webkicie pozwalał na "wyłowienie" aktualnie wolnej przestrzeni, i wstrzyknięcie małej porcji danych do pamięci.To z kolei pozwoliło na modyfikacje danych w pamięci tak aby stopniowo zwiększać uprawnienia i miejsce które można było przeznaczyć na późniejszy atak. I kończące pierwszą faze wstrzyknięcie exploitu bazującego na popularnej ostatnio technice Return-Oriented Programming (ROP). Zachęcam do zapoznania się szerzej z terminem Return-Oriented Programming, techniki tej użyto także do uruchomienia linuxa na PS4. 

Warto dodać że Sony w oprogramowaniu 3.61 zablokowało exploit już w tej wczesnej fazie, blokując tym samym podstawę do dalszych działań.

Stage 2 

Celem fazy drugiej jest pokonanie pochodnej ASLR dla kernela. Czyli Kernel address space layout randomization i pozwolenie na dopisanie swojego kawałka kodu do jądra systemu.Punkt wejścia już był. Webkit ma ograniczony dostęp do funkcji kernela, więc łączy poprzedni krok z tym który twórcy starają się wykonać tutaj. W pewnym sensie wszystko zaczyna się jak w fazie pierwszej tylko że teraz atakowany jest kernel, czyli jądro systemu działającego na Playstation Vita oraz przeznaczona dla niego pamięć. A nie webkit jak w poprzednim ataku. Kolejnym zabezpieczeniem kernela w Vicie jest Domain Access Control Register. Jest to coś na wzór zastosowanego choćby w procesorach intela SMAP/SMEP. Oba zabezpieczenia udaję się ominąć bazując na błędzie w implementacji wywołania systemowego (więcej mówiąca angielska nazwa system call) sceIoDevctl. Błąd ten pozwala wstrzyknąć swój kod do kernela, i ominąć zabezpieczenie NX bit, czyli oznaczyć swój kod dla procesora jako wykonywalny. Od tego momentu można "eksplorować" sandbox jakim jest jądro systemu, i próbować ataków już bezpośrednio. Teraz pozostaje już tylko napisać kod ROP który pozwoli na wykorzystanie znalezionych błędów, i w efekcie pełną kontrole.

Stage 3 

Niestety na ten temat wiadomo niewiele, programiści obiecali że jeżeli ktoś przedstawi zbliżoną zasadę działania, lub po prostu działający exploit. To ujawnią swoją metode działania także w tej fazie. 

 

 RetroPie? A o PSTV pan słyszał?

 Co właściwie henkaku daje nam, posiadaczom Vity? To już zależy od nas samych, ja lubię sobie pograć w tytuły retro, więc Playstation TV okazało się dla mnie świetną alternatywą dla drogiego RetroPie (Raspberry Pi), czy też dla prądożernego Playstation 3. Okazało się że exploit ten otworzył wiele nowych opcji dla programistów, w tym także możliwość użycia Dynarec (Dynamic Recompilation). Potencjał w tym dostrzegła ekipa libretro (RetroArch) znana z dążenia do emulacji wszystkiego na wszystkim. Mimo że wciąż nie została wydana stabilna wersja RetroArch dla Vity, to już teraz lista obsługiwanych emulatorów jest imponująca. Co prawda wszystko jest jeszcze w fazie testów, i często liczba klatek na sekundę jest daleka od oryginalnej. To już widać w tym wszystkim ogromny postęp w stosunku do emulacji sprzed henkaku. Nintendo 64, Nintendo DS, Gameboy Advance, to już jest. W planach obsługa Segi Saturn (wersja nightly już dostępna), Playstation 1, a nawet emulatora PSP. Dodatkowo inne osoby nie związane z libretro pracują nad portem Reicasta, dokładnie.. Emulatora Segi Dreamcast. Wszystko to ułatwia architektura SoC zastosowanego w konsolce Sony. 32 bitowa architektura ARM bo o niej mowa nie jest tak egzotyczna dla programistów jak choćby PS trójkowe niestandardowe PowerPC 64.  Więc można się spodziewać wielu portów aplikacji z systemów korzystających z ARM, a tych aktualnie jest nie mało. No i żadna z aktualnie dostępnych platform nie potrafi emulować Vity, nawet PC. Więc dodatkowym oczywistym atutem jest możliwość zagrania w gry pisane dla tej konsoli.

Wszystko to dopiero powoli rusza, a mimo to już teraz w kolejce do lekarza możemy sobie pograć w pierwszego Quake'a przez sieć, HexenII czy Doom też tam są. A dla fanów starych gier RPG, EasyRPG Player. Program pozwalający grać w gry stworzone w aplikacji RPG Maker 2K oraz 2K3.  Wiem że wiele z tych rzeczy da się zrobić na telefonie z androidem. Jak na przykład emulacja starszych konsol, jednak vita ma tutaj ogromną przewagę. Pełny zestaw klawiszy pozwoli grać komfortowo, w przeciwieństwie do ekranów telefonów. 

 

Retro sretro! Nie po to kupiłem ten "cud techniki", żeby grać w jakieś starocie!

Powyższych słów na pewno nie usłyszycie ode mnie, ale co zrozumiałe.. Nie każdy interesuje się emulacją, i graniem w gry ze swojego dzieciństwa. Za to sporo graczy interesuje tak nieswojsko brzmiący termin frames per second. Nie jest tajemnicą, że animacja w grach na Vite lubi spaść poniżej wyznaczonego poziomu. I tutaj wchodzi do gry plugin (rozszerzenie) o dźwięcznej nazwie "Amphetamine". Nie wnikając w to jak nazwa została wymyślona, można powiedzieć jedno. Plugin spełnia swoją role, i daje "kopa" grą które wcześniej dostawały zadyszki. Odbywa się to przez ustawienie prędkości procesora na najszybszą wartość dostępną dla gier, oraz licencjonowanego oprogramowania. I tutaj spory minus dla Sony, i osób odpowiedzialnych za stworzenie tego problemu. Podejrzewam że obniżanie prędkości CPU w grach miało na celu wydłużenie czasu pracy na baterii. Jednak zostawienie tego wyboru użytkownikowi byłoby chyba rozsądniejszym wyjściem. Gdy jestem w podróży to czas jaki mogę używać konsole ma ogromne znaczenie, i jestem w stanie poświęcić te kilka fpsów. Jednak w domu na kib... yyyy  na kanapie. Oczekuje pełnej mocy jaką sprzęt może mi zaoferować.

Kolejny mankamentem Vity jest to że handheld Sony nie pozwala na używanie kart pamięci przypisanych do innego konta, czyli także do innej konsolki. I po włożeniu takiej karty domaga się jej formatowania. Tą limitacje także usunąć można aplikacją homebrew. 

Niektórzy tu zapewne kojarzą projekt Moonlight, dający posiadaczom kart Nvidia możliwość streamowania gier PC na różne platformy. Swój port otrzymała także "złamana" Vita. I w ten oto sposób można sobie zagrać w każdą grę z PC na małym ekranie Vity. Wystarczy być w zasięgu sieci wifi do której podłączony jest komputer. A chyba nie muszę tłumaczyć jak wygodne jest to rozwiązanie dla osób które komputer mają na drugim końcu mieszkania a przed snem lubią zagrać "mecza" w ulubioną grę z PC-ta. Telefon na androidzie nie da takiej wygody, fizycznych przycisków, itd. Zastosowań jest naprawdę dużo, minął dopiero miesiąc od wydania henkaku, a już tyle udało się osiągnąć.   

 

 Aaaaaarghhh!!! Czyli o noszących przepaski na oku.

Już teraz można przyznać że nawet Sony miało się z czego cieszyć zaraz po wydaniu henkaku.

upload_2016-8-28_18-1-42

Na powyższym zdjęciu widać że nawet tak niechciane zjawisko jak złamanie zabezpieczeń konsoli, prawdopodobnie może mieć pozytywny wpływ na wartość firmy. Można by pomyśleć że szczęście Sony nie trwało długo. Okazało się bowiem że exploit nie jest tylko złamaniem zabezpieczeń tzw. user-landu, ale także kernela. A stąd do piractwa było już o krok, i ten właśnie krok postawiła ekipa Team Freek. Paradoksalnie piractwo w tym wypadku nie ma tak negatywnego wpływu na konta Sony jak mogłoby się wydawać. Nie czarujmy się, firma w pewnym sensie straci ogromne pieniądze. Tylko czy ktoś kupiłby te gry w takiej ilości gdyby ich nie spiracił? Tego się niestety nie dowiemy, ale można przypuszczać że spora część, a nawet większość, i tak gier by nie kupiła. No więc czas na karty pamięci, te potrzebują zarówno piraci jak i gracze retro, wszyscy użytkownicy. Biorąc pod uwagę tak niedorzeczną cenę (32GB 339 zł - ceneo) można śmiało powiedzieć że jednak firma trochę sobie ten piracki proceder odbije. Bo popyt na karty pamięci drastycznie wzrośnie. A chyba nikt nie jest na tyle naiwny żeby nie wiedzieć że koszt produkcji takiej karty to kilka, maksymalnie kilkanaście polskich złotych. Lepszy biznes to chyba tylko sprzedawanie wody w butelkach. I tutaj należy dodać że początkowo henkaku nie obsługiwało wewnętrznej pamięci Vity slim oraz PSTV (która i tak jest mała - 1GB). Więc każdy kto chciał tego spróbować, musiał taką kartę kupić. Poza tym sprzedaż konsol samych w sobie też dorzuci "pare groszy", bo nawet na rodzimym allegro widać zwiększony ruch w dziale Playstation Vita od czasu premiery henkaku. 

 

Pieniądze to nie wszystko, przez was producenci gier porzucą Vitę!

A nie czekaj, to już było. I to dawno temu. Na tegorocznym E3 słowo Vita nie padło ani razu (no chyba że w kontekście, E3 wita). Poza pojedynczymi przypadkami i wszelkimi "zangielszczeniami" jrpgów, na Vite w planach wydawniczych nie ma już nic co można by podciągnąć pod tytuł AAA. Sony nie ma pomysłu co dalej, i nie jest to jedyny taki przypadek w branży. Razem z Vitą umiera Nintendo Wii-U, pogrzebane przez swoich twórców. W pewnym sensie był to odpowiedni moment żeby Vite "otworzyć" na nowe możliwości.

Żeby nie być gołosłownym co do planów wydawniczych: http://gry.onet.pl/ps-vita

 

Podsumowanie

Tak, to kolejna walka z wiatrakami. To po raz kolejny sztuka, dla sztuki. I tak, w Nintendo można pograć na PC. Ja po prostu lubię się w tym grzebać, i mam nadzieje że chociaż kilka osób tutaj znajdzie w tym tekście coś ciekawego dla siebie. Daje mi to chęci do uczenia się podstaw programowania, podstaw inżynierii wstecznej, i na dodatek po prostu mnie to ciekawi. 

Komentarze
Jacek13
3 września 2016, 17:28
Ja bym chciał użyć Vity jako pada do PC. 2 panele dotykowe i żyroskop dają pole do popisu.
5
kozarovv
3 września 2016, 19:07
Więc program VitaPad napisany przez developera Rinnegatamante idealnie spełniłby twoje wymagania. Już wczesna wersja obsługuje oba panele dotykowe. Obsługa żyroskopu póki co jeszcze nie dodana, ale kto wie.
3
Jacek13
4 września 2016, 09:15
A co by było, gdyby można było strumieniować z PC. To by było urządzenie wręcz idealne!
1
SunTzu
4 września 2016, 09:54
Jacek13 (2016.09.04, 09:15)
A co by było, gdyby można było strumieniować z PC. To by było urządzenie wręcz idealne!

ojj tu szereg problemów jest... kompresja, działnie windows-a (fullscreen problematyczne, mysz wariuje)-> to wszystko tworzy dodatkowy problem- opóźnienia.
To trudne zadanie.
Najlepiej działa transmisja wirtualnej maszynki... konkretnie Citrix (tak można przenieść GPU do maszynki przy minimalnej utracie wydajności)- to kosztuje, wymagania sprzętowe no i rozwiązanie własnościowe.
Tanim rozwiązaniem jest NV... znów to rozwiązanie własnościowe (działa tylko na NV), ma duże zapotrzebowanie na przepustowość :(
Edytowane przez autora (2016.09.04, 09:55)
0
kozarovv
4 września 2016, 15:07
SunTzu (2016.09.04, 09:54)
Jacek13 (2016.09.04, 09:15)
A co by było, gdyby można było strumieniować z PC. To by było urządzenie wręcz idealne!

ojj tu szereg problemów jest... kompresja, działnie windows-a (fullscreen problematyczne, mysz wariuje)-> to wszystko tworzy dodatkowy problem- opóźnienia.
To trudne zadanie.
Najlepiej działa transmisja wirtualnej maszynki... konkretnie Citrix (tak można przenieść GPU do maszynki przy minimalnej utracie wydajności)- to kosztuje, wymagania sprzętowe no i rozwiązanie własnościowe.
Tanim rozwiązaniem jest NV... znów to rozwiązanie własnościowe (działa tylko na NV), ma duże zapotrzebowanie na przepustowość :(



Przeczytajcie tekst w całości. Rozwiązanie NV już jest zaimplementowane na 'złamanej' konsolce:

Niektórzy tu zapewne kojarzą projekt Moonlight, dający posiadaczom kart Nvidia możliwość streamowania gier PC na różne platformy. Swój port otrzymała także 'złamana' Vita. I w ten oto sposób można sobie zagrać w każdą grę z PC na małym ekranie Vity. Wystarczy być w zasięgu sieci wifi do której podłączony jest komputer. A chyba nie muszę tłumaczyć jak wygodne jest to rozwiązanie dla osób które komputer mają na drugim końcu mieszkania a przed snem lubią zagrać 'mecza' w ulubioną grę z PC-ta. Telefon na androidzie nie da takiej wygody, fizycznych przycisków, itd. Zastosowań jest naprawdę dużo, minął dopiero miesiąc od wydania henkaku, a już tyle udało się osiągnąć.


Edit: Jedyny poważny problem to opóźnienia, ale nie są większe niż na innych platformach z moonlight'em. Po prostu są..
Edytowane przez autora (2016.09.04, 15:16)
2
SunTzu
4 września 2016, 16:34
@Up
Ale ja o tym pisałem właśniem na końcu.
Jest tu ogromne zapotrzebowanie na przepustowość :(
W citrixie masz małe opóźnienia, świetną odporność na gubienie pakietów, małe opóźnienia....
.... niestety koszt ogromny.
-1
Jacek13
4 września 2016, 16:34
A jak to jest z aktualizacją do nie najnowszej wersji oprogrogramowania? Nie pójdzie od razu do najnowszej? No i jeżeli chciałbym kupić, to jestem ograniczony do tych, którzy nie zaktualizowali swojej Vity...
0
kozarovv
4 września 2016, 18:13
SunTzu (2016.09.04, 16:34)
@Up
Ale ja o tym pisałem właśniem na końcu.
Jest tu ogromne zapotrzebowanie na przepustowość :(
W citrixie masz małe opóźnienia, świetną odporność na gubienie pakietów, małe opóźnienia....
.... niestety koszt ogromny.


Ok, źle zrozumiałem twój poprzedni post.



-1
kozarovv
4 września 2016, 18:19
Jacek13 (2016.09.04, 16:34)
A jak to jest z aktualizacją do nie najnowszej wersji oprogrogramowania? Nie pójdzie od razu do najnowszej? No i jeżeli chciałbym kupić, to jestem ograniczony do tych, którzy nie zaktualizowali swojej Vity...


Update do wybranej wersji robi się przez PC, z pomocą programu QCMA (nie CMA). Firmware można bez problemu znaleźć w wielu miejscach. Później wyłączasz automatyczne ściąganie aktualizacji i tyle.

Co do zakupu to fakt, w przypadku używek trzeba pytać sprzedawcy. Żeby przypadkiem chwile przed wysyłką nie zaktualizował do 3.61 (wtedy d#pa). Co do nowych konsol, to chyba niema jeszcze na rynku nic z firmware większym od 3.52, ale tutaj nie jestem pewny. Za to na 100% nie produkuje się PSTV z fw wyższym niż 3.36 więc to można brać w ciemno.
0
Zaloguj się, by móc komentować