____________________________________________________________________________________                                                          
                    _________\          |            __________  
                   /          \      __-+-  __      |         /\ 
                  /___________/     /'( |_  )`\     |________/  \
                 |   \       /     / . \/^\/ . \            /   /
                  \   \           /  _)_`-'_(_  \          /   / 
                   \   \         /.-~   ).(   ~-.\        /   /  
                    \   \       /'     /\_/\     `\      /   /   
                     \  /     __  ___  " __"  __  _ _  \/   /    
                      \/     / _)(  ,)  (  ) / _)( ) )  \__/_    
                            ( (_  )  \  /()\( (_  )  \           
                             \__)(_)\_)(_)(_)\__)(_)\_)          
                                ___             __               
                               (  ,\o l a n d  (  )              
                                ) _/ cRACKING   )(__             
                               (_)      gROUP  (____)            
                                    ____     /\                  
                                   /  \     /  \                 
                                  /\   \   /   /                 
                                    \   \ /   /                  
                                     \___\___/                   
_______________________________________________________________________________________

                                CrackPl prezentuje 
								by AsmGoth
_______________________________________________________________________________________


CO:   crackme.exe v2.0   (plik z gatunku crackme)
skad: cracking.home.ml.org (dosy dawno to byo, moe bdzie na stronce Crackpl jak si GustawKit
                             zgodzi)
czym: Soft-Ice


Crackme v2.0 napisane przez Cruehead/MiB jest dosy prostym programikiem i atwo je zama.
Pocztkujcy zazwyczaj szukaj porwnania naszego seriala z waciwym. Tyle e wpisany
przez nas serial moe by modyfikowany i wtedy atwo przeoczy procedur porwnania :((
Tak jest w tym przypadku !!! cho szyfrowanie jest banalne, ale o tym przekonacie si sami
Odpalamy progsa, klikamy Help/Enter Password i wpisujemy ulubiony serial np. 66667777
Zanim wciniemy oke, zastawmy jakiego breakpointa. Wchodzimy do Soft-Ice wciskajc ctrl+d
i zastawiamy puapk na funkcj GetDlgItemTextA (na t zadziaa :)) 
:bpx getdlgitemtexta
Wracamy do progsa, klikamy na Ok i jestemy w SI, klikamy F11 aby wyskoczy z funkcji i 
widzimy cosik takiego (przewi ekran w gr ctrl+strzaki):
015F:004012AA  817D10EA030000      CMP     DWORD PTR [EBP+10],000003EA
015F:004012B1  7527                JNZ     004012DA
015F:004012B3  6A11                PUSH    11
015F:004012B5  687E214000          PUSH    0040217E
015F:004012BA  68E8030000          PUSH    000003E8
015F:004012BF  FF7508              PUSH    DWORD PTR [EBP+08]
015F:004012C2  E8D5010000          CALL    USER32!GetDlgItemTextA
015F:004012C7  83F801              CMP     EAX,01
015F:004012CA  C74510EB030000      MOV     DWORD PTR [EBP+10],000003EB
015F:004012D1  72CC                JB      0040129F
015F:004012D3  B801000000          MOV     EAX,00000001
015F:004012D8  EB07                JMP     004012E1

Nie pamitam gdzie wyldujesz ale wana jest instrukcja push 0040217e, dlaczego ???
Zobaczmy co si kryje pod tym adresem. A wic 
:d 00402117E
Widzimy e jest tam wpisany nasz serial :))
Zastawym breakpointa na tym adresie:
:bpm 0402117E
Klikamy Ctrl+d albo F5 i ldujemy w tym miejscu:
015F:00401365  C6051821400000      MOV     BYTE PTR [00402118],00
015F:0040136C  8B742404            MOV     ESI,[ESP+04]
015F:00401370  56                  PUSH    ESI
015F:00401371  8A06                MOV     AL,[ESI]
015F:00401373  84C0                TEST    AL,AL
015F:00401375  7419                JZ      00401390
015F:00401377  FE0518214000        INC     BYTE PTR [00402118]
015F:0040137D  3C41                CMP     AL,41
015F:0040137F  7204                JB      00401385
015F:00401381  3C5A                CMP     AL,5A
015F:00401383  7303                JAE     00401388
015F:00401385  46                  INC     ESI
015F:00401386  EBE9                JMP     00401371
015F:00401388  E825000000          CALL    004013B2
015F:0040138D  46                  INC     ESI
015F:0040138E  EBE1                JMP     00401371
015F:00401390  5E                  POP     ESI
Przygldajc sie tej procedurze moemy zauway e suy ona do zamiany
liter maych na due, nie bde opisywa niech kady przeledzi jej dziaanie sam
Jeszcze raz Ctrl+d albo F5 i teraz widzimy cosik takiego:
015F:00401399  33DB                XOR     EBX,EBX
015F:0040139B  33FF                XOR     EDI,EDI
015F:0040139D  8A8FA3214000        MOV     CL,[EDI+004021A3]
015F:004013A3  8A1E                MOV     BL,[ESI]
015F:004013A5  84DB                TEST    BL,BL
015F:004013A7  7408                JZ      004013B1
015F:004013A9  32D9                XOR     BL,CL
015F:004013AB  881E                MOV     [ESI],BL
015F:004013AD  46                  INC     ESI
015F:004013AE  47                  INC     EDI
015F:004013AF  EBEC                JMP     0040139D
015F:004013B1  C3                  RET
Tu jest generowany serial dla funkcji porwnujcej 
zobaczmy co jest pod EDI+004021A3
:d EDI+004021A3
0167:004021A3 4D 65 73 73 69 6E 67 5F 69 6E 5F 62 79 74 65 73   Messing_in_bytes

A wic z tego cigu adowane s bajty do cl
W Esi jest nasz serial i adowany jest do bl, jak nie wierzysz to zrb:
:d Esi
Nastpnie sprawdzany czy w bl jest cosik czy jest zero, i jak zero to skok do 004013B1
Nastpnie to co w bl jest "xorowane" z tym co w cl
Czyli nasz kod jest "xorowany" z cigiem "Messing_in_bytes".
Potej czynnoci wpisujemu wynik do Esi i jedziemy tak dopki nie skocz si 
znaki w naszym serialu
Poniewa szyfrowany kod jest umieszczany dokadnie w tym samym miejscu gdzie 
by ten przez nas wpisany nie zakadamy adnej nowej puapki
Ctrl+d i jestemy tutaj
015F:0040122D  E833010000          CALL    00401365
015F:00401232  687E214000          PUSH    0040217E => na stos serial
015F:00401237  E87C010000          CALL    004013B8 => procka sprawdzajca
015F:0040123C  83C404              ADD     ESP,04 
015F:0040123F  84C9                TEST    CL,CL 
015F:00401241  7407                JZ      0040124A => tu zmieni i mona rejestrowa na 
					     dowolny cig ale to najgorsze 
					     rozwizanie i nie o to chodzi w tym
					      progsie 
015F:00401243  E801010000          CALL    00401349

Dobra wejdzmy do tej procedury sprawdzajcej, gdy bdziemy na call 004013B8 klepiemy F8 i widzimy:
015F:004013B8  33FF                XOR     EDI,EDI
015F:004013BA  33C9                XOR     ECX,ECX
015F:004013BC  B110                MOV     CL,10 => dlugo cigu
015F:004013BE  8B742404            MOV     ESI,[ESP+04] => szyfrowany serial
015F:004013C2  BF50214000          MOV     EDI,00402150 => to z czym porwnujemy
015F:004013C7  F3A6                REPZ CMPSB => porwnanie
015F:004013C9  C3                  RET
Zobaczmy co jest w edi po mov EDI,00402150
:d EDI
0167:00402150 1F 2C 37 36 3B 3D 28 19-3D 26 1A 31 2D 3B 37 3E  .,76;=(.=&.1-;7>
0167:00402160 4E 6F 20 6C 75 63 6B 21-00 4E 6F 20 6C 75 63 6B  No luck!.No luck
Wane jest 16 pierwszych znakw bo w procedurze sprawdzajcej jest mov cl,10 i tylko
tyle bdzie porwnywane repz cmpsb a 10h to 16 decymalnie (Pamitajcie e to hex)
Hmm czyli nasz serial powinien wyglda tak: ".,76;=(.=&.1-;7>" po szyfrowaniu.
Jak wiecie (jak nie wiecie to przeledzcie tablic prawdy dla XOR'a) funkcja XOR
dziaa w 2 stron, tzn "xorujc" 2 razy przez t sam warto otrzymujemy z powrotem to
samo!!!
Czyli wystarczy teraz wykona Xor na ".,76;=(.=&.1-;7>" z cigiem "Messing_in_bytes" aby uzyska z powrotem waciw posta seriala
Ja to zrobiem kalkulatorem Casio fx-4500P ;) ale ty moesz uy jakiego chcesz byle mia
system szesnastkowy i pozwala "xorowa"
Moe by ten z windy (ja mam Win 98 i on pozwala to zrobi, nie wiem jak w Win 95):
1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E 
				    xor
4D 65 73 73 69 6E 67 5F 69 6E 5F 62 79 74 65 73
------------------------------------------------
52 49 44 45 52 53 4F 46 54 48 45 53 54 4F 52 4D (hex)
R  I  D  E  R  S  O  F  T  H  E  S  T  O  R  M   (AscII)

Jeli nie mieci nam si to moemy po bajcie to robi 1F xor 4D=52 w AscII "R" 
Wynik zamieniamy na ASCii dowoln metod, mona opatologicznie z tabel lub 
wpisa do jakego HexEdita ;))
Serial: RIDERSOFTHESTORM, RiderSoftHestorm, RIDErSOFtHESTORm
Dlaczego ??? Odpowiedz sobie sam !!! ;))
Uff wreszcie koniec ;))