MENU  
  Strona startowa
  Newsletter
  Rejestracja
  LOGOWANIE
  Forum
  Systemy
  WAREZ
  Chomikuj.pl
  Darmowy Hosting
  GRAFIKA
  Baner Flash
  Alfabet HTML
  Asembler Kurs
  PIERWSZY RAZ HTML
  Hakerstwo
  => Lekcja 1
  => Lekcja 2
  => Lekcja 3
  => Lekcja 4
  => Lekcja 5
  => Lekcja 6
  => Lekcja 7
  => Lekcja 8
  => Lekcja 9
  => Lekcja 10
  => Lekcja 11
  Świat WWW
  Serwery Proxy
  Galeria
  GRY
  SKÓRKA DO GG
  Lockerz.com
  SKLEP
...
Lekcja 10
ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo
1. Co to jest keygen?
ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo

    A wiec zaczynamy: keygen to taki malutki < lecz niezawsze ;> programik
    dzieki ktoremu mozemy zajestrowac wybrany program, na dowolnie wybrane
    dane. "Dowolnie" to zbyt swobodnie powiedziane, poniewaz niektore pro-
    gramy posiadaja jakies specyficzne wlasciwosci doboru name, np dlugosc
    name,  wielkie litery, brak cyfr itp.  Kazdy raczej widzial keygena na
    oczy, wiec niema sie co tu bardzo rozpisywac. Przejdzmy dalej.

ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo
2. Rodzaje keygenow
ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo

    Ja dziele sobiwe keygeny na 3 glowne gropy gdzie wynikiem jest:

    a) serial
    b) key-file
    c) odpowiedni wpis w rejestrze

    oczywiscie do kazdego mozna doliczyc wpisywanie name,company, numer ID
    i tego podobne rzeczy.  Z tymi mozliwosciami chyba sie kazdy z was tez
    sie juz wczesniej zetknol. Ja dodatkowo do wszystkich tych 3 rodzajuw,
    wliczam 2 podgrupy: keygeny kopiowane i keygeny na myslenie .  W tym
    pierwszym przypadku chodzi o to ze nasz keygen jest dokladnym odwzoro-
    waniem procki generujacej serial z naszego ukochanego programu.  Nato-
    miast ta druga grupa jest juz trudniejsza, tutaj wane jest zrozumienie
    kodu, musimy wnikac <czasem bardzo dlugo> co robi prog, a potem trzeba
    to jakos odwrocic. czasem to zawodzi bo jesli w procce jest zagmatfany
    algorytm,  a wystarczy zmienic jeden bajt to prosciej  go zmienic niz,
    tracic tygodnei na zlamanie,  chociaz niewolno sie za szybko poddawac.
    Tutaj jeszcze musze wspomniec  o jednej grupie keygenow,  ktorej wyzej
    niewymienilem a mianowicie:

    d) keygeny stale

    posiadaja one wpisane konkretne wartosci liczb, najczesciej sa w jakis
    tablicach i keygen wybiera je losow. Czyli nasz program ma,  powiedzmy
    100 seriali i my piszemy keygena  ktory w danej chwili, wybiera  tylko
    1 serial i go nam wyswietla, sa to tak zwane <w/g mnie> pseudo keygeny
    bo niema w nich zadnej generacji tylko procka wyswietlajaca przypadko-
    wy serial. Jednakze i do tych keygenow mozna zaliczyc jedna podgrupe -
    keygeny nieodwracalne. Np nasz progs ma znowu np 100 sriali ale, jesli
    wpisujemy serial, to prog przepuszcza go przez jakis algorytm  szyfru-
    jacy <np MD5> i porownuje tylko wynik a nie sam serial. W takiej sytu-
    acji nieda sienapisac keygena. Owszem autor programu moze sobie go na-
    pisac bo zna seriale i zna wyniki... niestety nam zastaje tylko zmiana
    bajtow w programie. To tyle o rodzajach keygenow.

ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo
3. Od czego zaczac pisanie
ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo

    Wszystko opisuje  na swoim przykladzie, nie  musisz robic identycznie,
    ale mozesz sie sugerowac wskzuwkami. Zanim zaczne pisac keygena,  wra-
    cam do  punktu drugiego,  czyli identyfikuje procke  zabezpieczajaca w
    programie. Kaygena zaczynam pisac od szkieletu, po stwierdzeniu do ja-
    kiej nalezy grupy i podgrupy. Jesli jest to keygen kopiowany, to zapi-
    suje sobie malutki obraz procki <co ona robi>, poniewaz np delphi  po-
    trafi jednym call'em na 200 stron usuwac bajt z danego ciagu. Po tymch
    ogledzinach albo kopiuje zywcem kod, lub go lekko modyfikuje, zeby byl
    mniejszy <w bajtach> i sprawdzam czy dziala poprawnie. Jesli natomiast
    procka wymaga pomyslenia i odwrocenia, najpierw kalkuluje ile mi czasu
    zajmie jej odwrocenie a pozniej napisanie. Jesli czas ten jest niezbyt
    proporcjonalny do czasu wolnego jaki posiadamy, to rezygnuje z keygena
    i pisze cracka. Jeli czasu mma duzo i spore mozliwosci to pisze keyge-
    na. Jednak czasem  oblczenia szacunkowe  <bo tak powinnismy je nazwac>
    okaza sie blaede, i odwroecnie zajmie nam o wiel wiecej czasu, i jesli
    program nieda sie scrackowac <np jest spakowany> to taki moj  projeket
    laduej w koszu. Zadko kiedy wracam do takich projektow. Polowa progsow
    dostepnych na rynku jest calkowicie kopiowalna jesli chodzi o kod, ale
    sa i takie gdzie trzeba pomyslie a i niebrakuje tych ktorych nieda sie
    odwrocic. Jesli juz wiesz,  ze dana procke da sie odwrocic,  to prawie
    masz juz napisanego keygena, jeszcz tylko pare screendump'ow, lub copy
    kod z IDA,  do tego jeszcze jakies ladne opakowanie, w postaci okienka
    dailogowego <win32> i masz swaja produkcje.

ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo
4. Czy zawsze da sie napisac?
ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo
    
    Nie. Mimo to,  ze procka jest odwracalna.  Niektore algorytmy dzialaja
    na tak wielkich liczbach, ze zeby to mogl policzyc nasz procek w takim
    czasie <np 1/2 h - zachaczam juz chyba o bruta>  w jakim by sie nam to
    oplacalo to muslilby miec czestotliwosc nieosiagalna przez jakies ~100
    lat!! tak tak to nie jest straszne ani dziwne, poprostu liczby  sa tak
    duze ze ciezko by bylo je zapisac w jednej linijce kartki zeszytu. RSA
    jets przykladem takeigo algorytmu. Mozna go odwrocic znajc liczby p, q
    ale nieche juz tu mowic o takich algorytmach,  bo ja sam za to sie nie
    biore. Chce tylko wspomniec ze tylko jest cos takiego.

ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo
5. Keygen do WinZip'a
ooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOoooooOooooo

    Wiem, ze to co opisalem dotychczas to jes malo, ale cos juz zrobic mo-
    zna. Na poczatek proponuje keygen do WinZip 8. Nieopisze tutaj calosci
    tutka jak to zlamac,  lecz przedstawie kawalki kodu z opisami.  WinZip
    nalezy do kaygenow typu "serial" i do podgrupy "kopiowane", wiec niema
    z nim zbytniego problemu, a takze kodu jest niewiele

    Najpierw lukamy prog, i widzimy, ze dla okresonego name generuje staly
    serial. Wiec mozna sie pokuusic o keygena. Zauwaamy tez ze liczba jest
    <liczba - serial> jest odwzorowaniem wartosci rejestru  <eax bodajrze>
    i jako serial zawiera 8 znakow z przeiali 0..9 i A..F no to screendump
    w najbardziej wykonywanym kodzie i lekka przerobka:


    xor    eax,eax
    xor    ebx,ebx
    xor    edi,edi
    xor    edx,edx
    mov    ecx, offset _name    ; _name to bufor na nasz name

    mov    dl,[ecx]
    mov    esi,ecx

@00407B5A:
    test    dl,dl
    jz    @00407B6E        ; czy juz wszystkie znaki name?
    movzx    dx,dl            ; dx = dl
    imul    edx,edi
    add    ebx,edx    
    mov    dl,[esi+1]        ; kolejny znak <do testowania>
    inc    edi
    inc    esi
    jmp    @00407B5A

@00407B6E:
    mov    esi,ecx
    mov    cl,[ecx]

@00407B7C:
    test    cl,cl
    jz    @00407B99        ; czy juz ostatni bajt?
    movzx    cx,cl            ; cx=cl
    call    @00407BB9
    mov    cl,[esi+1]
    inc    esi
    jmp    @00407B7C

@00407B99:
    add    eax,63h
    movzx    eax,ax
    rol    eax,16
    mov    ax,bx

    tego kawalka kodu, w WinZip'ie chyba nieda sie niezauwazyc   jeszcze
    tylko przerobka tego call'a


@00407BB9    proc

    push    esi
    rol    ecx,8
    push    8
    pop    edx

@00407BC8:
    mov    esi,eax
    xor    esi,ecx
    test    si,8000h
    jz    @00407BDA
    add    eax,eax            ; = shl eax,1
    xor    ax,1021h
    jmp    @00407BDC

@00407BDA:
    shl    eax,1            ; eax = eax*2

@00407BDC:
    shl    ecx,1
    dec    edx
    jnz    @00407BC8
    pop    edi
        ret
@00407BB9    endp

    no i mamy wszystko <w razie jakis pomylem piszcie od mnie>. Na koncu w
    EAX mamy liczbe ktora trzeba zamienic na serial, mozna to zrobic  tak:

    mov    edi, offset _serial
    push    eax
    push    offset _x        ; _x db '%X',0
    push    edi            ; mijesce na serial <9 dup (0)>
    call    wsprintfA
    add    esp,3*4            ; przywracanie stosu

    cmp    al,8            ; czy dlugosc znakow seriala to 8?
    jz    @ok            ; jesli nie to trzeba to uzupelnic '0'

    push    8
    pop    ecx            ; ecx = 8
    sub    ecx,eax            ; ile zer dopisac z przodu

    push    ecx            ; zapisz ilosc dopisu
    push    edi            ; edi = offse _serial
    mov    ecx,eax            ; ile bajtow ma ciag
    mov    esi,edi            ; esi = offset _serial
    add    edi,8            ; edi = offset _serial + 8
    add    esi,eax            ; esi = offset _serial + sizeof _serial

@przepisz:
    dec    edi
    dec    esi
    mov    al,[esi]
    mo    [edi],al
    loop    @przepisz
    pop    edi            ; = offset _serial
    pop    ecx            ; zdejmij ilosc dopisu
    mov    al,30h
    rep    stosb            ; dopisz
@ok:

Teraz 11199 odwiedzający (26032 wejścia)
Logowanie  
 
Nazwa użytkownika:
Hasło:
 
 
 
 
 
   
Ta strona internetowa została utworzona bezpłatnie pod adresem Stronygratis.pl. Czy chcesz też mieć własną stronę internetową?
Darmowa rejestracja