Techniczne aspekty glitcha v.0.1b first release
Co to jest glitch?
Istnieją dwa główne sygnały wchodzące, które możemy kontrolować z zewnątrz.
Pierwszy to zasilanie karty VCC (prąd DC 5V), drugi to sygnał zegara karty, który ma być kwadratową falą występującą między 5V i 0V z częstością 4.608 MHz.
Glitch może zostać zdefiniowany jako rodzaj zmiany obu tych sygnałów.
Pierwszy glitch to glitch napięciowy. Dla tego glitcha napięcie wejściowe (VCC), do karty obniżony zostaje do średniej wartości ok. 2,5V dla 1/2 cyklu (czasami do 1 cyklu).
Inny rodzaj glitcha to glitch zegarowy. Dla tego glitcha sygnał zegarowy jest przyśpieszony do około 4x tj. normalna częstość (w tym wypadku, w przybliżeniu 18,432 MHz) w przybliżeniu
1 "normalny" cykl.
Każdy z nich oddziałuje troche inaczej.
Glitchowanie na Naszą korzyść?
Jasne,że tak
Karta zaczyna wykonywać swoje operacje w ROMie. Oczywiście, za zadanie ma wykonać tylko okreslone funkcje, i odrzucić wszystkie inne, po to używamy glitcha aby to zmienić Glitch spowoduje niewykonanie się pewnego rozkazu na karcie, co powoduje zachowanie się karty w sposób niezgodny z zamierzonym (o to przecież chodzi).
Zdolność Glitchowania.
Unlooper zbudowany na ATMELu posiada 5 możliwości glitchowania:
- 0A: Glitch zegarowy, szybkość zegara ustawiana jest 4x szybciej normalnej wartości 1/2 normalnego cyklu zegara
- 0B: Glitch napięciowy. Obniża napięcie DAC dla 1/2 wartości normalnego cyklu zegara.
- 0C: Glitch napięciowy i zegarowy jednocześnie, opóźnia kilka cykli a następnie puszcza glitch napięciowy i zegarowy jednocześnie.
- 0D: Glitch zegarowy, opóźnia kilka cykli zegarowych,a nastepnie puszcza glitch napięciowy.
"Uczasowianie" glitcha
Nawet jesli mamy wszystkie mozliwosci zaaplikowania glitcha na karte, to nic nie zdzialamy bez dokladnego timingu. Przez dokladny timing rozumie sie glitcha, ktory musi byc wykorzystany w okreslonym cyklu zegarowym, i aby byl efektywny, musi być wykorzystany w pewnym punkcie tego cyklu. W tym celu jest wykorzystywany daughter board i on pozwala uzyskac dokladne wykorzystanie glitcha w loader karty HU, w stosunku do unloopera standardowego.
Kolejnosc glitchingu dla kart HU musi byc zsynchronizowana tak precyzyjnie, aby progamisci loadera kart HU mogli modyfikowac kod Atmela, by moc precyzyjnie opoznic synchronizacje glitcha. Rowniez procedury send/receive zostaly zmodyfikowane, zeby otrzymac perfekcyjna synchronizacje glitchingu. Kolejnosc glitchingu jest moderowana przez Atmela i wykorzystywany hardware. Jest jednak kwestia dokladnosci poslania glitcha. Przez dokladnosc rozumie sie mozliwosc zaaplikowania go kiedy sie chce. Atmel moze byc zaprogramowany poprzez swoj kod assmeblerowy w celu zaaplikowania glitcha z dokladnoscia do 1/2 cyklu zegarowego karty. To nie jest wystarczajace dla kart typu HU i dlatego zostal dodany daughter board. Zostal tez dodany soft zeby komunikowac sie z unlooperem. Atmel umie umiejscowic glitcha okolo 4 cykle zegarowe od strefy wybranej. To jest zbyt niedokladne dla kart HU i moze spowodowac bledy w unloopingu kart H. Kolejny negatywny czynnik dla Atmela to rozdzielczosc glitcha. Te rozdzielczosc reprezentuje czestotliwosc i amplituda impulsu sygnalu glitcha, ktory moze byc zaaplikowany karcie. Atmel, nawet jesli jest zaprogramowany bezposrednio w assmeblerze, moze zaaplikowac glitche tylko w 1/2 cyklu zegara, a amplitudy moga byc wielorakie w 1/2
cyklu zegarowego. To nie przeszkadza w ladowania loadera dla kart HU, ale jest
niewystarczajace dla ich unloopingu. Jestem przekonany ze aktualny hardware dla unlooperow zostanie niedlugo zmieniony, aby moc go wykorzystywac dla kart HU. Powod dla ktorego synchronizacja glitchingu jest tak wazna, to celowe spowodowanie wadliwego wykonania instrukcji, ktore nas interesuja. Musimy glitchowac w okreslonym cylu zegarowym wykonania danej instrukcji. Np. komenda CJNE na karcie H wymaga 12 cykli zegarowych. Glitch napiciowy w 10 cyklu zegarowym tej instrukcji spowoduje niedokonczony skok, bez wzgledu na wartosci przetwarzane (w ten sposob sa uruchamaine karty H black sunday). Glitching w cyklu zegarowym 9 lub 11 nie powoduje tego rezultatu. Czyli nie jest to metoda na ominiecie zabezpieczenia karty, ale sposob na zlamanie wykonywania instrukcji na karcie w sposob nam zyczliwy.
To narazie tyle.
Pozdrawiam
you