Poniewaz na liscie pojawilo sie wiele wypowiedzi zeby zamiast crackow/seriali umieszczac informacje w jaki sposob do tego dojsc. Wobec tego zaprezentuje w jaki sposob zlamalem EditPlus 1.1. Mam nadzieje ze komus te informacje sie przydadza. Uzywalem do tego SoftIce i Hiew
Zaczynamy od uruchomienia programu i rejestracji. Dane podajemy w 2 polach tekstowych. Oczywiscie pojawia sie okienko informujace o blednym numerze. Zastawiamy w SoftIce breakpointa na uruchomienie funkcji odczytujacej informacje z pol tekstowych. wykonujemy to poleceniem:
bpx getwindowtexta
Wracamy do programu, podajemy swoje dane i jakis numer, najlepiej taki ktory zapamietamy a nie ciag losowych znakow. Po potwierdzeniu OK znajdziemy sie z powrotem w SoftIce. Program zatrzymal sie w momencie zczytania pierwszego pola (username) naciskamy ctrl+d aby program zatrzymal sie w miejscu zczytania serial numberu a nastepnie f11 aby przeszedl do miejsca wyjscia z tej funkcji. po kilku wcisnieciach f10 (wykonanie pojedynczej instrukcji) zobaczymy nastepujacy kod:
0043D671 MOV EDX,[ESP+0C] 0043D675 LEA ECX,[ESP+10] 0043D679 PUSH EDX 0043D67A PUSH ECX 0043D67B CALL 00465E80
dwie pierwsze instrukcje laduja do ecx adres serial-numberu poprawnego wygenerowanego przez program a do edx adres seriala wpisanego przez nas Mozna sie o tym przekonac wpisujac:
d ecx d edx
Sprawdzmy co dzieje sie dalej. Dwie nastepne instrukcje odkladaja na stos te adresy. Po co to sie dzieje? Te wiadomosci bedace na stosie sa informacja dla procedury porownujacej oba seriale wywolywanej instrukcja CALL. Procedura widzi jedynie adresy obu serial numberow. Jezeli zamiast PUSH EDX wpiszemy PUSH ECX wtedy na stos odlozy sie adres do poprawnego seriala oraz adres do... poprawnego seriala!! Procedura porowna je i oczywiscie beda takie same!!
Crackujac program w tym momencie wyszedlem z SoftIce i ukazal sie komunikat informujacy o poprawnej rejestracji. Dumny z siebie wyszedlem z programu i uruchomilem go ponownie i w tym momencie porazka - program zada rejestracji. A to spryciarz pewnie to co wpisalem zapamietal w pliku albo w rejestrze. Ponownie uruchomilem SoftIce. Oczywiscie zmienilem tak jak poprzednio PUSH EDX na PUSH ECX i zobaczylem co bedzie dalej.
Po kliku wcisnieciach F10 znalazlem ciag instrukcji:
0043D687 MOV EAX,[ESP+0C] 0043D68B MOV ECX,[ESP+08] 0043D68F PUSH EAX 0043D690 PUSH ECX
po sprawdzeniu co znajduje sie pod adresem eax i ecx wiedzialem ze sa to informacje ktore beda zapisane w rejestrze. Otoz pod eax jest serial ktory wpisalem (niepoprawny) a pod ecx moj username. Wynika z tego ze program zapisuje te dane i zawsze po uruchomieniu sprawdza czy serial zgadza sie z username. Nalezy to jakos ominac. Ale skad tu wziac poprawny serial. Otoz okazuje sie ze przed wykonaniem tych instrukcji pod adresem ecx znajduje sie jeszcze prawidlowy serial. (Nalezy jeszcze zauwazyc kolejnosc wpisywania na stos. Pierwszy w kolejnosci jest adres seriala (eax) a drugi username (ecx)) Tak wiec na stos nalezy wpisac ecx zanim do ecx zostanie wpisany adres username. Powyzszy ciag instrukcji zastepujemy zatem nastepujacym:
MOV EAX,[ESP+0C] //adres naszego seriala PUSH ECX //ale na stos odkladamy adres poprawnego seriala, ktory jest jeszcze w ecx MOV ECX,[ESP+0C] //adres username (poprzednio bylo +08 ale po odlozeniu ecx na stos esp zmalalo o 04) PUSH ECX //i adres username na stos
Po tych zmianach EditPlus dziala bez zarzutu. Moze nie jest to zbyt elegancki sposob lamania programu gdyz ingeruje bezposrednio w kod ale jest bardzo prosty i skuteczny nie ma niepewnosci ze serial zostanie zle wygenerowany gdyz jest generowany przez sam program. Poza tym przedstawiony trik sprawdza sie w wielu programach. Jezeli czytasz jeszcze to co napisalem to dzieki za uwage :). Mam nadzieje ze ktos sie nauczyl czegos nowego Sory jezeli cos jest pogmatwane i nie mozna tego zrozumiec, ale od tego sa pytania