Konwersja liczb binarnych do kodu BCD (AVR)

Na forum elektrody natrafiłem na temat związany z operowaniem na dużych liczbach na małych mikrokontrolerach AVR. W istocie temat dotyczył algorytmu szybkiej konwersji dużych liczb zapisanych w naturalnym systemie dwójkowym na ich reprezentację w kodzie BCD. Zagadnienie to wydało mi się na tyle ciekawe i praktyczne (w kilku projektach będę przechodził podobny problem), związane też … Czytaj dalej Konwersja liczb binarnych do kodu BCD (AVR)

Opublikowano Kategorie /dev/null

Shellcode: EAT i funkcja GetProcAddress

Gdy już w swoich rękach mam adres bazowy modułu kernel32.dll (zlokalizowany na przykład sposobem opisanym w poprzednim moim wpisie) kolejnym krokiem jest poznanie adresu dowolnej funkcji znajdującej się w tym module. W wielu sytuacjach wystarczy dorwać się tylko do GetProcAddress i LoadLibrary, co ułatwi wykorzystanie dowolnej innej funkcji z Windows API lub innej biblioteki. W … Czytaj dalej Shellcode: EAT i funkcja GetProcAddress

Opublikowano Kategorie /dev/null

Shellcode: PEB i adres bazowy modułu kernel32.dll

Pisząc jakieś shellkody lub inne tego typu paskudztwa napotyka się na problem interakcji z systemem lub jego API. Aby cokolwiek zrobić sensownego wymagany jest dostęp do kilku kluczowych funkcji znajdujących się w kernel32.dll, będących niejako kluczem do świata systemu. Takimi funkcjami są oczywiście LoadLibrary/GetModuleHandle, GetProcAddress, itp… Mając dostęp do tych funkcji możemy zrobić praktycznie wszystko … Czytaj dalej Shellcode: PEB i adres bazowy modułu kernel32.dll

Opublikowano Kategorie /dev/null

Pomiar wykorzystanych cykli mikrokontrolera AVR

Potrzebowałem na szybko oszacować złożoność czasową kilku algorytmów na mikrokontrolerze AVR, aby poznać ilość cykli jakie skonsumuje procesor do wykonania tych interesujących mnie fragmentów kodu. Ponoć symulator posiada taką funkcjonalność, ja niestety nie mam takich zabawek. Można byłoby na piechotę policzyć ilość taktów na podstawie dokumentacji i wygenerowanego kodu, ale to raczej byłoby karkołomnym zadaniem. … Czytaj dalej Pomiar wykorzystanych cykli mikrokontrolera AVR

Opublikowano Kategorie /dev/null

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 … Czytaj dalej Windows Internals: Dziwne parsowanie ścieżek

ESP8266: Spojrzenie na firmware

Pora na testowanie i zabawę z softem. Istnieje wiele różnych nieformalnych, otwartych projektów, dostarczających niezależne firmware dla modułów WiFi opartych na chipsecie ESP8266. Dlatego postanowiłem bliżej przyjrzeć się kilku wybranym. Pozwoli mi to co nieco zagłebić się w temat i spojrzeć, jak to wygląda od kuchni. A jak wiadomo takie rzeczy najlepiej poznaje się przy … Czytaj dalej ESP8266: Spojrzenie na firmware

x86/x64 Platform Independent Code

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 … Czytaj dalej x86/x64 Platform Independent Code

Opublikowano Kategorie /dev/null

Syringe – moja mała strzykawka (kodu)

Wydobywając kod firmware z kodu procesu Sealogic (SaeLog #4), w jednym z możliwości związanych z hookowaniem transmisji USB, wspomniałem o technice wstrzykiwania kodu do uruchomionego procesu, wykorzystującej popularną metodę ze zdalnym wątkiem (CreateRemoteThread). Sugerując przy tym wykorzystanie dostępnych w sieci injectorów lub napisanie czegoś własnego. Od tego czasu, w wolnych chwilach, próbowałem okiełznać i uporządkować … Czytaj dalej Syringe – moja mała strzykawka (kodu)

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 … Czytaj dalej Windows Internals: LastErrorToBreakOn

TEB/PEB (nie tylko) w WOW64 (cz. II)

Dosyć długo to trwało, ale wreszcie dokończyłem przeredagowanie ostatniej notatki o strukturach PEB/TEB w Windowsie i dokończyć tą aktualną, bardziej ukierunkowaną na WOW64. Bo tematem zainteresowałem się właśnie z tego powodu, szukając prostego i zarazem przenośnego (niezależnego od wersji systemu) sposobu dobrania się do tych struktur. Nawet o tym wspominałem w prologu poprzedniego wpisu. W … Czytaj dalej TEB/PEB (nie tylko) w WOW64 (cz. II)

Opublikowano Kategorie /dev/null