Cracking - Jak zacząć? - Część II

Status
Zamknięty.

0wn3r

Były Moderator
Dołączył
Marzec 10, 2007
Posty
1330
W ostatnim artykule, przypomnieliśmy, albo inaczej, dowiedzieliśmy się wiele ciekawych rzeczy. Nauczyliśmy się również obsługiwać disassembler W32DASM. W tym artykule, zajmiemy się crackowaniem jednego z moich CrackMe.

Teraz, zajmiemy się crackowaniem pierwszego CrackMe w naszym życiu. Ściągamy go stąd :

http://www.ownersite.republika.pl/crackme.exe

Okej, po ściągnięciu, zostawcie to w spokoju. Narzędzia, które będą nam potrzebne:

- W32DASM (zakładam, że jeszcze go macie z poprzedniej lekcji)
- NASM (assembler)
- XVI32 (hex edytor)

Wszystkie te narzędzia, można znaleźć w temacie :

http://www.haker.com.pl/viewtopic.php?t=16366

Dobra, zaczniemy od teorii.
Mam nadzieje, że wiesz co to jest stos i rejestry procesora (to powinieneś wiedzieć z poprzedniego artykułu). Ponieważ nie omawiałem stosu w poprzednim artykule, omówię go teraz. Załóżmy, że mamy pieniądze. Układamy sobie stos 5 złotówek i zauważmy, że mamy tylko dostęp do monety na samej górze. Jak z dołu wyciągniemy, to cały stos 5 złotówek się rozsypie. A załóżmy, że chcemy wziąść środkową monetę, to musimy usunąć te monety, które były nad środkową, itd. Tak możemy uprościć sobie definicje stosu. A teraz stos o którym chciałem wam powiedzieć (nie z monet):

- Stos - obszar pamięci, każde miejsce w stosie ma 4 bajty. Teraz niezależnie od tego, czy funkcja jako parametr przyjmuje znak, czy liczbę, po włożeniu czegoś do stosu, zajmuje to 4b.

Odpowiedzialne rejestry za stos, to:

- dno stosu (rejestr EBP)
- góra stosu (rejestr ESP)

Żeby korzystać ze stosu, używamy funkcji push & pop.
To jest tak jak z monetami, aby dojść do ostatniej monety, musisz zdjąć wszystkie z góry. Czyli masz dostęp tylko do tej pierwszej monety na górze. Tak działa stos. Dobra, aby utrwalić Ci to w pamięci podam to w ten sposób:

- Zmienne lokalne, alokowane są na stosie i assembler lub komputer, zajmuje się nimi od dna stosu. Dno stosu może być przesuwane. Dobra, tyle teorii. Czas działać!

Zdisassemblujcie sobie nasz CrackMe.exe (wreszcie, co nie?).
Zapiszcie listing do pliku i otwórzcie czym kolwiek (może być notatnik).
Jak zauważyliśmy, nasz crackme odlicza od 150 do 0, a potem od 199 do 0 i tak w kółko. Naszym zadaniem jest, aby program odliczył powyżej 200, czyli wyświetlenie tekstu:

ROZWIAZALES CRACKME BY OWNER! GRATULACJE!

Popatrzcie sobie na tą linijkę :

:0040132D FF08 dec dword ptr [eax]

Ona odpowiada, że nasza liczba w programie, ciągle maleje aż do 0 i od nowa wykonuje to samo. Skoro jest dec dword ptr [eax], to musi być jakieś przeciwieństwo, aby się zwiększyła. Owszem, jest takie przeciwieństwo i my je tutaj zastosujemy!

To nasze przeciwieństwo to magia taka, że dec zamieniamy na inc i tyle! No dobra, no i co, że zmodyfikujemy listing zdisassemblowanego kodu, skoro nasz program dalej liczy do zera? Wklejamy do notatnika:

[BITS 32]
inc dword [eax]

Zapisujemy jako, np. bla.asm i wpisujemy taką komendę do nasma (przez cmd, oczywiście):

nasm.exe bla.asm

Powinien nam się w folderze z nasmem, ukazać plik, bez rozszerzenia o rozmiarze 1kb.
Otwieramy go hex edytorem XVI32 i widzimy :

FF 00

I gotowe! Teraz edytujemy naszego crackme szukając FF 08, a dlatego FF 08, bo :

004012BA FF08 dec dword ptr [eax]

Gdy znaleźliśmy w naszym programie otwierając go hex edytorem FF 08, zamieniamy FF 08 na FF 00. Zapiszcie teraz nasz zmodyfikowany program i go odpalcie. Efekt zobaczycie bardzo przyjemny. zamiast zmniejszać się, liczba będzie leciała w górę, aż dojdzie do 200 i wtedy się wyświetli nasza wiadomość.

Zauważcie, że są też inne sposoby rozwiązania tego crackme, np. edycja tekstu, z 150 na np. 200 lub 201, a program, też wyświetli nam oczekiwaną wiadomość.

Jeśli znasz chociaż podstawy jakiegoś języka programowania, możesz sobie pisać własne CrackMe. Np. w C++ jakiś program na hasło, potem to zakodować, itp.
Trzecia część artykułu, powinna wyjść za niedługo, jak tylko będę miał więcej czasu
<

A teraz, zapraszam do nauki asma, bo co to za cracking/reverse engineering, skoro masz małe pojęcie o asmie. Zawsze możesz mnie czegoś spytać na PM, jeśli czegoś nie wiesz. Linki, które mogą Ci się przydać:

http://www.haker.com.pl/viewtopic.php?t=36630
http://www.haker.com.pl/viewtopic.php?t=35958
http://www.haker.com.pl/viewtopic.php?t=34189
http://www.haker.com.pl/viewtopic.php?t=14414

Mam nadzieje, że ta część, czyli druga część artykułu o crackingu/reverse engineeringu, się komuś przydała.
 

h4x

Użytkownik
Dołączył
Styczeń 6, 2008
Posty
107
napewno sie przyda, aczkolwiek jest prostszy sposob ja twoje crackme ;]
zmienic entry point
 
Status
Zamknięty.
Do góry Bottom