Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


--------------------------------
TEMAT: Omowienie nowego typu zabezpieczenia, zadnych nowych instrukcji oraz hit (kit??) jak zmienic wartosc rejestru, postawic lub zdjac flage i zmieniac instrukcje w pamieci??
--------------------------------

-------------------
WSTEPNIAK
-------------------

hey... witaycie... to jest druga lekcja, ktora dla was pisze.. he.. cieszycie sie co?? Przynajmniej chcialbym zeby tak bylo... pamietajcie, ze zawsze warto jest sie usmiechac i cieszyc bo po co rozpamietywac jakies badziewne historie... no ale troche (a
nawet bardziej) zboczylem z tematu. Ta lekcja bedzie krotka, aczkolwiek tresciwa... wiec chyba nie ma co przeciagac tylko wreszcie zaczac nauke...

-----------------------------
OMOWIENIE TYPU ZABEZPIECZENIA
-----------------------------

Aby otrzymac podstawowe informacje trzeba najpierw uruchomic test_crackme nr 2, wiec zrob to. Widzisz teraz ze masz podac serial, wiec... emm czekaj.. czekaj.. serial?? a co to jest serial?? he.. pamietasz, gdy uruchomiles poprzednie test crackme miales
podac haslo, wiec ja ci objasnie co to jest haslo i co to jest serial a ty wnioski juz chyba wyciagniesz.
Jesli mamy podac haslo to mozemy uzyc dowolnych znakow ktore mozna zastosowac z klawiatury (cyfry, litery, znaki specjalne), np. muSzyn. W hasle mozemy zastosowac kombinacje wszystkich dostepnych znakow np. m1@S{yn+. Teraz obliczmy ile znakow mozemy zast
osowac w hasle. Mamy 26 liter malych i 26 liter duzych, w sumie mamy ich 52. Mamy 10 cyfr (0 do 9), czyli juz mamy 62 znaki do wykorzystania. Do tego dochodza wszystkie znaki specjalne ktorych nie sposob wymieniac bo niektore sa dostepne tylko dla okresl
onych ludzi, np. polacy uzywaja polskich liter typu: ê󱶳¿¼æñ, a niemcy juz ich nie uzywaja natomiast uzywaja swoje tam jakies inne. Znakiem specjalnym jest np. "r" w koleczku mowiace o tym ze nazwa danej firmy jest zastrzezona. Mozemy rowniez uzyc (nie
wiem czy te znaki uznane sa jako specjalne czy nie, ja uznalem je jako zwykle wiec jesli zle uznalem to bez zadnego gromami walenia na skrzynke) znakow, `~!@#$%^&*()_+-=<>?,./:";'{}[], ktorych w sumie jest 30. Czyli mamy juz 62 + 30 = 92. Dodajmu do tego
spacje (bo to tez znak) i mamy juz 93. No wiec wniosek z tego wnioskowania i dodawania taki ze teoretycznie w hasle mozemy wykorzystac 93 znaki + multum znakow specjalnych.
Serial natomiast jest numerem. Jesli program pyta sie ciebie o serial to znaczy ze mozesz uzyc tylko 10 znakow, cyfr od 0 do 9. Nie dozwolone sa litery czy znaki specjalne. Ta informacja jest bardzo istotna chocby przy uzyciu techniki brute force o ktore
j daaalej, w nastepnych lekcjach....
No to jesli wiesz juz czym rozni sie serial od hasla to jedziemy dalej...

-----------------------------
ZACZYNAMY ;-))
-----------------------------

Teraz juz wiesz ze masz do wykorzystania tylko cyfry, nie mozesz wpisywac zadnych liter.. znaczy mozesz ale po co?? jak wiesz ze serial z litera napewno bedzie blednym serialem.
No to jesli masz uruchomionego test_crackmes'a (Add2v2.exe) to wpisz jakis numerek. Ja wpisalem:
1111
Jesli wpisales to teraz ctrl-d. Powiem ci ze test_crackme lapie sie na GetWindowTextA... pomysl co musisz teraz zrobic.. juz pomyslales?? i co?? nic?? he.. ale nie martw sie, po jakims czasie bedziesz wiedzial co zrobic od razu. Wiec piszemy cos takiego:

bpx GetWindowTextA
Teraz ctrl-d, klikamy "sprawdz ;)" i he.. he.. ladujemy w si (yeah!!!).. klikamy F11 i juz jestesmy w miejscu zaraz po wywolaniu funkcji.. i widzimy takie oto instrukcje:

//uwaga\\
nie mam tendencji do omawiania tych samych rzeczy kilkakrotnie, wiec jesli cos bylo omowione w lekcji poprzedniej nie bedzie omawiane w tej... i analogicznie w lekcjach nastepnych
\\koniec//

015F:004010E2 E885000000 CALL USER32!GetWindowTextA

Tutaj wywolanie funkcji api na pobranie tekstu. Czasami (jesli programista nie postaral sie aby bylo inaczej) mozemy znalezc adres do ktorego zostalo pobrane to co wpisalismy. Mozemy to sprawdzic w sposob nastepujacy. Musimy przesunac ekran troche do gor
y (ctrl+strzalka_w_gore), tak abysmy widzieli kilka lini nad wywolaniem funkcji. W tym test_crackme mamy cos takiego:
push esi
push edi
push 09
push 0040310C <--- XXX
push dword ptr [004030FB]
CALL USER32!GetWindowTextA

Te wszystkie push'e sa argumentami funkcji na pobranie tekstu. I tutaj jesli przedostatni argument (oznaczony XXX).. nie jest rejestrem.. to piszemy:

d wartosc_argumentu

czyli dla nas:

d 0040310C

i ukaze nam sie w okienku nasz wpisany serial. Mozesz teraz sie zastanawiac "dlaczego jesli argument jest rejestrem to nie warto go sprawdzac??" Poniewaz poprzez wywolanie funkcji rejestry sa modyfikowane, nie wszystkie oczywiscie. Rejestry ktore nie sa
modyfikowane przez ta funkcje to:

edi, ebx, ebp, esi

Wniosek z tego taki ze powyzszych rejestrow funkcja nie modyfikuje i jesli sa postawione jako argumenty to mozesz potem sprawdzac jakie sa w nich wartosci (adresy) i odpowiedni rejestr (postawiony jako argument) bedzie zawieral twoj serial. Jesli argumen
tem jest rejestr inny niz zademonstrowane wyzej, to nie ma nawet co sprawdzac bo sa one przemielone w szerz i wzdluz. Informacja ta jest sprawdzana metoda prob i bledow i wydaje sie byc prawdziwa. A o zastosowaniu tego ze adres naszego seriala jest argum
entem funkcji, bedzie dalej....

Nastepne instrukcje:
015F:004010E7 33F6 XOR ESI,ESI
015F:004010E9 33FF XOR EDI,EDI

operacja xor na rejestrach esi oraz edi w wyniku czego zerowane sa te rejestry...

015F:004010EB BEA8304000 MOV ESI,004030A8
015F:004010F0 BF0C314000 MOV EDI,0040310C

he.. co my tu mamy... chyba to juz przerabialismy... poprostu sprawdz:

d 004030A8

i co mamy?? Baardzo wiele mowiaca liczbe:

1234

no ale nic lecmy dalej:

d 0040310C

he.. czyzby nasz serial?? tak tu jest nasz serial...

015F:004010F5 8B3F MOV EDI,[EDI]

cztery bajty z pod rejestru edi (adres naszego seriala) sa przenoszone bezposrednio do tego rejestru, czyli teraz w edi nie mamy adresu pierwszego bajtu naszego seriala tylko cztery bajty spod tego adresu, a w naszym przypadku jest to caly serial ;-))

015F:004010F7 8B36 MOV ESI,[ESI]

analogicznie tylko ze z liczba "1234"...

015F:004010F9 3BF7 CMP ESI,EDI
015F:004010FB 7418 JZ 00401115

ten kawalek (jak rowniez inne) zdazylismy juz poznac.. ale ja go wykorzystam na nowa nauke.. jaka?? otoz jak zmienic wartosc rejestru?? oraz jak ustawic lub nie flage??
Tutaj jezeli po porownaniu cmp flaga Z bedzie ustawiona to skok "jz" sie wykona czyli bez owijania w bawelne jesli porownywane wartosci sa rowne to flaga Z zostaje ustawiona, skok "jz" wykonany i prawdopodobnie otrzymujemy wiadomosc o prawidlowym hasle.
A z kolej jesli w edi siedzi nasz serial a w esi liczba 1234 to co??... he.. wlasnie.. zgadles.. "1234" to prawidlowy serial... he proste nie?? ale nic skupmy sie na zmianie wartosci rejestrow...
Zakladam ze masz teraz podswietlona instrukcje cmp i jesli wiesz ze twoj wpisany serial jest zly to mozesz zastosowac takiego malego patcha... zmienic wartosc rejestru edi na wartosc rejestru esi (lub odwrotnie, ja preferuje sposob zademonstrowany) co po
skutkuje tym, ze flaga Z zostanie ustawiona.. a robi sie to w ten sposob:

r [enter]

wtedy twoj kursor przeniesie sie do okienka rejestrow po ktorym poruszasz sie strzalkami i tab... czyli najezdzasz kursorem na odpowiedni rejestr, ustawiasz kursora w miejscu odpowiednim.. i piszesz (in hex... of course ;-])... gdy juz skonczys naciskasz
enter'a lub esc (o ile mi wiadomo w wersjach 3.x si po esc zmian nie zapisuje...) i juz mamy zmodyfikowany rejestr i w esi oraz edi jest to samo wiec porownanie wypadnie pomyslnie... no to przejdz do nastepnej instrukcji (F10).. i popatrz na flage Z.. h
e he.. ustawiona prawda?? jesli nie to cos pokreciles... powinna byc ustawiona... no ale nic teraz masz ustawiona flage Z i co nie ladna taka ustawiona.. hmm.. no ta ja zdejmiemy...

r [enter]

i najezdzamy kursorem na ta flage i klawiszem:

insert

ja zdejmujemy.. kolejne zas nacisniecie tego klawisza spowoduje jej postawienie.. ale my zostawimy ja jako zdjeta... i potwierdzamy to enterem (bo esc nie zapisuje zmian w rejestrach flagowych)....
No ale co.. teraz skok sie nie wykona a my chcemy zeby sie wykonal no to mozemy:
- postawic flage,
- wyjsc z si i wpisac poprawny serial,
- wyjsc z si i zaczynajac wszystko od poczatku dojsc do porownania a nastepnie zmodyfikowac rejestr
- zmienic instrukcje jz na przeciwna?? i tym samym nauczyc sie czegos nowego..

ja wybralem ostatnia mozliwosc... otoz mozemy rowniez zmienic instrukcje w pamieci (si gora.. oh yeah!!)... a umozliwia nam to malutki kompilator wbudowany w si oraz komenda:

a [enter]

jezeli mamy instrukcje do zmiany aktualnie podswietlona to wystarczy ze wpiszemy

a

potwierdzimy enter'em i juz mamy po lewej stronie adres pod ktorym bedziemy modyfikowac i kursor czekajacy na komende. Czasami jest tak ze instrukcja do zmiany byla juz wczesniej albo dopiero bedzie, to wtedy uzywamy takiej oto skladni:

a adres_instrukcji_do_zmiany [enter]

czyli dla naszego:

015F:004010FB 7418 JZ 00401115

komenda bedzie miala taka postac:

a 004010FB [enter]

i juz mozemy zmieniac na instrukcje przeciwna, a jest nia "jnz", czyli w skrocie robimy tak:

a adres
dla nas:
a 004010FB

i wpisujemy instrukcje, dla nas:

jnz 00401115

potwierdzamy dwukrotnie enterem (esc nie zapisze zmian).. i juz widzimy ze instrukcja sie zmienila i skok sie wykona.. wiec jest ok..

//Tips\\

Mozesz zmieniac instrukcje oryginalna na jaka tylko tylko ci sie wymarzy.. pamietaj jednak przy zmianach takiego typu jak zademonstrowalem zawsze zachowuj oryginalne adresy skokow, no chyba ze chcesz zeby skok wykonal sie w inne miejsce ale jezeli np. zm
ieniasz skok na przeciwny po to aby sie nie wykonal to staraj sie zachowywac oryginalne adrey skokow.. pozwoli ci to uniknac pozniejszych problemow...
przyklad:
jz 00111111 <-- ten skok sie nie wykonuje

zmieniasz na:

jnz 00111111 <-- dobra zmiana :)
jesli zmienisz na:
jnz 00222222 <-- jezeli ten adres nie jest przez ciebie okreslony (czyt. niewiesz gdzie skacze) to bedzie to zla zmiana :(

przyklad 2:
jz 00333333 <-- skok sie wykonuje

zmieniasz na:
jnz 00333333 <-- dobra zmiana :)
jesli zmienisz na:
jnz 00444444 <-- zla zmiana :(, poniewaz chcesz aby skok sie nie wykonal czyli nie jest ci on potrzebny czyli mozesz zostawic adres oryginalny, a taka zmiana moze spowodowac pozniejsze problemy.. (skad wiesz ile razy i do jakich celow program uzywa tego
skoku)

Wszystkie przyklady sa tylko obrazowym przedstawieniem sytuacji.

\\Koniec Tips'a//

No juz chyba wiesz jak polamac doszczetnie tego test_crackmes'a... znasz serial'a.. wiec nic tylko isc z kumplami na pivo... i oblac zwyciestwo nad drugim rozje..... emm... chcialem powiedziec rozpracowanym crackme w swoim zyciu... Jestes happy?? To dobr
ze bo ja rowniez ;-))).. ale nie ma co isc na pivo.. jeszcze przerob jedna lekcje i wtedy.. oki?? he.. wiedzialem ze mnie posluchasz.. wiec nie czekaj na mnie tylko lec do nastepnej lekcji ;))

ps.
lekcja miala byc krotka... chyba cos mi nie wyszlo...;))


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. ;))
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •