
 Witam,

 Maly komentarz na temat crackmesa:

 Swoje zdaje sie drugie i o ile mi wiadomo ostatnie do tej pory crackme
oxcart napisal gdzies 3 lata temu, a jak mowi about skonczyl to robic
8 kwietnia 2000 roku, tj. 3 lata i 6 dni temu jak to pisze. O ile pamietam
nigdy nie pojawilo sie zadne jego rozwiazanie, ale sam autor zapewnial,
nie wiem juz czy mowil to mi bezposrednio, ale utkwilo mi w pamieci ze
lamal je przez tydzien. I polamal, co swiadczylo o tym ze lamliwe jest.
Pozniej zdaje sie czesto mowiono "jak jestes twardziel to polam crackme
oxcarta". Nie dalej jak tydzien temu znow bylem swiadkiem tych slow, wiec...

 Dlaczego by go wiec nie polamac... ?

 Pierwszy problem jest taki ze crackme ma pewne problemy z uruchamianem
na windowsie 2000 i podejzewam ze XP tez. Wobec tego zmodyfikowalem procke
obslugujaca komunikaty glownego okna w ten sposob ze na wejsciu zachowywuje
rejestry ktore zwraca na wyjsciu, oraz w eax zawsze jest 0. Byc moze nie jest
to dzialnie dokladnie takie jak podaje dokumentacja MS etc, jednak dzieki temu
okno widac poprawnie i mozna dzialac dalej. Zamykanie okna po kazdorazowym
sprawdzeniu seriala tez bylo troche irytujace wiec to zmienilem. Podejzewam ze
zamyka sie, poniewaz wiele buforow zmienia swoj stan, ktory przy takich samych
danych wejsciowych moze dawac zupelnie inne wyniki, ktore pozniej sprawdzane
sa w kodzie. Nie jest tez trudno przepelnic buforek tu czy tam. Jenak mozna
znalesc rozwiazanie takie by zmiescic sie w rozsadnych granicach pamieciowych.

 Crackme dziala po krotce tak:

 Serial wystarczy podzielic na 4 czesci oddzielajac je znakiem '-'.
Kazda taka czesc jest zamieniana w dwoch etapach na dworda, ktory ogolnie
mowiac jest mnozony i do ktorego sa dodawane pewne liczby. Istnieja dwa
bufory do ktorych te szczegolne dwordy sa wpisywane, kazdy 20h rozmiaru, przy
czym nie potrzeba go wiecej niz 10h. Oba bufory sa zasadniczo rozne, co jednak niczemu
nie przeszkadza.
Na podstaiwe dwordow +00h i +0Ch z tablicy 1 jest tworzony kawalek procki ktora przerabia
pozniej bufor drugi, przez co wyglada to mniej wiecej jakby serial tworzyl kod sprawdzajacy
samego siebie. I tak istotnie jest, a zaleznosc tych dwoch buforow od siebie jest
symboliczna. Na koncu wartosc +0 zxorowana z +0Ch oraz +04h xorowana z +08h musi po
zsumowaniu dac wynik 0.

 Wiec trzeba jechac cala procka od konca.

 Moj kod odwracajacy w pewnych miejscach sklada sie z malych bruteforcow jako ze nie widze
lepszych mozliwosci obliczenia pewnych wartosci przy odwracaniu procki.

 Takze ostateczna postac seriala program liczy nieco na czuja, jako ze nie znam sie
na matmie nawet mnozonej na tyle dobrze by powiedziec czy dla kazdej zadanej wartosci
istnieje rzeczywiscie przyzwoity string ja generujacy. To jest powod dla ktorego
niektore seriale wygladaja dziwnie, tzn zawieraja krzaki oraz nie dzialaja. Trudno,
zasada dzialania moze nie jest 100% doskonala, ale dla mojego nicka liczy w porzasiu i
reszta mnie grzeje :-)

 Co to ja chailem jeszcze. A tak... Nie wiem czy to w zamiarze oxcarta bylo, ale
mam wrazenie ze popelnil maly blad, zamienil operandy, czy cos... bo nie widze sensu
w instrukcjach:

     xor     eax, [esi+ecx*4]
     mov     bl, al
     add     bl, ah
     ror     bl, 3
     mov     al, bl   ; tutaj AL jest CZYMS, odwracam to malym bruteforcem
     ror     bl, 2
     mov     bl, ah   ; jakby bylo odwrotnie byloby fajnie, a tak w ogole
                      ; nie jest uzywane, nie ma sensu itd. Ale przez to
                      ; serial odwraca sie szybciej.
     rol     eax, cl

   Serial powinien skladac sie raczej z malych liter i cyfr 0-9, i niczego innego.
 Crackme jako takie przyjmuje wszystkie znaki, co nie ma wiekszego sensu bo i tak
 ich nie obsluguje i traktuje jako jeden. Tez to powoduje czasem bledy w dzialaniu
 calego algorytmu.

  Ogolnie crackme jest fajne, choc zawiera pewne smieci ktore sa w ogole bezuzyteczne
 ale i tak widac co sie dzieje i z czym trzeba powalczyc. Nie wiem o co bylo tyle
 zachodu, ze takie straszne, bo jest bardzo fajne. Rekurencja jest dobra na wszystko.
 :-) Ogolnie jakies 3 dni zabawy, z ewentualna przerwa weekendowa na wizyte u dziewczyny
 chlopaka, wyprowadzenie psa etc...

  Dawno nic nie lamalem, przydalo sie crackme jako odswierzenie wiadomosci ogolnych
 i umiejetnosci pisania w asmie. Prawde mowiac to najpierw odwracalem te procki, a
 pozniej dopiero zastanawialem sie co sie dzieje w nastepnych i jak calosc
 rozwiazac. Dzialanie to bylo bez sensu bo polowa tego odwracania i tak sie nie przydaje

  Ciau...




