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