#reverse enginering

wszystkie notatki oznaczone etykietą "reverse enginering"

Quickshot QS-137F: naprawa joysticka

Przełamałem noworoczny marazm motywacyjno-produktywny, który ciągnął się od czasu ostatniego wpisu. O ile w pracy nie ma problemów, to po powrocie do domu, do swoich obowiązków, projektów i planów, niestety ciągle brak motywacji oraz siły i ochoty do robienia czegokolwiek ciekawego. Ale ostatecznie, po kilku zmarnowanych wieczorach udało mi się wrócić na właściwe tory, do działania. A do działania popchnęło mnie kilka losowych notatek Gynvaela o próbach przywracenia swojego Atari do życia.

Czytaj dalej

Windows Internals: Dziwne parsowanie ścieżek

Kilka miesięcy temu trafiłem na intrygujący problem z obsługą ścieżek w systemie Windows. Jak się okazało odkrycie to jest dobrze znane w środowisku deweloperów blisko związanych z bebechami tego systemu, ludziom zajmującym się inżynierią wsteczną, bezpieczeństwem i różnym badaczom… Można powiedzieć, że tak naprawdę to nic nadzwyczajnego, dlatego aż dziwne, że wcześniej nie trafiłem na coś podobnego, można wręcz powiedzieć zadziwiającego. Te dziwne zachowanie (o jakim piszę) to nigdzie nie udokumentowane ignorowanie (usuwanie) znaku spacji i kropki na końcach poszczególnych elementów ścieżki.

Czytaj dalej

Supercharger SV-123: naprawa joysticka

Dawno temu przytaszczyłem do stolicy mój stary komodorek w celu uruchomienia, eksperymentów i kilku sprzętowych (głównie) projektów. Z kilku względów dokupiłem magnetofonik i joysticka. Ale QuickJoy Supercharger SV-123 zakupiony na allegro nie do końca był sprawny. Jak dobrze pamiętam miał problemy z przyciskami “fire” (teraz zgaduję). Ale z braku czasu i problemów z rozebraniem, temat leżał dosyć długo odłogiem. Miałem problemy z rozkręceniem, śruby się zapiekły w plastiku, a główki okręcały, że coraz bardziej problem się nasilał.

Czytaj dalej

SaeLog #9: Outro

Niniejsza notatka jest podsumowującą całą serię edukacyjnych wpisów SaeLog, jakie w tym roku na przestrzeni kilku miesięcy pojawiały się na blogu. Seria dotyczyła hackowania modyfikacji kodu firmware oraz aplikacji analizatora logicznego firmy Saleae, aby ten działa również z nieoficjalnymi wersjami (klonami) urządzenia, gdzie używane są różne typy pamięci EEPROM. Problem ostatecznie został rozwiązany, więc nie będzie kontynuacji tematu. Poniżej lista wszystkich odcinków jakie ukazały się na blogu w ramach #SaeLog:

Czytaj dalej

SaeLog #7: Firmware z detekcją typu EEPROM

Nawiązując do moich hacków firmware’u analizatora przedstawionych w poprzednim poście z serii SaeLog, zastanawiałem się czy dokonana modyfikacja kodu jest dobra. Oczywiście jest, dla kogoś kto posiada płytkę z pamięcią adresowaną 2-bajtowo. Mimo to czuję jakiś niesmak, bo wielokrotnie wspominałem o dodaniu obsługi większych kostek, to finalnie moje modyfikacje firmware-u ograniczyły się do sztywnej “zamiany” obsługi 1-bajtowo adresowanych EEPROM-ów na 2-bajtowe. Nie mogłem spać po nocach, a po głowie ciągle chodziła mi myśl, aby spróbować dostosować kod do obsługi obu typów pamięci.

Czytaj dalej

SaeLog #6: Hacki w firmware w obsłudze EEPROM

Zabrałem się za zabawy z firmwarem, którego celem jest dodanie wsparcia pamięci EEPROM adresowanych wordem a nie bajtem. Odkąd mogę testować swoje hacki bezpośrednio na urządzeniu, całą uwagę mogę poświecić na tych zadaniu, skupiając się na analizach i eksperymentach. Moje urządzenie, jak i oryginalna wersja posiada pamięć EEPROM, która FX2 używa do różnych celów, między innymi do bootowania. Jest to pamięć szeregowa z serii AT24Cxx z komunikacją po magistrali I2C. A istotnymi różnicami między oryginałem a klonem (lub płytka developerską) jest wersja użytej kostki.

Czytaj dalej

SaeLog #5: Testy, enumeracja i deskryptory USB w FX2

Kolejny odcinek z serii SaeLog odnośnie hackowania sprzętu i oprogramowania (głównie) analizatora logicznego. Od ostatniego wpisu minęło sporo czasu, dokładnie 4 miesiące. Jakoś tak się złożyło, że nawał obowiązków i innych spraw (wyjazdów, urlopów i przede wszystkim praca) nie pozwoliły mi szybciej wrócić do tego tematu. Ale udało się i mam nadzieję, że kilka kolejnych wpisów oznaczonych tagiem #SaeLog w miarę szybko się pojawi. Korzystając z informacji zawartych w SaeLog#4 bez problemu udało mi się wyekstrahować kod firmware-u z aplikacji.

Czytaj dalej

Windows Internals: LastErrorToBreakOn

W kodzie Windowsa można znaleźć czasem ciekawe fragmenty, które skrywają pomocne mechanizmy i sposoby ułatwiające debugowanie różnych elementów, nie tylko systemowych. Część, jeśli nie wszystkie, takie wstawki nie są nigdzie udokumentowane. Zatem nic dziwnego, że dziś znów trafiłem na kolejny taki trick w kodzie systemowym. Mowa tutaj o conditional breakpoint przy ustawianiu kodu błędu, co może być bardzo pomocne przy ciężkim debugowaniu nieszczęśliwych przypadków. Większość systemowych funkcji, ale nie tylko takich, w razie błędu ustawia odpowiednią wartość nie-zerową, określającą zaistniałą sytuację.

Czytaj dalej

Sekcje i segmenty w plikach wykonywalnych (PE)

Mała przerwa od serii zabaw kodem analizatora logicznego. W ostatnim wpisie o ekstrakcji kodu firmware (SaeLog #4) wspomniałem o kilku innych, ciekawych tematach. Jednym z nich była kwestia związana z przechowywaniem stałych danych w sekcji .rdata, o których teraz chciałbym nieco więcej powiedzieć. A szczególnie o tym jak pisanie kodu rzutuje na generowany przez kompilator/linker plik wynikowy. Sekcje i segmenty w PE i innych Pliki binarne zawierające kod wykonywalny (executables), czyli zwykle exe, biblioteki DLL, czy pliki obiektowe (a także kilka innych) w większości systemów są zbliżone do siebie formatem lub budową.

Czytaj dalej

SaeLog #4: Firmware i jego ekstrakcja

Chcąc zajrzeć do kodu firmware zaszytego w urządzeniu Saleae Logic, trzeba go najpierw jakoś zdobyć. Kod ten w typowej aplikacji USB-FX2 ładowany jest do urządzenia po uprzednim jego wykryciu przez oprogramowanie zainstalowane na komputerze, wprost poprzez port USB. Idąc tym tropem można być pewnym, że znajdzie się go gdzieś w paczce z aplikacją lub w samym kodzie programu. Przyszła więc pora na jego wydobycie, bez tego nie będzie możliwa dalsza zabawa…

Czytaj dalej