Program : [SupStat v.1.0] Gdzie : [PCWK 1B/99] Narzedzia : dowolny debugger pod Win - np. SofTIce
Program SupStat jest programem statystycznym do obslugi gry systemowej w liczbowe gry losowe. Jest to program polski i dla grajacych np. w totolotka moze okazac sie uzyteczny. Postanowilem opisac sposób lamania tego programu ze wzgledu na nietypowy proces rejestracji. Program po zainstalowaniu zglasza sie w wersji demo ale posiada mozliwosc wpisania danych rejestracyjnych. Program generuje unikalny numer np. 00A190E6-0D6C10E4, który wraz z danymi personalnymi wysylamy aby po rejestracji otrzymac poprawny numer rejestracyjny.
Program jest prosty do zcrackowanie ale postanowilem go opisac, moze poczatkujacy cos z tego tekstu wyniosa a przynajmniej przerabiajac ten program poczuja klimat crackowania.
Zabieramy sie wiec do pracy w standardowy sposób. Uruchamiamy SupStat wraz z debuggerem, wpisujemy ulubione dane rejestracyjne i zastawiamy pulapki na funkcjach pobierajacych dane z okienka dialogowego. Najlepiej od razu pulapki na funkcji API - hmemcpy czyli bpx hmemcpy. Po nacisnieciu Ok debugger przejmie kontrole i znajdziemy sie gdzies w kernel'u. Kilka razy F12 (pret) i dochodzimy do kodu programu SupStat mniej wiecej tu :
014F:004AB2D0 8B55E4 MOV EDX,[EBP-1C] 014F:004AB2D3 58 POP EAX 014F:004AB2D4 E89F8BF5FF CALL 00403E78 014F:004AB2D9 7418 JZ 004AB2F3 014F:004AB2DB 668B0D5CB44A00 MOV CX,[004AB45C] 014F:004AB2E2 B201 MOV DL,01 014F:004AB2E4 B868B44A00 MOV EAX,004AB468 014F:004AB2E9 E862E40100 CALL 004C9750 014F:004AB2EE E933010000 JMP 004AB426
Nie bedziemy analizowac tu kodu bo to nieistotne, w kazdym razie sledzimy kod i zawartosci rejestrów i pamieci az dochodzimy do takiego fragmentu :
014F:004AB3EF 8B55E4 MOV EDX,[EBP-1C] --> wpisany kod 014F:004AB3F2 8B45F8 MOV EAX,[EBP-08] --> poprawny kod 014F:004AB3F5 E87E8AF5FF CALL 00403E78 014F:004AB3FA 7422 JZ 004AB41E 014F:004AB3FC 668B0D5CB44A00 MOV CX,[004AB45C] 014F:004AB403 B201 MOV DL,01 014F:004AB405 B8F4B44A00 MOV EAX,004AB4F4
A wiec w EDX i EAX sa adresy numerów rejestracyjnych, wpisanego przez nas i poprawnego. Nastepnie wywolanie funkcji CALL w której jest porównywanie tych danych i odpowiednie ustawienie rejestrów i flag. Pózniej znany skok good/bad.
Okazuje sie, ze po wpisaniu poprawnego kodu wzglednie modyfikacji samego skoku JZ program prosi i dyskietke na której tworzy wersje instalacyjna pelnej wersji programu i podaje nowy numer seryjny do wpisania w pelnej wersji. Wtedy usuwamy wersje demo z dysku i instalujemy pelna wersje z dyskietki.
Po analizie zawartosci z dyskietki wersji pelnej z wersja demo okazuje sie, ze na dyskietce mamy nowy plik ss.sys w którym zawarte sa informacje o pelnej wersji. Setup przy instalacji sprawdza czy ten plik jest i jego zawartosc i odpowiednio instaluje wersje demo lub pelna.
To tyle, wiecej nie warto sie kodem zajmowac.
Mam nadzieje, ze jezeli ktos wygra w totolotka przy pomocy tego programu to zakupi kilka licencji u jego autorów :)