#Windows

wszystkie notatki oznaczone etykietą "Windows"

Wyciekł kod źródłowy systemu Windows XP

Microsoft co jakiś czas otwiera kod źródłowy niektórych elementów systemu Windows lub powiązanych z nim programów1. Czasami jednak “wyręczają” go w tym hackerzy lub inne osoby, których działania doprowadzają do wycieku i niekontrolowanego upublicznienia ważnych dla firmy danych. W ostatnich dniach Microsoft znów stała się ofiarą takich poczynań i w Internecie pojawił się kod źródłowy systemu Windows XP. Dzisiejszego ranka natrafiłem na kilka twitterowych postów o potencjalnym wycieku kodu źródłowego systemu Windows XP.

Czytaj dalej

Thunderbird w zasobniku systemowym - The hard way!

Początkowo planowałem zaprosić wszystkich na serię kilku odcinków o hakowaniu i programowaniu pod Windowsem. Miały to być zapiski z mojej próby rozszerzenia funkcjonalności programu, ale bez modyfikacji jego źródeł i binarek, tylko na “żywca” w czasie jego działania. Zapowiadał się ciekawy po-wakacyjny projekt, ale tym razem coś nie wyszło ;) Minimize To Tray Odkąd przesiadłem się na Mozillowego Thunderbirda brakowało mi w nim tego co bardzo ceniłem w poprzednio używanych klientach pocztowych.

Czytaj dalej

Windows 95 skończył 25 lat

Windows 95 ma już 25 lat. To właśnie 24 sierpnia 1995 roku z wielkim rozmachem miała miejsce premiera tego przełomowego, jak na ówczesne czasy, systemu Microsoftu. System przyniósł prawdziwą rewolucję do świata komputerów osobistych. Dzięki innowacyjnemu sposobie nawigacji “wskaż i kliknij” i prostemu intuicyjnemu interfejsowi podbił serca użytkowników. A niespotykane do tej pory elementy jak przycisk Start, Pasek zadań i wiele innych, stały się fundamentami kolejnych wersji Windowsa i wyznaczyły standardy używane do dziś w okienkach.

Czytaj dalej

Windowsowy Kalkulator otwarty...

Kila dni temu Microsoft otworzył kod źródłowy znanego wszystkim Kalkulatora z systemu Windows. Kod pojawił się na GitHubie i został upubliczniony na licencji MIT. Nie jest to publikacja archiwalna, ale wciąż żywy produkt, zatem każdy może pomóc w dalszym rozwoju tej podstawowej aplikacji systemu Windows w ramach społeczności open-source. Today, we’re excited to announce that we are open sourcing Windows Calculator on GitHub under the MIT License. This includes the source code, build system, unit tests, and product roadmap.

Czytaj dalej

Shellcode: pierwszy kod - odpalanie Kalkulatora

W ostatnich moich zapiskach udało mi się wydobyć adres bazowy modułu kernel32.dll oraz opracować funkcję (kod) do iteracji i szukania niezbędnych adresów funkcji z załadowanego modułu w pamięci. Teraz, gdy mam te niezbędne elementy każdego typowego shellcodu pod Windą, wreszcie nadeszła pora na napisanie jakiegoś bardziej sensownego kawałek kodu. Dla przykładu wybrałem sobie odpalanie standardowego kalkulatora (calc.exe). … Na początek może kilka słów jak wygląda typowy shellcode. W sieci ciężko coś znaleźć sensownego na ten temat.

Czytaj dalej

Shellcode: moje eksperymenty

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

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

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ć mój kod, jaki używałem do tego typu zabaw. W istocie zrodził się projekt syringe, jako uniwersalnego narzędzia związanego z wstrzykiwaniem kodu i nie tylko… i tak zacząłem pisać stary/nowy kod…

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

Wykrywanie hardlinków

Hardlinki, inaczej łącza stałe lub dowiązania twarde są alternatywnymi nazwami dla pliku, referencjami wskazującymi istniejący wcześniej obiekt. Niestety nie istnieją żadne metody pozwalające określić, które nazwa lub referencją jest oryginalna, a która dodana później. Wszystkie nazwy/referencje wskazują ten sam blok danych. Dosyć dawno temu starałem się znaleźć prosty sposób na wykrywanie łączy stałych oraz ich enumeracje, aby szybko sprawdzić, czy dany plik nie jest dowiązaniem do już przetworzonych wcześniej danych. Potrzeby można byłoby zawrzeć w dwóch prostych funkcjach.

Czytaj dalej