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 ramach krótkiego wstępu… WOW64, czyli Windows 32-bit On Windows 64-bit (WOW64), jest warstwą emulacyjną umożliwiającą uruchomienie 32-bitowych aplikacji w środowisku 64-bitowym.
Pogłębiając swoją wiedzę nad internalsami systemu Windows, moje badania przesunęły się ostatnio trochę w stronę WOW64. Jest to całkiem ciekawy fragment architektoniczny systemu, o którym kiedyś jeszcze mam nadzieję będę pisał, bo wypływa wiele ciekawych rzeczy w trakcie jego analizowania. Przy okazji tego tematu zahaczyłem o struktury bloków danych procesu PEB i wątku TEB, głównie w kontekście podsystemu WOW64. Uznałem, że okazja ta daje dobry moment, aby również przypomnieć sobie co nieco o tych podstawowych elementach systemu, które dostępne są z poziomu user-mode, mimo rezydowania w przestrzeni jądra.
Moja ostatnia, która w rzeczywistości była pierwszą, konstrukcja bi-quada była typową prowizorką, więc z czasem jak to można ładnie rzec „trafił ją szlag”. Jak o tym kiedyś pisałem, wersja tej anteny (prowizorki) bazowała na żyle koncentryka, a jak wiadomo drut w kablu antenowym jest cienki, przez co podatny jest na odkształcenia. Taka konstrukcja wisząca na balkonie przy niesprzyjających warunkach atmosferycznych przegrała z wiatrem, deformującym i odkształcającym jej pierwotny stan idealnych kwadratów/rombów - istoty jej działania.
Kolejna część dotycząca mojej starej ulubionej (ostatnio) gry, którą potraktowałem jako narzędzie analizy i zabawy w reverse enginering. Jak wspomniałem w poprzedniej (pierwszej) części, miałem problem ze znalezieniem odpowiedniego programu neutralizującego wymóg posiadania płyty CD. A wszystko na co trafiłem było jednosegmentowymi aplikacjami DOS-a. A jak wiadomo Windowsy 64-bitowe nie posiadają już subsystemu do odpalania 16-bitowych programów. Mimo, iż 64-bitowe procesory w trybie “long mode” jako tako dałyby radę z takim kodem, o ile nie wymagałyby wirtualnego trybu chronionego.
Jak zapewne niektórzy zauważyli na moim twitterze, (który staje się mini blogiem), ostatnio - tweet - uruchamiałem taką starą, wspaniałą grę z przełomu milenium, jaką jest Blood2: The Chosen. W młodości trochę w nią grywałem, jakiś sentyment pozostał. A że chciałem się trochę zrelaksować w weekend, a przy okazji spróbować skonteneryzować i uruchomić tą gierkę spod windowsowego kontenera przez spoon.net, nie pozostało mi nic innego jak po prostu sobie zagrać.
Zakończył się proces standaryzacji nowej wersji języka C++ - We have C++14!
O kilku nowościach i wprowadzanych zmianach jakie przynosi nowa rewizja języka napisałem w notatce “Co słychać w nadchodzącym C++14”, w wolnej chwili postaram się dodać tutaj trochę więcej informacji.
Powolnymi, acz zdecydowanymi krokami zbliża się nowy standard języka C++ oznaczony jako C++14. Niektórzy jeszcze nie oswoili się z C++11, a biznes ciągle w epoce kamienia łupanego - C++98/03, bądź “C z klasami”. A tutaj wkrótce kolejna dawka nowości i emocji. Od czasu wejścia obecnego standardu, komitet nieźle przyspieszył, można powiedzieć, że wreszcie chce nadążać za rynkiem i potrzebami. W tym celu planuje co kilka lat wydawać wersję major i_ minor_ nowego standardu tegoż języka, docelowo co 3 lata.
Od jakiegoś czasu na msdn-ie i blogach głośno na temat nowej wersji Microsoftowego IDE, jednego z najlepszych platform do budowy aplikacji pod systemy tegoż producenta, i nie tylko, czyli Visual Studio. Od czasu jego premiery ponad miesiąc temu, gwara i dyskusje na jego temat nie ucichły, ciągle dochodzą nowe słuchy i doniesienia o kolejnych ciekawych eventach związanych z uruchomienie tej wersji, a także, co jest nowością - wersji online w chmurze na Azuresie.
Żeby nie było jakiś nieporozumień, nie przepadam za Qt, pewnie wszyscy odwiedzający mnie czytelnicy już się domyślili, albo i nie, że preferuję wx-y. Tak wolę wxWidgets, nie lubię Qt-a. To nie znaczy, że w wielu komercyjnych projektach nie korzystałem z tego frameworka, ale prywatnie raczej nigdy nie będę. Od dawno już utożsamiam się z indoktrynacją kierunku, że biblioteki tego typu powinny tylko udostępniać narzędzia do budowania GUI, bo przecież obecnie cala reszta dostępna jest w STL lub booscie, a jak nie to w masie innych bibliotek.