SupStat 1.0 demo by GustawKit

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 :)