Scientific WorkPlace 3.0 by GustawKit

Target: Scientific WorkPlace 3.0
What  : Serial & crack
Tools : SoftICE

Scientific WorkPlace 3.0 jest ciekawym programem do edycji i prezentacji dokumentów technicznych i matematycznych. Do ograniczen czasowych wersji demonstracyjnej zastosowano biblioteke TimeLock 2.0 Pozwole sobie zasugerowac tutaj sposoby rozwiazania crack'u tego programu. Jest kilka wersji bibliotek TimeLock, ta akurat umozliwia nam wprowadzenie poprawnego numeru Unlock wiec bardziej wskazane jest znalezienie takiego kodu zamiast modyfikacji programu. Rozwiazanie jest proste, stosujemy pulapki na standardowych funkcjach GetDlgItemTextA lub GetWindowTextA. Program wywoluje ta funkcje bodajze trzy razy, czyli powinnismy otrzymac taki fragment kodu :

014F:10003FA5  FF15DC630110        CALL    [USER32!GetDlgItem]
014F:10003FAB  6A31              * PUSH    31                 <--- jestesmy tutaj
014F:10003FAD  68503B0110          PUSH    10013B50
014F:10003FB2  50                  PUSH    EAX
014F:10003FB3  FFD3                CALL    EBX
014F:10003FB5  8D45D8              LEA     EAX,[EBP-28]       <--- tutaj adres wpisanego kodu
014F:10003FB8  50                  PUSH    EAX
014F:10003FB9  E84ADDFFFF          CALL    10001D08           <--- generowanie poprawnego
014F:10003FBE  83C404              ADD     ESP,04
014F:10003FC1  8D45EC              LEA     EAX,[EBP-14]
014F:10003FC4  8D4DD8              LEA     ECX,[EBP-28]
014F:10003FC7  50                  PUSH    EAX
014F:10003FC8  51                  PUSH    ECX

W rejestrach EAX i ECX zawarte sa kody, nasz wpisany i ten poprawny wygenerowany w funkcji wywolanej przez CALL 10001D08. Wiec jak wyswietlimy d EAX i d ECX bedziemy juz wszystko wiedziec. Po wpisaniu poprawnego kodu dane program zapisze do pliku workplac.tsf w katalogu win.

Jezeli natomiast koniecznie chcemy zcrackowac program nie znajac numeru Unlock to mozna to zrobic w nastepujacy sposób. Musimy miec wpisana tl32v20.dll w EXP=... w pliku winice.dat. Gdy wyswietlimy w SoftICE exp otrzymamy spis funkcji exp min z biblioteki tl32v20. Nas bedzie interesowac funkcja ShowMainDialog. Zastawmy na niej pulapke. SoftICE przejmie kontrole w tej funkcji, po wyjsciu z niej otrzymamy taki oto kod:

014F:005F0188  85C0               TEST    EAX,EAX
014F:005F018A  0F85CB000000       JNZ     005F025B
014F:005F0190  686C0E7900         PUSH    00790E6C
014F:005F0195  FF1594D27900       CALL    [tl32v20!showMainDialog]
014F:005F019B  8945FC             MOV     [EBP-04],EAX
014F:005F019E  8B55FC             MOV     EDX,[EBP-04]
014F:005F01A1  8955D4             MOV     [EBP-2C],EDX
014F:005F01A4  8B45D4             MOV     EAX,[EBP-2C]
014F:005F01A7  83C005             ADD     EAX,05
014F:005F01AA  8945D4             MOV     [EBP-2C],EAX

jest to fragment funkcji sprawdzajacej za pomoca biblioteki TimeLock stan czy program moze zostac uruchomiony czy tez jest zarejestrowany czy czas sie juz skonczyl. Sledzac te funkcje az do wyjscia z niej (ret) otrzymamy taki kod :

014F:005F0334  E857F9FFFF         CALL    005EFC90
014F:005F0339  85C0               TEST    EAX,EAX
014F:005F033B  7507               JNZ     005F0344
014F:005F033D  33C0               XOR     EAX,EAX
014F:005F033F  E982260000         JMP     005F29C6
014F:005F0344  E847FDFFFF     *   CALL    005F0090  <--- wywolanie powyzszej funkcji
014F:005F0349  85C0               TEST    EAX,EAX   <--- sprawdzenie wyniku funkcji
014F:005F034B  7507               JNZ     005F0354  <--- skok jezeli EAX=1 czyli good
014F:005F034D  33C0               XOR     EAX,EAX
014F:005F034F  E972260000         JMP     005F29C6
014F:005F0354  68B0E55E00         PUSH    005EE5B0

Co mozna tu zrobic, mozna usunac wywolanie funkcji a do eax wpisac 1. Czyli zamiast Call 005F0090 wpisac mov eax,1 wzglednie usunac wywolanie funkcji a zamiast skoku warunkowego wpisac skok bezwarunkowy itp.

Polecam przeanalizowanie tych fragmentów w SoftICE, nalezy zwrócic uwage na wartosci w rejestrze EAX (jezeli dajemy w okienku TimeLock Cancel lub Ok).

Mysle, ze lepszym sposobem jest zmodyfikowanie programu aby nie wywolywal biblioteki tl32v20.dll niz modyfikacja biblioteki tl32v20 zeby dawala poprawny wynik bez wzgledu na kod Unlock.

Informacje na temat TimeLock znajdziesz na naszej stronie CrackPl lub na http://fravia.org