EditPlus 1.1 by Janaz

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