Ciąg dalszy hackowania książek. Po udanym złamaniu (rozpakowaniu) okładki “Zrozumieć programowanie” przyszła pora na drugą książkę Gynvaela Coldwinda (przy współpracy Mateusza Jurczyka1), czyli “Praktyczna inżynieria wsteczna”. Po plotkach i niusach krążących w Internecie spodziewam się jeszcze lepszej zabawy ;)
Tej książki też (jeszcze) nie posiadam, to znów musiałem zdobyć z sieci okładkę w przyzwoitej jakości2. Z okładki aż promieniuje kawałek jakiegoś kodu w asemblerze i bliżej nieokreślone dane, pewnie jakaś binarka zrzucona w 16-stkach.
Czytaj dalej
Na filmach, gdy widoczny jest monitor z kodem, to raczej spodziewamy się tam losowych danych lub wyciętych fragmentów kodu. Podobnie zresztą w różnych materiałach i ilustracjach niebędących ściśle merytoryczną częścią zawartości publikacji, a bardziej jakimś dodatkowym ozdobnikiem lub częścią designu. Czy Gynvael na okładki swoich książek też tak po prostu wrzucił jakieś losowo wygenerowane i ładnie wyglądające dane? Nie sądzę!
Kiedyś natrafiłem na info, że znajdujący się tam kod to coś więcej niż spójna z treścią książki stylizacja okładki, to jakieś ukryte małe zadanie do rozwiązania.
Czytaj dalej
Nie tak dawno, po powrocie Gynvaela (@gynvael) do regularnych livestreamów technicznych, jeden z widzów zaproponował, aby autor dorzucał jakieś ciekawe zadania do rozwiązania. Gyn podchwycił pomysł, od tego czasu na końcu każdego filmiku, na polskim i angielskim kanale, pojawia się ciekawe zadanie lub ćwiczenie z pogranicza crack-me/CFT zwane misją.
Osobiście rzadko udaje mi się trafić na transmisję ‘live’, ale często sobie oglądam materiały, już po publikacji. Sam też myślałem o tym, aby zainteresować się misjami, zawsze można się czegoś nowego dowiedzieć i nauczyć, a i może z tego wyniknąć całkiem fajna zabawa.
Czytaj dalej
Nigdy nie zajmowałem się szczególnie tematyką security, nie interesowało mnie pisanie czy zabawa z shellcode-ami czy exploit-ami. Za to często zdarzają mi się różne eksperymenty, które w wielu przypadkach są dobrym sposobem na poznanie nowych rzeczy. A także pomagają ugruntować swoją wiedzę i przekonania. Bo pomimo, że wiem co i jak w teorii oraz praktyce, to często nie miałem jeszcze okazji tego dotknąć i poczuć. Dotyczy to nie tylko programowania, inżynierii wstecznej czy elektroniki, ale szeroko pojętej techniki (i w zasadzie nie tylko)…
Czytaj dalej
Bateria w nowoczesnym telefonie trzyma krótko, nikogo to za bardzo nie dziwi. Postęp w tej części techniki jest powolny, acz widoczny, chociaż na pewno powolna jest miniaturyzacja i gęstość upakowania “prądu”. Jak to mowa fizyki nie przeskoczysz. Nowoczesne urządzenia przenośne do poprawnej i wygodnej pracy jednak trochę tej energii wymagają. Tudzież wi-fi, gprs, lte, 2 karty sim, … i prąd znika, bo telefon szybko łyka. A baterii szybko lubi się wyczerpywać.
Czytaj dalej
Znalazłem ciekawe tricki związane ze zmianami w opcodach instrukcji między x86 a x64. Odpowiednie wykorzystanie ich pozwala na łatwe wykrycie typu architektury i tworzenie wspólnej implementacji funkcji lub kodu dla obu tych platform. Co szczególnie może być użyteczne przy różnego rodzaju shellcodach i innych takich zabawkach.
Nad takimi konstrukcjami w syringe zacząłem się zastanawiać, po tym, jak w minionym tygodniu zmieniłem pewien hack, związany z określeniem długości kodu wstrzykiwanego przy ładowaniu dll-ki do procesu.
Czytaj dalej
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
W wolnych chwilach pracowałem nad funkcjonalnością patchowania plików w moim projekcie strzykawki - syringe. Funkcja ta ukazała się pod postacią komendy patch. Nie tylko potrafi ona nakładać IDA-owe pliki diff na standardowe binarki, ale także, co było dla mnie ważne, bezpośrednio na dane zapisane w formacie IntelHex. Takiej możliwości potrzebowałem, aby móc dokończyć całą zabawę z analizatorem logicznym Saleae Logic i finalnie zaaplikować wszystko do programu. A ostatecznie rownież wygenerować łatkę rozwiązującą problem.
Czytaj dalej
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
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