Cos z gatunku CrackMe by Nonme

CO:   1.com   (plik z gatunku crackme)
skad: http://klefz.8m.com/1.com
czym: hiew,tasm

Plik 1.com to cos dla nas, zajmuje niewiele bo 32 bajtow !! a trzeba znalezc haslo ktore zmusi go do wyswietlenia Y .

Uzycie jest proste ,uruchamiamy 1.com z lini polecen dodajac haslo jako parametr np:1 CrackPL.:) Jezeli haslo jest poprawne to wyswietli sie 'Y' jesli nie to 'N'.

Zagladamy co to jest i jak jest zrobiony np. uzywajac HIEW-a

Oto i kod:
MOV   CX.CS:[00082]     ;Przekazuje tylko dwa znaki z parametrow do CX
XOR   DX,DX             ;zeruje DX
ROL   DX,CL <- +        ;+-- tu jest blok kodujacy te 2 znaki obrot w lewo
XCHG  CL,CH    |        ;| zamiana CH z CL
ROR   DX,CL    |        ;| obrot w prawo
XCHG  CH,CL    |        ;| zamiana
INC   DX       |        ;| zwiekasza o 1 DX
LOOP  007------+        ;+-- jezeli CX>0 to powtarzamy :)
MOV   AL,04Eh           ;literka N do AL
CMP   DX,0E96h          ;porównuje otrzymana liczbe z E96h
JNE   01C-----+         ;jak rozne to skok do INT 29
MOV   AL,59h  |         ;jak rowne to przekazuje Y do AL
INT   29h <---+         ;przerw. drukuje znak o kodzie z AL
RETN                    ;koniec

Jak widac bardzo latwo jest zrobic latke i cieszyc oko Y-kiem :), ale my zajmiemy sie haslem.Mozna sprobowac 'od tylu' czyli odkodowac E96h i mamy haslo , ale problem w tym ze nie mozna na podstawie danego DX znalezc odpowiednie mu CX. Ta metoda odpada czyli trzeba sprobowac ataku brutalnego czyli na sile :). Korzystajac z kodu 1.com napiszemu wlasna procedurke ktora bedzie za nas sprawdzac poprawne hasla. No to do dziela :)) .Mozemy napisac cos takiego:

-----Tu Tnij-------
;1_Bfa  (brute force attack) dla 1.com
.MODEL TINY
.CODE
ORG   100h                 ;PLIK .COM
START:XOR   AX,AX          ;ZERUJE AX
NEXT: INC   AX             ;-- TUTAJ TWORZY KOLEJNA
      XOR   DX,DX          ;| LICZBE DO SPRAWDZENIA
      MOV   CX,AX          ;| I SPRAWDZA CZY NIE ZROBIL
      CMP   AX,00h         ;| JUZ FFFF PODSTAWIEN DO AX
      JZ    GO             ;-- JESLI TAK TO KONIEC
PETLA:
      ROL   DX,CL          ;KOD Z 1.COM
      XCHG  CH,CL          ;PRZETWARZAJACY
      ROR   DX,CL          ;DANE
      XCHG  CH,CL
      INC   DX
      LOOP  PETLA
      CMP   DX,0E96h       ;OTRZYMANA LICZBE POROWNUJE Z DX JEZELI
      JNE   NEXT           ;NIE ROWNE TO SPRAWDZA KOLEJNA
      PUSH  AX             ;--
      PUSH  DX             ;|
      MOV   BX,AX          ;| BLOK DRUKUJACY POPRAWNY KOD
      MOV   DL,AL          ;|
      MOV   AH,02h         ;| NA WYJSCIU STADARTOWYM WIEC
      INT   21h            ;|
      MOV   DL,BH          ;| MOZNA ZROBIC SOBIE NP: .BAT
      INT   21h            ;|
      MOV   DL,0dh         ;| Z HASLAMI :)
      INT   21h            ;|
      MOV   DL,0ah         ;|
      INT   21h            ;|
      POP   DX             ;|
      POP   AX             ;--
      JMP   NEXT           ;JESLI WYDRUKOWAL TO SPRAWDZA KOLEJNA
GO:   MOV   AH,4CH         ;ZAMKNIECIE
      INT   21H            ;PROGRAMU
      END   START
-----Tu Tnij-------

To teraz wystarczy skompilowac tasm 1_bfa.asm i skonsolidowac (uff) tlink /t 1_bfa.obj , jezeli oczywiscie kod jest w 1_bfa.asm. Teraz otrzymamy 1_bfa.com uruchomic i cieszys sie z otrzymanych hasel :)) Wiem ze nie jest to prawdziwy crack, ale czasami i tak mozna "wydlubac" haselko.

Nonme [CrackPL]