chaos theory

Pomimo długich zimowych wieczorów nie pisałem tutaj od ponad trzech miesięcy,  jak to się mówi – czasu nie było. Ostatnio staram się spędzić każdą wolną chwilę z dala od komputera.[sic!]

 Aktualnie próbuję zrealizować kilka moich pomysłów i rozwijać starsze projekty. W najbliższym czasie możecie spodziewać sie kilku świetnych aplikacji. Dla zainteresowanych niedługo napiszę więcej szczegółów. 

-d01


Tak się bawi Google.

Niesamowite show w londyńskiej siedzibie Google’a.  

Nathan “Flutebox” Lee oraz Beardyman, beatboxer.

google rulez btw :D


#2 prosta edycja pliku binarnego ;>

Przeglądając moje nie opublikowane/nie dokończone teksty, znalazlem ten poniżej – szczerze nic ciekawego ;> Z tego co widze, to jest to kolejny sposob na podmienienie ciągu znaków w programie, pierwsza część tutaj.

Tekst jest z kwietnia 2008.

———————————————————-

Dzisiaj spróbujemy zamienić w programie wyświetlany tekst na nasz własny.
Teraz naszym celem będzie znalezienie ciągu „there’s no fun” (który jest wyświetlany za każdym wykonaniem programu) i zamiana ciągu na nasz własny. Żeby to zrobić, musimy edytować execa

Odpalamy Hexplorer i wczytujemy skompilowany program, pojawiają się dziwne znaczki i symbole. Dla nas jednak nie sa to tylko znaczki ;>

Na początku mamy komunikat informujący, że plik nie może być uruchomiony w DOS’ie. Możemy także wyróżnić sekcje kodu, danych, zasobów, importy/exporty pliku. Na analizę plików wykonywalnych, będzie poświęcony osobny wpis ;> anyway, klikamy ikonkę find i w okienku wpisujemy aktualnie wyświetlany ciag „there’s no fun”, hexplorer przechodzi do odpowiedniego adresu w pliku, i teraz możemy zmienić ciąg na np.  „cracked forfun”.

Po zapisaniu, program wyświetli teraz nasz ciąg.
Tyle ;>


Google Chrome

Ekhm, 

tak,  to i ja cos naskrobie o Chrome, bo jest o czym.

Na pewno wiekszość z Was już dużo czytała w ciagu ostatnich dwóch dni o nowej przeglądarce od wujka Google – Chrome, ale i tak podzielę sie swoją opinią ;>

Chrome bazuje na open source’owym silniku Apple WebKit (Safari). Dzięki multi procesowej architekturze każda zakładka i każde okno przeglądarki działa jako oddzielny proces i ma swoje własne środowisko, co podczas normalnego korzystania z przeglądarki zapobiega wysypywaniu się całej aplikacji.

Kilka niezbędnych przycisków i wiekszość ekranu przeznaczona na wyświetlanie strony internetowej sprawia że GUI aplikacji jest bardzo przejrzyste i lekkie, co w połączeniu z bardzo szybkim działaniem, daje naprawdę dobrą przeglądarkę.

Dla miłośników redtube, Google przygotował opcję Incognito (czyli tzw. pornomode ;> ) która daje możliwość uruchomienia specjalnego okna, w którym nie będą rejestrowane żadne czynności wykonywane przez użytkownika, co pozwala na całkowitą anonimowość.

Przeglądarka posiada trochę błędów, ale przecież to dopiero beta :)

 

Pobierz Google Chrome


Nowy design

A jakoś tak mi sie nudziło ;>


Mojave Project – Microsoft podstępem przekonuje do Visty.

Zespół odpowiedzialny za Vistę chcąc dowiedzieć się co tak naprawdę nie pasuje użytkownikom w ich systemie, zrealizował bardzo interesujące badanie. Mianowicie kilka dni temu zebrał w San Francisco największych sceptyków Visty, fanów ‘ikspeka’ i innych użytkowników nie-Microsoftowych systemów,  pod pretekstem zapoznania się z (jak to wtedy mówili) następcą Visty – Windows Mojave.

Po pokazaniu Mojave, aż 90% ludzi było zachwyconych nowym systemem.

Jak się okazało nie było żadnego Windows Mojave. To co uczestnicy eksperymentu zobaczyli to był tak naprawdę Windows Vista.

Strona projektu Mojave

A co do Visty, póki co sprzedanych zostało 180 milionów licencji.


Wakacyjne porządki

Odświeżony wygląd pulpitu, nowe pomysły, dużo czasu..  zaczynamy kodzić 24/7  ! :D

Screena z przed sprzątania nawet nie pokazuje , bo taki burdel żee

Jakoś się nie mogłem zdecydować na żadną tapetkę, to została standardowa.

Dobrze że jest drugi monitor, bo ledwo się mieszczę ;)

btw.  I znajdź tu coś…  ;>

 


gallery update ;)

Pierwsza majowa aktualizacja galerii.

Z 421 pstryknięć, poniżej są według mnie najlepsze.

enjoy ;)

dmuchawiec

kwiatek ;>

Czytaj resztę wpisu »


Minął miesiąc…

Dzisiaj będzie….       o mnie ;p

Co sie działo u mnie od ostatniego nietechnicznego wpisu ? (ponad miesiąc)

…a dużo sie działo.

Zacząłem pisać szkielet silnika 2d (chociaż nie nazwałbym jeszcze tego silnikiem, raczej taki mały framework) w C++ z bibliotekami SDL. Raczej nic z tego ciekawego nie powstanie, ale doświadczenie zostanie.. (pff), przynajmniej była jakaś motywacja, żeby programować grafike 2d.

Ostatnio zacząłem się bardziej interesować komunikacją sieciową, napisałem kilka konsolowych programów typu client-server i niby działają ;p , może kiedyś wrzuce na bloga.

Jak widać postanowiłem uporządkować swoją dotychczasową wiedzę na temat Crackingu i Reverse Engineering’u w formie kilku wpisów, może komuś sie przyda ;]

Długi weekend spędzę na porządkowaniu mojego ‘nieporządku’ na dyskach. Mam już rozpisany układ katalogów etc. osobna partycja na projekty, filmy, programy, maszyny wirtualne, etc.

Na kompie dalej rezyduje Vista ale już 64bit, jakoś mnie nie ciągnie na stałe do Linuksa, chociaż ostanio i tak długo przesiaduje na Linuchu (ofc. Ubuntu) ;>

dobra, wystarczy ;>>


MinWin – Windows 7 kernel

Kilka miesięcy temu Eric Traut, inżynier z Redmond, przy okazji swojego wykładu na University of Illinois dotyczącego technologii wirtualizacji, zaprezentował nowe jądro dla kolejnych systemów z rodziny Windows – MinWin. Następca Visty – Windows 7, będzie bazował właśnie na tym jądrze.

Jest to pierwsza tego typu akcja „krojenia” jądra Windowsa.

Z wypowiedzi Erica, dowiadujemy sie m.in. że obecnie MinWin zajmuje 25 MB na dysku twardym, oraz 39 MB pamięci fizycznej i posiada niezbyt rozbudowany serwer HTTP. Na całe jądro składa sie około 100 plików.

Dobrze, że Microsoft stara sie poprawić działanie jądra Windowsa, ale prawie 40 MB pamięci fizycznej na samo jądro z jedynie diagnostycznym serwerem HTTP to wciąż dużo. Dla porównania Slackware 11.0 z odpalonym Fluxbox zajmował od 45-50 MB! tak samo cały system – DSL Linux mieści się w 50MB.

Ośmiominutowy fragment dotyczący MinWin.

Cała prezentacja Erica o wirtualizacji.


#1 W poszukiwaniu za zmienną

No to zaczynamy ^^

Dzisiaj spróbujemy poszukać pewnej zmiennej w pamięci i zmienić jej wartość, aby program wykonał się tak jak my tego chcemy, oczywiście bez żadnej ingerencji w kod źródłowy programu. Do dyspozycji mamy skompilowany program.
Zaczynajmy.

Na początku skompilujemy program (ja to zrobiłem za pomocą mojego ulubionego IDE tj. Dev-Cpp).

#include <iostream>

void f_forfun(void)
{
puts("for fun");
}

int main(int argc, char *argv[])
{
int x = 29;
if(x > 30)
{
f_forfun();
}
else
{
puts(„there’s no fun”);
}
return 0;
}
Po uruchomieniu, program wyświetli nam na ekranie tylko napis „there’s no fun”, ale my chcemy coś innego.
Krótka analiza kodu.
Funkcja f_forfun wyświetla napis „for fun”, jednak nie wykona się, ponieważ warunek x > 30 nie jest prawdziwy, bo zmienna x ma wartość 29. Czyli, żeby nasza funkcja się wykonała, zmienna x musi być większa od 30.
Najpierw zdisassemblujemy execa poleceniem:
dumppe test.exe -disasm > test.dasm
Mamy przygotowany listing asemblera. Teraz może trochę info o stosie.

Stos, przede wszystkim jest to obszar w pamięci; struktura danych rosnąca w dół, mamy coś takiego jak wskaźnik stosu, który jest na początku ustawiany na sam ‘szczyt’ obszaru pamięci, gdy wrzucamy (push) na stos jakąś daną jest ona kopiowana do aktualnego obszaru wskazywanego przez wskaźnik, po czym wskaźnik jest zmniejszany w dół (najczęściej o 4) – stos rośnie w dół. Natomiast instrukcja pop pobiera daną ze stosu i zwiększa wskaźnik.
W 32-bitowej architekturze x86 wskaźnik „szczytu” stosu nazywa się ESP, natomiast „dno” stosu wskazuje rejestr EBP.

Zmienne lokalne alokowane są na stosie, do których mamy dostęp poprzez rejestr ESP. Zmienna x ma wartość 29, w systemie szesnastkowym to 1D. Więc musimy szukać operacji wykonywanych na tej wartości.

Po chwili napotykamy takie linijki:

004012CE C745FC1D000000 mov dword ptr [ebp-4],1Dh
004012D5 837DFC1E cmp dword ptr [ebp-4],1Eh

Pierwsza kolumna to adres w pamięci, druga to skompilowany rozkaz asma, następnie jest mnemonik.
W pierwszej linijce widać, że jest operacja na stosie i nasza wartość (1Dh), czyli mamy już adres naszej zmiennej.
Druga linijka to porównanie (cmp) wartości 29 z 30.
1D (hex) = 29 (Dec)
1E (hex) = 30 (Dec)

Adres zmiennej w pamięci mamy w pierwszej kolumnie, pierwszej linijki. Jednak musimy teraz obliczyć adres tej zmiennej w pliku za pomocą poniższego wzoru:

adres w pliku = adres w listingu - (Image Base + Virtual Address sekcji ) + Raw Offset sekcji

Potrzebujemy jeszcze adresy początku pamięci procesu (image base), Raw Data Offset i Virtual Address.

Image Base 00400000
Virtual Address 00001000
Raw Data Offset 00000400

Podstawiamy..

4012CE - (400000 + 1000) + 400 = 6CE

.. i mamy adres zmiennej x w pliku.
Edytujemy za pomocą Hexplorera naszą binarkę, i przechodzimy do wcześniej wyliczonego adresu – 6CE. Widzimy tam wartość 1D, po prostu zwiększamy ją, np. na 1F. Zapisujemy.
Teraz po uruchomieniu naszego programu, warunek będzie prawdziwy, więc wykona się funkcja for_fun i otrzymamy napis „for fun”.

W następnej części postaram sie napisać przykład wymagający więcej myślenia ;p
Tyle ^^


Cracking/RE – ogólnie

Niedługo mam zamiar opublikować serię wpisów traktujących o crackingu i RE (Reverse engineering). Na początku będą to bardzo banalne przykłady (od czegoś trzeba zacząć).
Co będzie potrzebne do zrozumienia ?
A no, na pewno znajomość asemblera i C/C++, ogólna wiedza o działaniu programów, organizacji pamięci, etc. etc. , Google, mózg i dużo cierpliwości.

W dalszych częściach będę zakładał, że umiesz te rzeczy ^^

Przydatne programy:
Hexplorer
IDA Pro Disassembler
SoftIce lub OllyDebugger
DeDe
NASM, FASM, MASM32
Resource Hacker

Kilka pojęć:
Cracking – dziedzina Informatyki polegająca na łamaniu zabezpieczeń.

Cracker – osoba zajmująca sie łamaniem zabezpieczeń komputerowych.

[więcej znajdziecie @ wikipedia]


toHex

W ramach ćwiczeń w .NET napisałem mały program zamieniający litery w szesnastkowe wartości ASCII i odwrotnie. Może komuś sie przyda ;>

Program korzysta z frameworka .NET, także do jego uruchomienia potrzebne są dodatkowe biblioteki. (do pobrania stad)

toHex – pobierz


BBC znalazło latające pingwiny !


Bardzo ciekawy filmik stacji BBC z serii Cuda ewolucji ;>

Latające pingwiny

A tutaj filmik , przedstawiający pingwiny podczas lotu.

A i jeszcze przykra wiadomość, ekipa nonsensopedii informuje, że od jutra (tj. 2 kwietnia), polska wersja Nonsensopedii przestanie istnieć.

;DD


Słów kilka o F# – nowym funkcyjnym języku od Microsoft

 Hello F#

Jak już wszedłem na temat Microsoft Research, to może warto także przypomnieć o F# (ef-sharp) – nowym funkcyjnym języku programowania.
Język F# jest specyficznym połączeniem OCaml, MatLab, Pythona, Scheme i C#. Posiada charakterystyczną interaktywną powłokę a’la Python. Jego wydajność jest porównywalna do C#. W F# możemy korzystać z narzędzi i bibliotek .NET. Co ważne, dostępny jest nie tylko na platformę Microsoftu, ale również na wszystkie platformy wspierane przez Mono.

Z racji tego że miałem trochę wolnego czasu i chciałem trochę odpocząć od WinApi, pobawiłem sie trochę z F#. Tak więc nie czekając, zainstalowałem kompilator języka z F# w wersji 1.9.3.14 (do pobrania stąd)
Do dyspozycji dostajemy interaktywny interpreter – fsi.exe oraz kompilator fsc.exe. Po włączeniu fsi wklepałem standardowe Hello World.

let msg = "Hello World in f# by d01 ;>";; print_endline msg;;

Co spowodowało wyświetlenie stringa ze zmiennej msg ;>

W F# również możemy skorzystać z .NET’owych klas:

let msg = "Hello World";;
System.Console.WriteLine(msg);;

To samo można zrobić za pomocą kompilatora (dziwnie to zabrzmiało ;> ) anyway, po utworzeniu pliku źródłowego z rozszerzeniem .fs, kompilujemy poleceniem:

fsc hello.fs

i otrzymujemy gotowego execa.

A może by tak skorzystać z Windows Forms.. nic prostszego. Program w F# wyświetlający Windowsowe okienko ma zaledwie trzy linijki.

open System.Windows.Forms
let form = new Form(Visible=true, TopMost=true, Text="Witaj! d01 ;)")
do Application.Run(form)

Prawda że proste ;p

Jak już zawsze pisze przy tego typu projektach – zobaczymy co z tego wyniknie, czy język stanie sie popularny i będzie powszechnie stosowany przez koderów, czy może będzie to kolejny ‘standard’, którego stosowanie będzie narzucane przez MS.

no, tyle ;)

Screeny:


Linki:
F# na Microsoft Research
en.wikipedia.org/wiki/F_Sharp_programming_language


Singularity – podsumowanie.

Postarałem sie tutaj zebrać wszystkie informacje na temat Singularity.

Na początku może małe info dla tych którzy nie wiedzą o czym mówie.

Singularity jest projektem badawczym kochanego Microsoftu, którego celem jest stworzenie systemu operacyjnego opartego na mikrojądrze, głównie pisany jest w C#. System jest pisany od zera. Nie mylić z MinWin – przyszłym jądrem Windows 7.

Informacje z polskiej Wikipedii.
„Twórcy systemu Singularity postanowili zaniechać używania sprzętowych systemów ochrony w komputerze, takich jak oddzielne przestrzenie adresowe, czy poziomy ochrony procesora, na rzecz programowej ochrony systemu i procesów („Software-Isolated Processes” – SIP). Możliwe jest to dzięki kompilacji programów i większości samego systemu do bezpiecznego kodu zarządzanego (ang. safecode). System operacyjny jest w stanie zweryfikować poprawność takiej kompilacji podczas uruchamiania programu (instalowania w pamięci), natomiast po jego uruchomieniu kod aplikacji samodzielnie kontroluje poprawność pracy, w tym poprawność wskaźników pamięci. Programy działające pod kontrolą Singularity mogą działać w ramach tej samej sprzętowej przestrzeni adresowej i w najwyższym poziomie ochrony procesora.
Większość systemu, w tym także większość jądra została napisana w języku C#, podstawą działania systemu i aplikacji jest stabilny kolekcjoner nieużytków (ang. garbage collection), będący elementarną częścią Singularity. Jedynie niewielkie fragmenty systemu, w najniższym poziomie abstrakcji i odpowiedzialne za wczesny rozruch, napisane zostały w językach asemblera, C++, czy C.

W późniejszej fazie rozwoju, do Singularity został dodany mechanizm wykorzystania sprzętowego mechanizmu ochrony. System może pogrupować procesy i każdej z grup przydzielić osobną przestrzeń adresową.
Dzięki wyłączeniu sprzętowych systemów ochrony, system Singularity zyskał na wydajności. Operacje takie jak przełączanie zadań, czy wywołanie systemowe, dzięki braku konieczności zmiany przestrzeni adresowej i trybu ochrony procesora wykonywane są znacznie szybciej niż w systemach takich jak np. Windows.”

A tu już testy Singularity oraz porównanie z innymi systemami.
„Po przeprowadzeniu benchmarków na komputerze z Athlonem 64 3000+ i 1 GB RAM-u okazało się, że prosta operacja przesłania komunikatu między dwoma wątkami, która w Singularity potrzebuje zaledwie 1500 cykli procesora, w FreeBSD 5.3-RELEASE wymaga ich ponad 13 tysięcy, w Linuksie (Fedora Core 4) – niecałych 5800, a w Windows – 6300. Natomiast na stworzenie i wystartowanie procesu potrzebne jest odpowiednio 300 tysięcy cykli w Singularity, milion w FreeBSD, 720 tysięcy w Linuksie i aż 5,4 miliona w Windows XP z SP2. „
Singularity after boot-up

Co mamy w tej chwili ?
Od 4 marca br. dostępny jest kod źródłowy Singularity w wersji 1.1 . A dokładniej Singularity Research Development Kit na Codeplex’ie, który zawiera kod źródłowy, narzędzia do kompilacji, narzędzia wspomagające testowanie, dokumentację oraz dodatkowe informacje.

Prezentacje Singularity:
Singularity: A research OS written in C#
Singularity Revisited
Singularity III: Revenge of the SIP
Singularity IV: Return of the UI

Strony:
pl.wikipedia.org/wiki/Singularity
en.wikipedia.org/wiki/Microsoft_Singularity
research.microsoft.com/os/singularity
codeplex.com/singularity

wykop.pl


SFI

Na początku marca miałem okazję przez trzy dni (6-8) uczestniczyć w Studenckim Festiwalu Informatycznym, który odbywał sie w Krakowie w Hali Widowiskowo-Sportowej Uniwersytetu Ekonomicznego. Konferencja oferuje szerokie spektrum poruszanych zagadnień, jak na przykład inżynieria oprogramowania, systemy operacyjne, sieci, czy tematyka open source, także każdy pasjonat powinien znaleźć coś ciekawego. Przyznam się, że pierwszy raz uczestniczyłem w tego typu konferencji i bardzo mi sie podobało. Prelegenci o bogatej wiedzy, miła atmosfera i ciekawa tematyka wykładów sprawiała, że można było spędzić całe trzy dni bez przerwy słuchając..

Jednak z ponad dwudziestu wykładów jakich wysłuchałem, jeden zaciekawił mnie najbardziej, a mianowicie wykład Aleksandra Pohla pt. „Jajem, tyjesz, wyjecie”, czyli dlaczego dialog z komputerem jest taki trudny. Nigdy nie interesowałem się przetwarzaniem języka naturalnego ani wieloznacznością (nawet o tym nie słyszałem ;> ), ale bardzo mnie to zainteresowało. Szczególnie spodobał mi się ten przykład:

I saw clouds flying over Zurich.
Widziałem chmury lecące nad Zurychem.
I saw buildings flying over Zurich.
Widziałem budynki lecąc nad Zurychem.

Te dwa zdania różnią sie jedynie rzeczownikiem, a mają całkiem inne znaczenie. Tylko na podstawie wiedzy zdroworozsądkowej można właściwie przetłumaczyć powyższe przykłady. Człowiek wie, że budynki nie mogą latać więc rozumie właściwie drugie zdanie. Jednak komputer nie wie, że budynki nie latają ;) Problem ten rozwiązują ontologie CYC oraz Sumo, które stanowią formalizację zdroworozsądkowej wiedzy obejmującej najbardziej ogólne własności świata. Ten i inne problemy porusza Aleksander Pohl w swoim wykładzie. Wkrótce powinien ukazać się na stronie festiwalu wykład w formie wideo, więc polecam ;)

Podobały mi się także prezentacje języków Ruby i Pythona, a były prowadzone przez takie osoby jak: Michael Foord (Python), Chad Fowler(Ruby) czy Maciej Fijałkowski (PyPy). W ostatnim dniu jednym z ciekawszych był wykład pt. „Programistyczna ewolucja. Czy programista jest stwórcą?” Pawła Wołoszyna, na którym niestety byłem tylko przez 30 minut.

Teraz pozostaje tylko czekać na kolejną edycję SFI (już miejmy nadzieje, że będzie hot spot ;>).

Podsumowując, pieniądze wydane na bilet kolejowy nie poszły na marne ;>> ^^

d0minikk


(brak pomysłu na tytuł ;)

Hi

Nie pisałem juz ponad miesiąc. Co robiłem przez tyle czasu ? Ogólnie to komp i kilka godzin snu… (sql ;/), eh dobra napisze coś więcej, więc jak zwykle kodziłem trochę w C++, postanowiłem wreszcie dokończyć naukę WinApi, zacząłem czytać kilka książek: TCP/IP Biblia, The Art Of Assembler i Ciszę w sieci lcamtuf’a (na którą czekałem niecałe trzy tygodnie, pzdr Helion). I w sumie tyle ^^. Co do kilku projektów, które zacząłem w C++ (m.in. Warcaby i MultiCoder), to żadnego nie skończyłem (boo po co… ^^). Wreszcie przeniosłem się na Viste 64bit i po wywaleniu Ubuntu z hdd zainstalowałem Slackware 12.0 . I mam nadzieję, że tak już zostanie (na razie ;>>).

A na koniec d0minikk’s Google Stats ;>> Będzie fajnie za rok zobaczyć o ile wzrosło moje wykorzystanie tej genialnej wyszukiwarki. (Statystyki dostępne w galerii).

d01


Centrum dowodzenia d0minikk’a

Dzisiaj może napisze coś o moim ‘centrum dowodzenia’ :D ;>>

Aktualnie :> na dysku posiadam zainstalowane dwa systemy, tj. Windows Vista 32bit (wkrótce przesiadka na 64bit) i dystrybucję Linuksa – Ubuntu 7.10 Gutsy Gibbon. Oprócz tego korzystam także z wirtualnych maszyn (Virtual PC, VMWare) do testowania różnych rzeczy ;>>, m.in. zainstalowane mam Solaris 10, Windows Server 2008 Beta 3, Windows XP, Slackware 12.0 , FreeBSD 6.2, DSL 3.4.1, Gentoo 2007.0 LiveCD, własny bootloader z idiotycznym kernelem wyświetlającym „hello” ;| i jeszcze jakieś pierdoły.

Środowiska programistyczne, w których pracuję to: Dev-Cpp 4.9.9.2, CodeBlocks, Visual Studio 2005 i 2008 wersje beta, czasem narzędzia z rodziny Microsoft Expression.

Maszyna:

Intel Core 2 Duo E6750
Asus P5K
Patriot 2GB 800MHz cl4
GeForce 7900GS 256mb
HDD: 250 GB Samsung

Zdjęcia i screeny dostępne są w galerii.

d01


Hello World

Czyli witaj wordpress’ie !
Jak widać przeniosłem sie na platformę wordpress.
Wszystko już powoli wygląda tak jak chcę.

Mój stary blog możecie znaleźć pod tym adresem d0minikk.blogspot.com – jakby ktoś chciał się pośmiać or sth ^^
Kilka wpisów przeniosę na tego bloga.

Co skłoniło mnie do zmiany platformy ?
Głównie to większe możliwości platformy wordpress. Jednak drugim czynnikiem było to, że pojawiła się spora grupka czytelników, co mnie bardzo zaskoczyło ;>

d01


Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.