Biblioteka tl32v20.dll jest stosowana w programach shareware do ograniczen czasowych korzystania z programu. Po starcie pojawia sie nag-screen informujacy ile pozostalo czasu korzystania z programu. Umozliwia tez prowadzenie kodu rejestrujacego. Wiele programów wykorzystuje ta biblioteke. Postarajmy sie umiec znalezc poprawny kod. Rózne wersje biblioteki mozna znalezc w internecie, moze na firmowej stronie twórców tej biblioteki http://www.timelock.com
Wgrajmy program wykorzystujacy ta biblioteke np. Quick View Plus Trial lub inny, dajemy rejestracje "Purchase". Mam tu na mysli wersje programu umozliwiajaca wpisanie kodu. Pojawi sie okno dialogowe, wpisujemy dowolny kod (np. 654321) i dowolne user name i company. Przechodzimy do SoftICE (standardowo Ctrl+D) i zakladamy pulapke na wywolaniu funkcji GetWindowTextA (wiadomo bpx ..nazwafunkcji...)., przechodzimy do programu i wciskamy Ok. SoftICE przejmie kontrole i zatrzyma sie na pierwszym wywolaniu tej funkcji. Poniewaz program (w tym wypadku biblioteka tl32v20.dll) wywoluje ta funkcje trzy razy do pobrania trzech tekstów interesuje nas moment po pobraniu wszystkich. Uruchamiamy dalej (Ctrl+D) i jeszcze raz, jestesmy w SoftICE w momencie trzeciego wywolania tej funkcji. Naciskamy F11 do powrotu skad byla wywolana funkcja. Pojawi sie nam mniej wiecej taki kod (oczywiscie adresy beda inne w zaleznosci od wersji) :
:10003FAD 68503B0110 push 10013B50 :10003FB2 50 push eax :10003FB3 FFD3 call ebx <---jestesmy tutaj :10003FB5 8D45D8 lea eax, dword ptr [ebp-28] :10003FB8 50 push eax :10003FB9 E84ADDFFFF call 10001D08 :10003FBE 83C404 add esp, 00000004 :10003FC1 8D45EC lea eax, dword ptr [ebp-14]<-poprawny kod :10003FC4 8D4DD8 lea ecx, dword ptr [ebp-28]<-wpisany kod :10003FC7 50 push eax :10003FC8 51 push ecx :10003FC9 E8A21A0000 call 10005A70 :10003FCE 83C408 add esp, 00000008 :10003FD1 85C0 test eax, eax :10003FD3 7553 jne 10004028 <--dobry, zly kod
Co my tu mamy ? Przeanalizujmy :
push eax przygotowanie na stosie EAX
call ebx wywolanie funkcji GetWindowTextA
lea eax, dword ptr [ebp-28] Pobranie do EAX adresu poprawnego kodu
push eax polozenie na stosie EAX jako parametr do funkcji ponizej
call 10001D08 Wywolanie funkcji generujacej poprawny kod
add esp, 00000004 Uregulowanie stosu
lea eax, dword ptr [ebp-14] pobranie do EAX adresu wpisanego przez nas kodu
lea ecx, dword ptr [ebp-28] pobranie do ECX adresu poprawnego kodu
push eax przygotowanie na stosie EAX do wywolania w Call
push ecx przygotowanie na stosie ECX do wywolania w Call
call 10005A70 Wywolanie funkcji porównania kodów i zapis wyniku do EAX
add esp, 00000008 Uregulowanie stosu
test eax, eax Sprawdzenie wyniku
jne 10004028 Skok "dobry lub zly kod"
Wystarczy wiec podczas sledzenia programu (F10) sprawdzi co jest pod adresem zawartym w ECX (czyli d ECX). Bedzie tam poprawny kod jaki nalezy wpisac w okienku dialogowym. Bingo.
Koncowa notka
Powyzszy sposób jest najbardziej elegancki i czysty. Umozliwia nam zarejestrowanie programu tak jak bysmy to zrobili placac za niego. Niektóre programy uzywaja tej biblioteki, ale nie umozliwiaja wpisania kodu. Mozna spróbowac sposobu opisanego w Jet Audio crack. Poza tym istnieja uniwersalne cracki dla programów zabezpieczonych tym sposobem lub juz zcrack'owane wersje tej biblioteki. Wystarczy tylko poszukac w internecie.
wiecej informacji - http://fravia.org- w projekcie TimeLock