SinkSubPro v2.0 by AsmGoth

Witam po raz kolejny. Nie bedzie to standartowy tutorial, jakiego sie mozna spodziewac, ale opis sposobu w jaki udalo mi sie zcrackowac ta gierke.

Jezeli nie czytales moich wczesniejszych tutoriali to musisz sie z nimi zapoznac, gdyz bede robil pewne skróty i nie bede opisywal dokladnie co i jak.

Okej Let's go

Zaczalem standardowo: pulapki na GetWindowTextA, GetDlgItemTextA. No swietnie zadzialalo. Znalazlem miejsce gdzie jest wpisany mój wymyslony kod i lipa. W trakcie sledzenia programu, okazalo sie ze ten kod jest modyfikowany ;((.

Hmm wlasciwie to kilka razy jest cosik robione z nim. To mnie ostudzilo ;)) Postanowilem jednak sie nie poddawac tak szybko. Postanowilem zaczac poszukiwania od konca. Skasowalem istniejace pulapki :bc * i zalozylem nowa : bpx MessageBoxA. No to rejestrujemy "wyskakuje boxik" i jestesmy w SI. F11 wyskakujemy z funkcji (hmm i czasami z SI (??), pokombinujcie z rózna dlugoscia seriala). Dobra przewinalem troszkie do góry ekran z kodem (ctrl+strzaleczki) i ujrzalem cosik takiego:

015F:0040CEBF  90                  NOP
015F:0040CEC0  A18CFA4100          MOV     EAX,[0041FA8C]
015F:0040CEC5  56                  PUSH    ESI
015F:0040CEC6  85C0                TEST    EAX,EAX
015F:0040CEC8  0F85AC000000        JNZ     0040CF7A
015F:0040CECE  8B742408            MOV     ESI,[ESP+08]
015F:0040CED2  A144FB4100          MOV     EAX,[0041FB44]
015F:0040CED7  6A00                PUSH    00
015F:0040CED9  6810A74000          PUSH    0040A710
015F:0040CEDE  56                  PUSH    ESI
015F:0040CEDF  6864C74100          PUSH    0041C764
015F:0040CEE4  50                  PUSH    EAX
015F:0040CEE5  FF1548454200        CALL    [USER32!DialogBoxParamA]
015F:0040CEEB  85C0                TEST    EAX,EAX
015F:0040CEED  0F84B4000000        JZ      0040CFA7
015F:0040CEF3  A18CFA4100          MOV     EAX,[0041FA8C]
015F:0040CEF8  85C0                TEST    EAX,EAX
015F:0040CEFA  742D                JZ      0040CF29
015F:0040CEFC  6810C34100          PUSH    0041C310
015F:0040CF01  56                  PUSH    ESI
015F:0040CF02  FF153C454200        CALL    [USER32!SetWindowTextA]
015F:0040CF08  6A40                PUSH    40
015F:0040CF0A  6A2B                PUSH    2B
015F:0040CF0C  E81F5BFFFF          CALL    00402A30
015F:0040CF11  83C404              ADD     ESP,04
015F:0040CF14  50                  PUSH    EAX
015F:0040CF15  6A2A                PUSH    2A
015F:0040CF17  E8145BFFFF          CALL    00402A30
015F:0040CF1C  83C404              ADD     ESP,04
015F:0040CF1F  50                  PUSH    EAX
015F:0040CF20  56                  PUSH    ESI
015F:0040CF21  FF15A4444200        CALL    [USER32!MessageBoxA]
015F:0040CF27  5E                  POP     ESI
015F:0040CF28  C3                  RET
015F:0040CF29  6A09                PUSH    09
015F:0040CF2B  E890D2FFFF          CALL    0040A1C0
015F:0040CF30  A148FB4100          MOV     EAX,[0041FB48]
015F:0040CF35  83C404              ADD     ESP,04
015F:0040CF38  85C0                TEST    EAX,EAX
015F:0040CF3A  6A10                PUSH    10
015F:0040CF3C  6A2C                PUSH    2C
015F:0040CF3E  741D                JZ      0040CF5D
015F:0040CF40  E8EB5AFFFF          CALL    00402A30
015F:0040CF45  83C404              ADD     ESP,04
015F:0040CF48  50                  PUSH    EAX
015F:0040CF49  6A2D                PUSH    2D
015F:0040CF4B  E8E05AFFFF          CALL    00402A30
015F:0040CF50  83C404              ADD     ESP,04
015F:0040CF53  50                  PUSH    EAX
015F:0040CF54  56                  PUSH    ESI
015F:0040CF55  FF15A4444200        CALL    [USER32!MessageBoxA]
015F:0040CF5B  5E                  POP     ESI
015F:0040CF5C  C3                  RET
015F:0040CF5D  E8CE5AFFFF          CALL    00402A30
015F:0040CF62  83C404              ADD     ESP,04
015F:0040CF65  50                  PUSH    EAX
015F:0040CF66  6A2E                PUSH    2E
015F:0040CF68  E8C35AFFFF          CALL    00402A30
015F:0040CF6D  83C404              ADD     ESP,04
015F:0040CF70  50                  PUSH    EAX
015F:0040CF71  56                  PUSH    ESI
015F:0040CF72  FF15A4444200        CALL    [USER32!MessageBoxA]
015F:0040CF78  5E                  POP     ESI
015F:0040CF79  C3                  RET
015F:0040CF7A  6A09                PUSH    09
015F:0040CF7C  E83FD2FFFF          CALL    0040A1C0
015F:0040CF81  83C404              ADD     ESP,04
015F:0040CF84  6A40                PUSH    40
015F:0040CF86  6A28                PUSH    28
015F:0040CF88  E8A35AFFFF          CALL    00402A30
015F:0040CF8D  83C404              ADD     ESP,04
015F:0040CF90  50                  PUSH    EAX
015F:0040CF91  6A2F                PUSH    2F
015F:0040CF93  E8985AFFFF          CALL    00402A30
015F:0040CF98  8B4C2414            MOV     ECX,[ESP+14]
015F:0040CF9C  83C404              ADD     ESP,04
015F:0040CF9F  50                  PUSH    EAX
015F:0040CFA0  51                  PUSH    ECX
015F:0040CFA1  FF15A4444200        CALL    [USER32!MessageBoxA]
015F:0040CFA7  5E                  POP     ESI
015F:0040CFA8  C3                  RET

Jak widzimy wywolan MessageBoxA jest kilka, pobawilem sie z ta procka, zmieniajac flagi przy skokach i obserwowalem co sie dzieje. Nie bede tu opisywal co i ja bo:

po pierwsze: nie pamietam co i jak ;)))

po drugie: sam to mozesz zrobic ;))

Zauwazcie pewna instrukcje pojawiajaca sie kilka razy:

MOV     EAX,[0041FA8C]

Hmm no tak wyglada to jak znacznik zarejestrowania. Dlaczego tak sadze?? Bo po któryms skoku cieszylem oko widokiem zarejestrowania ;)) Dobra wyczyscilem pulapki :bc* i zalozylem kolejna

:bpmb 0041fa8c rw

Wyszedlem z SI, i próbowalem zarejestrowac gierke, hmm pulapka dzialala ale nic ciekawego nie znalazlem :(( Hmm nagle mnie olsnilo. Zamknalem program i odpalilem na nowo. No teraz calkiem, calkiem:

015F:0040AAE2  50                  PUSH    EAX
015F:0040AAE3  51                  PUSH    ECX
015F:0040AAE4  FFD5                CALL    EBP
015F:0040AAE6  F7D8                NEG     EAX
015F:0040AAE8  1BC0                SBB     EAX,EAX
015F:0040AAEA  40                  INC     EAX
015F:0040AAEB  A38CFA4100          MOV     [0041FA8C],EAX ; Znacznik zarejestrowania
015F:0040AAF0  7576                JNZ     0040AB68
015F:0040AAF2  8D54243C            LEA     EDX,[ESP+3C]
015F:0040AAF6  52                  PUSH    EDX
015F:0040AAF7  FF150C454200        CALL    [USER32!CharUpperA]
015F:0040AAFD  8D44243C            LEA     EAX,[ESP+3C]
015F:0040AB01  33F6                XOR     ESI,ESI
015F:0040AB03  50                  PUSH    EAX
015F:0040AB04  FF1594434200        CALL    [KERNEL32!lstrlen]
015F:0040AB0A  85C0                TEST    EAX,EAX
015F:0040AB0C  7E2F                JLE     0040AB3D
015F:0040AB0E  0FBE44343C          MOVSX   EAX,BYTE PTR [ESI+ESP+3C]
015F:0040AB13  83F841              CMP     EAX,41
015F:0040AB16  7C0E                JL      0040AB26
015F:0040AB18  83F85A              CMP     EAX,5A
015F:0040AB1B  7F09                JG      0040AB26
015F:0040AB1D  0FAF05D8F94100      IMUL    EAX,[0041F9D8]
015F:0040AB24  EB05                JMP     0040AB2B

Jest wreszcie !!! Dobra trzeba teraz jakos wstawic 01 do eax i program juz na starcie bedzie zarejestrowany ;)) Hmm ta czesc kodu:

015F:0040AAE6  F7D8                NEG     EAX
015F:0040AAE8  1BC0                SBB     EAX,EAX
015F:0040AAEA  40                  INC     EAX

nie bedzie nam potrzebna. Zamiast niej umiescimy komende mov eax,00000001

Kasujemy pulapki :bc* i wychodzimy SI. Teraz pora odpalic jakiegos edytorka Ja uzywam Hieva 5.92 ale moze byc dowolny. Kopiuje plik sspro32.exe do innego katalogu. Znajduje offset aae6 (f5 i .aae6 w Hiew)i wklepuje zamiast F7d81bc040 taki oto ciag b801000000 co odpowiada komendzie mov eax,00000001. Oki F9 i F10 i spróbujmy odpalic progsa. Zalama :(( Wyrzuca mi jakies info o zwaleniu jakiegos progsa itp itd. To co sie teraz stalo bylo kolejnym cudem nad Wisla. Po raz kolejny sprawdzilo sie powiedzenie ze crackerom potrzebne jest szczescie ;)) Przez przypadek zmienilem nazwe zapatchowanego progsa na inna i skopiowalem oryginalnego do katalogu, aby sprawdzic czy sie cosik gdzies nie namieszalo w rejestrach ze wali ten komunikat i odpalilem tego poprawnego. Odpalil sie jako unregistered, ale to oznaczalo ze to wina tego zapatchowanego. Dobra odpalam tego zapatchowanego i..........fiu co ja widze ?? Registered to AsmGoth/CP!. Hmm mysle sobie co jest grane ?? Skad on wiedzial ?? W windowsach znalazlem plik sspro.ini, a wiec tam sa zapisywane dane z rejestracji. Hmm ale, name jest okej ale number jest jakis lewy, to nie to samo co ja wpisywalem to jakis szyfrowany :)), i na pewno to nie jest ten wlasciwy! Ech co sie zamartwiac, przeciez caly czas mam tamtego zapatchowanego, który chodzi. Dobra no to usunalem znowu oryginala, odpalam poprawionego i kolejny komunikat. Tym razem cosik, ze nie moze znalezc pliku sspro32.exe i jeszcze jakiegos helpa. Ano tak nie zmienilem nazwy, Zmieniam nazwe odpalam i znajomy komunikat o koniecznej nowej instalacji ze wzgledu na uszkodzenie jakiegos pliku. No cóz zmienilem nazwe zapatchowanego na loader.exe ;)), wrzucilem oryginala do katalogu i zrobilem linka do loader.exe

Od tej pory wita mnie: Registered by AsmGoth/CP! Próbowalem jeszcze w Wdasmie cracknac coby sie rejestrowal na dowolny serial. Ale cosik chrzanilo mi sie. Znalazlem miejsce w którym jest sprawdzenie (tak mi sie wydaje) ale po zamianie skoków przywital mnie nowym komunikatem o uszkodzeniach pliku czy cosik takiego ;(( Dalem sobie spokój, przeciez cel zostal w zasadzie osiagniety. Metoda jest najgorsza jaka moze byc ale cel uswieca srodki.

Mam jeszcze pare pomyslów np. poszukac z czym porównywany jest ten serial z sspro.ini moze z prawidlowym ?? I wystarczylo by zamienic te seriale w pliku ?? Hmm chyba jednak tak nie bedzie i dlatego nie chce mi sie sprawdzac ;)) Moze Wy sie tym zajmiecie ?? Moze przesledzicie co on wlasciwie robi z tym wpisanym przez nas serialem ?? Moze sie czegos nauczycie, bo z tego tuta to mozna tylko jednego sie nauczyc: Zeby przec do przodu i nie zalamywac sie przy pierwszej porazce, odrobina szczescia i kolejny progs na waszym kocie bedzie zrobiony ;)))) Dlaczego to dziala w taki sposób ?? Podejrzewam ze sprawdzana jest crc pliku, program sprawdza plik odwolujac sie przez nazwe sspro32.exe. Nasz plik zwie sie teraz loader.exe. Ale w katalogu jest jeszcze oryginal ;)) Wiec sprawdzany jest nasz oryginal, poniewaz w nim nie ma zmian, program leci dalej nie podejrzewajac, ze nastapila zmiana nazwy pliku z którego jest odpalany !!! To czysta teoria poniewaz jestem leniuch i nie sprawdzilem tego. Zadanie to zostawilem dla Ciebie. Mozesz pokombinowac zostawiajac pulapki na otwarcie pliku i takie tam, i zobaczyc co wlasciwie sie dzieje. To tyle pobawcie sie jeszcze tym progsem, moze cosik nowego odkryjecie ;))

UWAGA !!! Jesli udalo ci sie zlamac ta gre w inny sposób lub masz jakies pytania skontaktuj sie ze mna :

asmgoth@irc.pl