------------------------------ TEMAT: Poznajemy nowa instrukcje (rol) i instrukcje jej odwrotna (ror) oraz sposob ich dzialania. ------------------------------ ----------------------------- CO MY TU MAMY?.. I ZACZYNAMY! ----------------------------- W tej lekcji opisze tc nr 6 (Add4v3.exe).. ktore jak juz (prawdopodobnie) zauwazyles potrzebuje hasla do rejestracji, a my (crackerzy) mamy za zadanie dac mu to czego potrzebuje (haslo). Wiec zacznijmy wreszcie bo jest 05.00 nad ranem i chcialbym jeszcze dzisiaj isc spac (chyba mi nie wyjdzie to spanie..) ale coz... od czego jest szkola i robota.. he.. dobrze.. od spania! Dobra zacznijmy wreszcie. Maly opisik poczynajac od instrukcji number uno jest due lini nizej ;): 015F:004010E2 E88F000000 CALL USER32!GetWindowTextA <- wywolanie funkcji 015F:004010E7 33F6 XOR ESI,ESI <-| juz bardzo 015F:004010E9 33FF XOR EDI,EDI <-|dobrze znamy 015F:004010EB BEA8304000 MOV ESI,004030A8 zobacz co jest pod przenoszonym adresem: d 004030A8 he.. cos ci to przypomina... nic?? to dobrze bo mnie tez nie.. ale powiem ci ze to jest zakodowane haslo.. 015F:004010F0 8B36 MOV ESI,[ESI] dword (cztery bajty) spod adresu w esi jest do tegoz rejestru przenoszone a innymi slowy 4 bajty naszego zakodowanego prawidlowego hasla w naszym przypadku jest to cale zakodowane i prawidlowe haslo... 015F:004010F2 BF00314000 MOV EDI,00403100 015F:004010F7 8B3F MOV EDI,[EDI] adres do tego co wpisalismy przenoszony jest do edi a nastepnie pierwsze cztery bajty (znaki) tego co wpisalismy rowniez jest przenoszone do tego rejestru... 015F:004010F9 81F721436587 XOR EDI,87654321 xor'owanie.. he he.. pierwszych czterech wpisanych bajtow (znakow) z wartoscia 87654321h, jesli nie wiesz jak to dziala odsylam do lekcji 2 oraz 6... 015F:004010FF C1C703 ROL EDI,03 a tu mamy cos nowego... jest to instrukaja rol. Instrukcja ta operuje na bitach.. a w jaki sposob?? to juz mowie. Zalozmy ze w rejestrze mamy liczbe 12121212h... jej odpowiednikiem binarnym jest: 10010000100100001001000010010 to wykonujac na tej liczbie rol'owanie o 03h (o tyle ile mamy w tc) zostaje wykonane na niej przesuniecie w lewo trzykrotnie a zmiany te zachodza nastepujaco: Po przesunieciu o 1h - 00100001001000010010000100101 Po przesunieciu o 2h - 01000010010000100100001001010 Po przesunieciu o 3h - 10000100100001001000010010100 wiec jak juz pewnie zauwazyles instrukcja rol wykonujac przesuniecie w lewo z kazdorazowym przesunieciem (o jeden) przenosi pierwszy bit z lewej strony na pozycje pierwsza ze strony prawej nie nadpisujac jednoczesnie bitu ktory byl wczesniej tylko dopisu jac go. Pozwole sobie oznaczyc 9 bitow cyframi od 1 - 9 co pozwoli na lepsze zauwazenie zmian zachodzacych podczas rol'owania. W tym przykladzie bedziemy rolowac rowniez o 03h. liczba poczatkowa to: 1 2 3 4 5 6 7 8 9 Po przesunieciu o 1h - 2 3 4 5 6 7 8 9 1 Po przesunieciu o 2h - 3 4 5 6 7 8 9 1 2 Po przesunieciu o 3h - 4 5 6 7 8 9 1 2 3 no to juz nie ma chyba co z tym rol'owaniem tlumaczyc bo juz chyba wszystko widac... Instrukcja odwrotna do rol to ror a dziala ona na takiej samej zasadzie jednakze przenosi bity ze strony prawej na lewa... a nie tak jak to bylo podczas rol'owania ze z lewej na prawa... 015F:00401102 3BF7 CMP ESI,EDI 015F:00401104 7418 JZ 0040111E jesli po xor'owaniu i rol'owaniu wartosc w edi (nasze zakodowane haslo) jest rowna tak samo zakodowanemu haslu prawidlowemu to skok "jz" sie wykonuje i otrzymujemy wiadomosc o prawidlowym hasle a w przeciwnym wypadku... bash... No to pewnie sie domyslasz co bedziemy teraz robili.. he.. odkrecali zakodowane prawidlowe haslo tak aby otrzymac wynik prawidlowy... proste?? no wiedzialem ze ty tez tak myslisz. Wlasciwie do odkrecenia mamy tylko dwie instrukcje: 015F:004010F9 81F721436587 XOR EDI,87654321 015F:004010FF C1C703 ROL EDI,03 w zasadzie zeby otrzymac prawidlowe haslo wystarczy przepuscic wynik kodowania na prawidlowym hasle (30A9624Fh) przez odwrotnosc tego przez co bylo przepuszczane oryginalne haslo czyli: ror edi, 03h xor edi, 87654321h zakladajac ze w edi jest wynik operacji na oryginalnym hasle (30A9624Fh) to po przejsciu przez ta procke w edi bedziesz mial prawidlowe haslo... ta procke mozemy wykonac na dwa sposoby. Pierwszy sposob to z lini komend czyli tak samo jak w poprzedniej lekcji uzywajac odpowiednich operatorow, czyli: ? 30A9624F >> 03 nastepnie: ? wynik_poprzedniej_operacji ^ 87654321 i wynikiem tego bedzie prawidlowe haslo pisane od tylu (of course ;))... Drugim sposobem jest zmiana kodu crackme w taki sposob aby wyliczyl nam odpowiednie haslo, a mozesz to zrobic np. tak: gdy sie znajdziesz na tej lini: 015F:004010F9 81F721436587 XOR EDI,87654321 wpisujesz: a [enter] i wpisujesz nasza procke.. z tym jednak ze mozesz wykorzystac to ze w esi jest juz wynik operacji na prawidlowym hasle a ze uznalem ze mozesz nie zauwazyc wiekszych roznic to postanowilem po lewej stronie umiescic zapis oryginalny a po prawej zmodyfikowa ny: _____________________________________________________________________ | ORYGINALNY | ZMODYFIKOWANY | |_______________________________|____________________________________| | xor edi, 87654321 | ror esi, 03 | | rol edi, 03 | xor esi, 87654321 | |_______________________________|____________________________________| i jesli tego jeszcze nie zrobiles to: a [enter] i kazda zakonczona linie kodu potwierdz jednokrotnie enter'em a gdy zakonczysz wpisywanie potwierdz to dwukrotnym nacisnieciem klawisza enter.... Kiedy juz dokonasz odpowiednich zmian to naciskaj F10 az do momentu w ktorym znajdziesz sie zaraz za ostatnia zmodyfikowana instrukcja czyli to bedzie na instrukcji "cmp". Jesli juz tam jestes to teraz: ? esi [enter] co pozwoli wyswietlic zawartosc esi w postaci hex, dec i ascii ;-) he.. wpisales juz?? to dobrze... teraz jesli czegos nie pochrzaniles powinienes widziec cos takiego: 61706F68 1634758504 "apoh" nas interesuje tylko odpowiednik ascii czyli: "apoh" ale nie spiesz sie tak jeszcze.. "apoh" to nie jest prawidlowe haslo... prawidlowe bedzie wtedy gdy je przepiszesz od tylu czyli to bedzie: Oryginal: apoh Po odwroceniu: hopa no to widac tu bardzo dokladnie ze apoh czytany od tylu daje hopa i to wlasnie powinno byc prawidlowym haslem.. a jesli nie jest... to masz nie mojego crackmes'a ;)) a jak masz mojego to jest to prawidlowe haslo... Jesli tak na to wszystko rzucic okiem to jest to bardzo proste. Jedyna informacja jaka z tej lekcji powinnismy wyciagnac to ze mozemy sobie w pamieci (o ile jest to mozliwe) napisac odpowiednia procke dekodujaca, o czym (mniej, wiecej) bylo w jednej z wc zesniejszych lekcji oraz to ze instrukacja rol jest odwrotna do ror i odwrotnie... Coz mnie nie pozostaje nic innego jak sie isc przekimac.. teraz... albo napisze jeszcze jednego tutka.. tak zeby mi sie lepiej kimalo ;)) pozdrawia, muSzyn^Un, ----------------- Jesli chcesz cos ode mnie prywatnie.. przeslac pieniadze czy rzucic milym slowem to wal tu: muszyn@hoga.pl ----------------- Jesli chcesz sie czegos dopytac odnosnie craczenia to wal tutaj: crk_pomoc@poland.com ----------------- Na prosby o cracki nie odpowiadam. W dyskusje na temat piractwa, religii itp.. sie nie wdaje. ;))
afikomp