UWAGA: włącz "zawijanie wierszy" w swoim edytorze !
Tekst powstał przy użyciu Notepad-a Windows 95 i korzysta z wszelkich "dobrodziejstw" tego systemu ze szczególnym uwzględnieniem strony kodowej ! ;-)
How to ... czyli: "Nie wszystko złoto co się świeci !"
---------------------------------------------------------
Cel : Uzyskanie wersji zarejestrowanej XARA3D 3.0 Trial z 9 grudnia 98 (PCWK 02/99)
Narzędzia : W32DASM, SI
Próba zarejestrowania programu, sugerowana przez sam program przy każdym jego starcie, nieodmiennie kończy się komunikatem informującym o wprowadzeniu błędnego kodu (program nie pyta o użytkownika, lecz jedynie o #SN !). Nie skutkują standartowe pulapki na zakładane na
wywołania standartowych funkcji API.
Poslużenie się W32DASM da nam plik ze zdisamblewanym kodem XARA 3D !
Jednak w okienku "strings" nie znajdujemy komunikatu generowanego po nieudanej rejestracji ! Poslużymy się zatem poleceniem "Find String" dostępnym w Menu programu : "You entered" ... ! Program zatrzymuje sie po chwili na odpowiednim adresie. Kilka linijek wyżej znajdujemy adresy skąd, w trakcie realizacji programu, nastepuje skok do miejsca w kodzie wskazującego na podanie blednego SN. Miejsc tych jest w sumie DZIEWIĘĆ !!!
Obserwujemy, że pierwszych siedem nastepuje po wywołaniu jakiejś procedury i testowaniu tego co "zwracane" jest przez nią w rejestrze AL.
Spisujemy sobie wszystkie adresy odwołań warunkowych i zamykamy z W32DASM. Nie będzie nam już potrzebny plik ze "źródłem" XARA 3D.
Uruchamiamy SILoader, i z niego, nasz program XARA3D. SILoader zatrzymuje nas na pierwszym rozkazie programu. Ustawiamy pulapke BPX na pierwszy z adresow zdobytych dzieki W32DASM i pozwalamy programowi na swobodne realizowanie swoich funkcji !
Proba rejestracji spowoduje zadzialanie pulapki. Posłużmy się tym !
Zatrzymujemy sie w miejscu skad nastepuje skok pod adres realizujący polecenia związane z podaniem błednego kodu !
Gasimy go (F9) i ustawiamy nowy (F9) kilka linii wyżej, tam gdzie jest wywołanie "procedury kontroli". Pozwalamy programowi "pójść" dalej, oglądamy komunikat o błędnym kodzie i podejmujemy kolejną próbe rejestracji. SI zatrzymuje nas w miejscu wejscia do "procedury
kontroli". F8 wprowadza nas do jej wnętrza. Krótka procedura pobiera znak z wprowadzonego przez nas SN i w kilku poleceniach kontroluje czy SN spełnia jakiś wstępny warunek. Kilka eksperymentów prowadzi do prostego wniosku iż pierwszy znak naszego SN MUSI!!! być WIELKĄ literą !
Poprawiamy co trzeba we wprowadzonym SN i rejestrach i spokojnie śledzimy (F8) co dzieje się dalej.
Program wraca z "procedury kontroli" do głównego wątku i "przechodzi" przez pierwszy z "punktow kontrolnych". Kolejne wywołania tej samej co porzednio procedury prowadzą do wniosku, iż CAŁY SN MUSI skladać się z dokładnie 7 LITER pisanych WIELKIMI znakami.
Po pomyślnym przejściu przez wszystkie siedem punktów kontrolnych przechodzimy do "kawałka"
odpowiedzialnego za wygenerowanie na podstawie wprowadzonego SN wartosci jednego z rejestrów i porównanie go z innym, równierz modyfikowanym rejestrem.
Skok warunkowy wykonywany w efekcie ich porównania prowadzi wprost do "nielubianej" przez nas sekwencji rozkazów wyświetlajacych komunikat o błędzie !
Spróbujmy zatem wymusić poleceniem "R FL Z" zmianę reakcji programu na podany przez nas SN.
I to jest już to !
Kolejne wywolanie programu nie udostępnia już mozliwości rejestracji, zaś program wydaje się być pozbawiony manifestowanych dotąd restrykcji!
Kilka eksperymentow prowadzi do wniosku iż program "zapamietuje" fakt "poprawnej" rejestracji w Rejestrach !
Wystarczy obecność wpisu:
[HKEY_CURRENT_USER\Software\Xara\X3D3\Install]
"Key"=dword:fc611acb
by wszystko bylo OK natomiast jego brak lub zmiana wartości powoduje przywrócenie możliwości rejestracji z wszelkimi wynikajacymi z tego faktu konsekwencjami.
Dwa dni później:
Już po napisaniu tego tekstu i wysłaniu go na listę dyskusyjną CrackPL jeden z jej uczestników - Jo Joro - (thnx!) zauważył, że jego "Key" miał inną wartość !!!
Postanowiłem to sprawdzić !
Okazało się, że XARA 3D, jeszcze przed przystąpieniem do do pobierania naszego SN już "wie" ukrywawając ten fakt w wartości rejestru EBP, jaką wartość będzie miał "Key" jeśli, oczywiście, podamy poprawny SN (lub wymusimy na programie jego akceptację!).
Postąpiłem zatem tak:
1) po dojściu programu do miejsca w którym poprzednio zmieniłem wartość flagi Z nacisnąłem F12 i znalazłem się "u wyjścia" z procedury wprowadzania i kontroli SN. Postawiłem BPX na "wejściu" do niej, pozwoliłem programowi "toczyć" się dalej i podjąłem kolejną próbę rejestracji. Tym razem jednak, kiedy SI zatrzymał się na wejściu do procedury posłużyłem się klawiszem F8 i dalej używając F10 obserwowałem zmiany wartości rejestru EBP oraz realizujący się kod programu (wiem, od tego można dostać zeza, ale trudno: "Per aspera ad astra" !).
Okazało się, że program wywołuje tutaj funkcje API operujące na rejestrach WIN-dy !
Otwiera klucze, pobiera ich wartości, zamyka je, realizuje jakieś swoje funkcje itp.
Ponieważ jednak parametry wywołań tych funkcji (czytaj: nazwy otwieranych kluczy rejestru) przekazywane były w nieczytelny dla mnie sposób, postanowiłem użyć wyspecjalizowanych narzędzi !
Pozwoliłem programowi "lecieć", obejrzałem sobie kolejny raz informację o błednie podanym kodzie (sprawdziłem jednak, jeszcze w SI, uzywając polecenia TASK, że XARA 3D jest widziany przez system jako "zadanie" o nazwie "X3D").
Uruchomiłem program Regmonit. Jego zadaniem jest przechwytywać wszystkie odwołania do rejestrów realizowane przez system na polecenie innych programów. Posiada on także opcję filtrowania tych odwołań. Po użyciu filtra "X3D" (nazwa zadania XARA !) wybrałem kolejny raz polecenie rejestracji. Okazało się, że X3D wywołuje kilkakrotmie rejestry w celu pobrania pewnych informacji ! Jak łatwo zgadnąć informacje dotyczyły bezpośrednio naszego komputera i wykorzystywane były przez program do modyfikacji wartości rejestru EBP zapamiętywanej później jako "znacznik" poprawnej rejestracji ! Kolejne próby udowodniły, że wszystkie te wartości są pobierane z rejestrów i na ich podstawie podejmowana jest przez program, po dodatkowej "obróbce" decyzja o tym czy został już wcześniej zarejestrowany czy też nie !
Dopiero taki "komplet" informacji daje programowi podstawy do wydania werdyktu !
Kontrolowane wartości to:
------- Cut here -------------
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
"RegisteredOwner"="tato@iname.com"
"RegisteredOrganization"="CrackPL"
"FirstInstallDateTime"=hex:00,00,00,00
[HKEY_CURRENT_USER\Software\Xara\X3D3\Install]
"Key"=dword:3DB2CE3F
------- Cut here -------------
Jakiekolwiek odstępstwo od podanych tu danych zpowoduje wygenoerownie nowego "Key", porównanie go z tym istniejący w rejestrze i, na tej podstawie, wydanie werdyktu !
Wszelkie uwagi proszę kierować do autora tekstu:
tato@iname.com
21 stycznia 1999 r. godz. 01_30
Wyszukiwarka
Podobne podstrony:
E Book Art Anime How To Draw Iriacracokwanie kurs musk1[1]How to Debate Leftists and Win In Their Own Game Travis L HughesHow to Make your Own Tracer Ammunition08 Learn How To FallHow to Fake FingerprintsHOW TO MAKE AN MESSENGE BOXAudioslave Show Me How To LifeHow to Install And Run Windows XP From USB driveHow to build a solar icemakerTutorial How To Draw EyesSex Secrets How To Turn A Woman On, Satisfy Her In A Big Waywięcej podobnych podstron