Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


^T0M^ - FAQ CRACKERSKIE !!!

Data : 1998.09.16 ; Bielsko-Biala

Yoo ! poczatkujacy crackerzy (jesli to czytasz to pewnie nim jestes) !
Zdecydowalem sie napisac to FAQ ze wzgledu na to ze o crackingu
nikt nic nie pisze (Po polsku of coz) , po (do tej pory kiedy to pisze)
polsku widzialem tylko jednego zina - crcpl. Wszystko jest
o hacking i prhreaking - W szczegolnosci ten drugi temat zostal juz
wyczerpany.
Przydalo by sie stworzyc kanal na IRC dla crackerow,
myslalem ze jest taki odpowiednik #hackpl = #crackpl,
...ale tam chyba nikt nie uczeszcza ???

Ten FAQ zawiera tylko najbardziej podstawowe podstawy wiec
jesli chcesz sie jeszcze doksztalcac musisz zdobyc
inne FAQ (niestety teraz sa tylko angielskie!).

Wiec kilka podstaw i co musisz umiec aby zostac crackerem :

1. Czym jest cracking ???
Cracking jest to lamanie zabiezpieczen w programach.
Wystepuja rozne typy zabezpieczen np. numer rejestracyjny (serial),
DOC check, CD-copy protection, nag screen, function disabled itp. itd.
Zabezpieczenia sa raczej SCHEMATYCZNE tzn. ze roznia sie tylko
troche (oczywiscie tylko w danym gatunku zabezpieczen np. seriale).
Lamanie pod Windows95 troche sie rozni od lamania pod DOS,
niektore FAQ mowia ze latwiejszy jest cracking pod DOS, a
niektore ze pod SHIT95 (dalej tak bede nazywal ten "najlepszy"
system operacyjny), osobiscie uwazam ze latwiej jest lamac
zabezpieczenia pod SHIT95. Jezeli umiesz programowac w jakims
jezyku wysokiego poziomu to powinienes dosc latwo zrozumiec
filozofie Assemblera (tym lepiej jesli go juz znasz). Jezeli
nie znasz zadnego jezyka i nie znasz wewnetrznej organizacji
komputera tzn. jak dziala procesor , adresowanie pamieci itp.
to czeka cie dluuuuuga droga do zostania dobrym crackerem.
Jesli myslisz ze cracking pozwoli ci latwo zarobic kase to
sie tu zatrzymaj i nie czytaj dalej. Nie mozesz myslec o crackingu
w tych kategoriach. Cracking to jest sztuka - i musisz to zrozumiec
aby czerpac z tego przyjemnosc...
2. Co musisz umiec ???
a) Po pierwsze znac Assembler, nie koniecznie perfekcyjnie, ale
im lepiej go poznasz i zrozumiesz tym latwiej bedziesz lamal
zabezpieczenia, i tym lepszym bedziesz crackerem. Oczywiscie
musisz byc "zaznajomiony" z takimi pojeciami jak np. Rejestr,
flaga, przerwanie (INT - raczej tylko pod DOS), segment, offset,
liczby hexadecymalne itp. itd. ... Z polecen assemblera
najczesciej uzywane to : CMP (porownuje dwie wartosci) ;
TEST (podobne do poprzedniego) ;
rozne odmiany skoku - JMP , Jx , Jxx ; CALL (wywolanie
procedury) ; INT (przerwanie - pod DOS) ; NOP (nic) itp. itd.
b) Miec intuicje :)
c) Przydalo by sie poznac jakiegos doswiadczonego crackera i tam
kierowac swoje pytania i problemy.
d) Dobrze by bylo znac angielski - wiekszosc (czyt. wszystkie)
FAQ sa napisane wlasnie w tym jezyku. Jesli go nie znasz ...
ucz sie czym predzej !
3. Narzedzia jakie powinienes miec !
a) Pod SHIT95 oczywiscie prawie niezbedny jest SoftICE (obecnie 3.2)
Jest to debugger ktory pozwala ci sledzic wykonywanie sie programu
instrukcja po instrukcji w ASM ... Kazdy program obojetnie w jakim
jezyku wysokiego poziomu jest napisany np. C++ , Pascal , VBasic
musi byc przetlumaczony na ASM a potem na liczby hexadecymalne a
potem jeszcze na binaria.
Wiec w debuggerze pracujemy na poziomie ASM (aczkolwiek sa tez
przedstawione te instrukcje asm (mnemoniki) w postaci hexadecymalnej
SoftICE podczas instalacji dopisze
do autoexec.bat linijke dzieki ktorej bedzie
sie wczytywac do pamieci jeszcze przed uruchomieniem SHIT95.
Ta linijka to (jakbys przypadkowo ja wykasowal :)) :
DRIVE:\PATH\WINICE.EXE (DRIVE to litera dysku , PATH-sciezka of coz).
Jak juz SHIT95 sie uruchomi to uaktywniamy SoftICE-a przez wcisniecie
Ctrl+D. I juz jestesmy w Debuggerze...
b) Przydalby sie tez Disassembler ... najlepszy pod SHIT95 to
W32DASM (obecnie jest 8.9 ale postaraj sie o najnowsza wersje).
Jest tez inny ciekawy - Sourcer 7.0 ktory wstawia swoje komentarze
do disassemblowanego pliku. Taki zdiassemblowany plik mozna od
razu skompilowac w TASM lub MASM (kompilatory Assemblera).
c) Jakis HEX-edytor ... dzieki niemu mozesz wprowadzac zmiany
do programu na stale ... Sa rozne HEX-edytory np. HEX Workshop lub
Hacker's view.

Te narzedzia powinny byc pod adresem : hack.netpol.pl
(Przynajmniej byly jak to pisalem).

Pamietaj! : Praktyka czyni mistrza ... im wiecej bedziesz
crackowal tym wiekszej nabierzesz wprawy ...
wiec proboj SAM zarejestrowac kazdy shareware'owy
program ktory ci sie nawinie ... Sa tez programy
"crack-me" ktore same w sobie zawieraja zabezpieczenie
i sa specjalnie przeznaczone dla crackerow !

ADRESY:
cracking.home.ml.org - strona zawierajaca najwiecej FAQ (oczywiscie
po angielsku), debuggery, disassemblery,
HEX-edytory i inne ciekawe rzeczy

heh...wiecej nie znam wiec jesli znasz jakies ciekawe adresy to
czym predzej przysylaj maila...

Polecam inne FAQ o crackingu (Angielskie) np.
+OCR , joe crackbook , JOSHi i jeszcze kilka innych

Dobra to wystarczy na poczatek.
Wiem ze malo ... ale nie mam duzo czasu ... mam nadzieje ze zmobilizuje
innych polskich crackerow do pisania swoich FAQ :) ! (moglby
tez ktos napisac cos o Virii :))
Jesli sa bledy to wybaczcie - pisalem to chyba zbyt szybko...
-------
Kntakt ze mna - tomroy@polbox.com lub tomroy@kki.net.pl
(Tylko nie proscie mnie o cracki !)
Lub na IRC (EFnet) - na #code , #cracking lub #bielsko - xywa : ^T0M^
-------
-----------------------------------------------------------------------------
A teraz (prawie doslowne) tlumaczenie znakomitego FAQ |
dla poczatkujacych ED!SON-a. |
Jesli znasz angielski to nie czytaj dalej tylko zdobadz oryginalne |
FAQ - poniewaz (prawdopodone) moglem cos spieprzyc w tlumaczeniu |
moje "wstawki" oznaczylem (= ... =). |
UWAGA - text probowalem napisac lopatologicznie wiec jesli |
masz jakies pojecie to przynajmniej nie czytaj |
dopiskow (=...=) ... bo mi wstyd :) |
Jesli uwazasz ze FAQ jest do dupy to go nie czytaj. |
Jesli zrobisz sobie krzywde wykorzystujac materialy tu zawarte - nie |
miej do mnie pretensji. |
Mozesz (Musisz :)) KOPIOWAC to FAQ dla kogokolwiek i czegokolwiek ! |
Tylko nie zmieniajac jego tresci !!!!! |
|
I oczywiscie ... WIELKIE podziekowania dla Huffyk-a |
-----------------------------------------------------------------------------
A teraz tlumaczenie...
No wiec zaczynamy...
POWODZENIA !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

===================================================
Przewodnik ED!SON-a po crackingu w Windows 95 v1.oo
===================================================

Spis tresci
===========
1. Wprowadzenie do lamania pod Windows 95
2. Krotkie wprowadzenie do SOFTice/Win 2.oo (=gdy to tlumacze jest wersja 3.2=)
3. Znajdowanie numerow rejestracyjnych
3.1 Task Lock 3.00 - Proste zabezpieczenie - sam numer rejestracyjny
3.2 Command Line 95 - Prosta rejestracja nazwa/numer
4. Tworzenie "keymaker-a" dla Command Line 95
5. Jak naprawde dziala PUSH i CALL kiedy program wywoluje funkcje
6. O programach napisanych w Visual Basic

Dodatki
=======
A. Softice load symbols
B. skladnia funkcji
C. Gdzie zdobyc SOFT
D. Kontakt ze mna (=ED!SON=)


1. Wprowadzenie do crackingu pod Windows
=========================================
Lamanie (=Cracking=) programu Windows-owego
(=czyt. SHIT-owego - dalej bede uzywal tej nazwy=)
jest najczesciej prostsze niz DOS-owego.
W SHIT95 ukrycie czegokolwiek przed kims kto naprawde
szuka informacji jest bardzo trudne, tak dlugo az wewnetrzne funkcje SHIT95 sa
uzywane.

Pierwszym (i czesto jedynym) narzedziem ktory potrzebujesz jest SoftICE/Win 2.oo,
Znakomity debugger od NuMega. Niektorzy ludzie mysla ze jest toporny w uzyciu,
ale ja Ci powiem jak efektywnie debbugowac w nim, i mam nadzieje ze mnie
zrozumiesz :-) . Zrobilem dodatek (A) z malym info do SoftICE/Win 2.oo ktore
powinienes przeczytac. Nigdy nie mialem problemow instalujac SoftICE, wiec jesli
jakies masz, musze skierowac do instrukcji obslugi.

URL-e do calego SOFT-u ktory potrzebujesz jest w dodatku (C).

- ED!SON, edison@ccnux.utm.my


2. Krotkie wprowadzenie do SOFTICE/Win 2.oo
===========================================
Oto dosc kiepski wglad na to co widzisz na ekranie w SOFTICE:

|--------------------|
| Rejestry | Nacisnij 'R' aby edytowac
|--------------------|
| Okno z danymi | Nacisnij 'D' aby zobaczyc adres, 'E' aby edytowac
|--------------------|
| Okno instrukcji | Nacisnij 'U' aby zobaczyc adres, 'A' aby napisac kod ASM
|--------------------|
| Okno komend | Tu wprowadzasz komendy
|--------------------|

Inne wazne przyciski to (w standardowym ustawieniu)
'H'/F1 - Pomoc
Ctr+D/F5 - Pokazanie SoftICE
F8 - wchodzenie w funkcje
F10 - chodzenie ponad funkcjami
F11 - wychodzenie z funkcji


3. Znajdowanie numerow rejestracyjnych
======================================
To jest prawdopodobnie najprostsza droga do praktyki, wziac program shareware
i sprobowac go zarejestrowac.


3.1 Task Lock 3.00 - Proste zabezpieczenie - sam numer rejestracyjny
====================================================================
To jest proste zabezpieczenie, tylko numer rejestracyjny,
ktory wogole sie nie zmienia

3.1.1 Badanie programu
======================
Program jest 16 czy 32 bitowy? gdzie wpisujemy informacje rejestracyjne?
Czy 'pomoc programu' daje jakis slad jak dziala rejestracja? Dowiedz sie
tego zanim bedziesz kontynulowal!
....Teraz powinienes sprawdzac!...sprawdzasz?...sprawdziles?...OK,
teraz wiesz ze jest to 32-bitowa aplikacja pod SHIT95, i to ze mozesz
zarejestrowac program wpisujac pojedynczy numer rejestracyjny w oknie
dialogowym ktore pojawia sie kiedy wybierzesz z menu "Register|Register...".
Dowiedziales sie takze czytajac Help-a, ze sa 2 sposoby rejestracji:
Indywidualna i przez siec. Wiec najprawdopodobniej beda 2 sprawdzenia
czy wprowadziles prawidlowy kod.


3.1.2 "Sledzenie" kodu
======================
Seriale (=czyli numery rejestracyjne=) sa przewaznie wpisywane w normalnych
oknach dialogowych SHITA95.
Aby sprawdzic kod, program musi przeczytac zawartosc
okna dialogowego uzywajac jednej z tych funkcji:

16-bitowe 32-bitowe
----- -----
GetWindowText GetWindowTextA, GetWindowTextW
GetDlgItemText GetDlgItemTextA, GetDlgItemTextW

Ostatnia litera 32-bitowych funkcji oznacza ze funkcja uzywa
jedno-bajtowych (=..extA=) lub dwu-bajtowych (=..extW=) lancuchow znakow.
Dwu-bajtowe sa RZADKIE.
Moze zastosujesz moja mysl... "Gdybym tylko mogl przerwac program gdy wywola
funkcje GetWindowText" i - mozesz!
Ale najpierw musisz sie upewnic ze te symbole
so aktualnie zaladowane przez Softice (Zobacz dodatek A).

Aby ustawic "pulapke" (nazywa sie to punkt kontrolny)
(=ang. Breakpoint - najlepiej uzywac tej nazwy=)
najpierw uaktywnij Debuggera (=Softice=) wciskajac Ctrl+D, potem
uzyj komendy BPX z nazwa funkcji albo adresem pamieci.
Task Lock jest 32-bitowy
wiec postawmy breakpoint na GetWindowTextA. Jesli to nie zadziala,
wtedy sprobojemy innych.
Wprowadz to w Softice (=w Command line - czyli najnizsze okno=):
:bpx getwindowtexta

Jesli dostales wiadomosc o bledzie np. "No LDT", upewnij sie ze nie masz
uruchomionych zadnych innych aplikacji w tle. Zauwazylem ze Norton Commander
lub DOS przeszkadza tej funkcji. Mozesz sprawdzic czy masz ustawione jakies
Breakpoint-y wyswietlajac liste breakpoint-ow:
:bl

Komenda da ci cos w tym stylu:

00) BPX USER32!GetWindowTextA C=01

Aby wyjsc z softice (=Oczywiscie softice bedzie dalej w pamieci=), nacisnij
Ctrl+D znowu

Dobra, masz ustawiony breakpoint ktory wykryje kazde wywolanie funkcji
GetWindowTextA (=funkcji uzywaja tylko programy napisane dla SHIT95=).

Teraz (=Oczywiscie po uruchomieniu Task Lock 3.00=) wpisz dowolna wartosc
w polu gdzie masz wpisac numer rejestracyjny i wcisnij OK... Nacisnales OK...
i co?... dostales tylko glupia wiadomosc ze twoj numer byl zly.
Wiec to nie bylo GetWindowTextA
(=w innym programie moze byc to akurat ta funkcja=).
Sprobojmy GetDlgItemTextA. Wiec usuwamy stary breakpoint (=nie koniecznie=):
:bc 0
(0 oznacza numer breakpoint-u na liscie breakpoint-ow)

Teraz ustawiamy nowy breakpoint:
:bpx getdlgitemtexta

i probujemy wpisac serial-a od nowa...

(=Probuj funkcji :
GetDlgItemText
GetDlgItemTextA
GetDlgItemTextW
GetWindowText
GetWindowTextA
GetWindowTextW
GetDlgItemInt
=)

3.1.3 w srodku Debugger-a
=========================
Wow! Zadzialalo! (=???=) Jestes teraz wewnatrz softice, w miejcsu
gdzie funkcja GetDlgItemTextA sie zaczyna.
Aby przeskoczyc w miejsce skadkolwiek ta funkcja zostala wywolana,
nacisnij F11. Teraz jestes wewnatrz SGLSET.EXE, jesli nie jestes pewien,
zobacz na linie pomiedzy oknem instrukcji a oknem gdzie wpisujesz komendy,
powinienes zobaczyc cos takiego:
---------SGLSET!.text+1B13---------

Mozesz teraz wylaczyc breakpoint wpisujac:
:bd 0

Kiedy bedziesz chcial uaktywnic ten breakpoint pozniej wpiszesz:
:be 0

pierwsza linia w oknie instrukcji wyglada tak:
CALL [USER32!GetDlgItemTextA]

Aby zobaczyc linie ktore sa wyzej, wciskaj pare razy Ctrl+strzalka w gore,
dopoki nie zobaczysz ponizszych lini.
Jesli nie wiesz nic o Assemblerze (=To po co to czytasz??? :) =),
zamiescilem komentarze do tych lini.
RET ;Koniec funkcji
PUSH EBP ;Poczatek funkcji
MOV EBP,ESP ;...
SUB ESP,0000009C ;...
PUSH ESI ;...
> LEA EAX,[EBP-34] ;EAX=EBP-34
PUSH EDI ;...
MOVE ESI,ECX ;...
PUSH 32 ;Zapisuje: Maxymalny rozmiar ciagu znakow (=stringu=)
> PUSH EAX ;Zapisuje: Adres bufora textowego
PUSH 000003F4 ;Zapisuje: Identyfikator kontroli
PUSH DWORD PTR [ESI+1C] ;Zapisuje: Uchwyt do okna dialogowego
CALL [USER32!GetDlgItemTextA] ;Pobiera text

Komendy PUSH oznaczja zapisanie wartosci do pozniejszego uzycia.
Zaznaczylem wazne linie znakiem '>'. Patrzac na kod widzimy ze adres
do bufora textowego jest trzymany w EAX, i EAX to bylo EBP-34. Wiec
patrzymy na EBP-34 tak:
:d ebp-34

Teraz powinienes moc przeczytac to co wpisales w oknie danych.
Teraz musimy znalezc miejsce gdzie twoj serial jest porownywany z prawdziwym.
Wiec wykonujemy kilka instrukcji wciskajac kilka razy F10 dopoki
nie znajdziemy czegos o EBP-34... Nie bedziesz dlugo naciskal zaraz powinien
pojawic sie ten kod:

> LEA EAX, [EBP+FFFFFF64] ;EAX = EBP-9C
LEA ECX, [EBP-34] ;ECX = EBP-34
PUSH EAX ;Zapisuje(=na stosie=): EAX
PUSH ECX ;Zapisuje(=na stosie=): ECX
> CALL 00403DD0 ;Wywolanie funkcji
ADD ESP, 08 ;Kasuje zapisane informacje
TEST EAX, EAX ;Sprawdza co funkcja zwraca
JNZ 00402BC0 ;Skok jesli nie zero

Dla mnie, to wyglada dokladnie jak funkcja
porownujaca stringi (=lancuchy znakow=).
To pracuje tak:
* pobiera 2 stringi, zwraca 0 jezeli sa rowne,
w przeciwnym wypadku wartosc
rozna od zera.

A dlaczego program porownuje string z tym ktory ty wpisales
(=jako numer rejestracyjny=)?
Aby zobaczyc czy byl prawidlowy! (Jak sie juz pewnie domysliles)
Dobra, co sie kryje pod adresem [EBP+FFFFFF64] ? SoftICE nie manipuluje
dobrze blednymi numerami, wiec aby znalezc prawdziwy musisz przeprowadzic
to obliczenie:
100000000 - FFFFFF64 = 9C

W Softice mozesz to zrobic tak:
:? 0-FFFFFF64

Numer 100000000 jest za duzy dla SoftICE, ale z drugiej strony to daje ten
sam rezultat.

A teraz... Czas aby zobaczyc co kryje sie za EBP-9C... Zrob to tak:
:d ebp-9c

Okno danych pokaze teraz dlugi rzad numerow - numer rejestracyjny!
Ale pamietaj co powiedzialem wczesniej... dwa typy rejestracji daja
2 kody... wiec po tym jak zapiszesz sobie kod ktory wlasnie znalazles,
kontynuujemy wykonywanie kodu z F10... Dopoki nie znajdziemy tego kawalka
kodu:
> LEA EAX, [EBP-68] ;EAX = EBP-68
LEA ECX, [EBP-34] ;ECX = EBP-34
PUSH EAX ;Zapisuje: EAX
PUSH ECX ;Zapisuje: ECX
> CALL 00403DD0 ;Znowu wywoluje funkcje
ADD ESP, 08 ;kasuje zapisana informacje
TEST EAX, EAX ;Sprawdza co funkcja zwraca
JNZ 00402BFF ;Skok jesli nie zero

A co mozesz znalezc pod adresem EBP-68? Heh... inny kod rejestracyjny!
:d ebp-68

To na tyle... Mam nadzieje ze wszystko dziala!


3.2 Command Line 95 - Prosta rejestracja nazwa/kod, I zrobimy keymaker'a
=========================================================================
To jest fajny przykladowy program, z bardzo prostym zabezpieczeniem.


1 Badanie programu
==================
Zbadales program i widzisz ze jest to 32-bitowa aplikacja, wymagajaca
Nazwy (=imie - czy cos takiego=) i kodu w oknie rejestracyjnym.
Wiec zaczynamy!


3.1.2 "Sledzenie" kodu
======================
Robimy to co z TaskLock - ustawiamy breakpoint-y.
Mozemy ustawic breakpoint-y na obie najbardziej prawdopodobne funkcje:
GetWindowTextA i GetDlgItemTextA. Nacisnij Ctrl+D aby uaktywnic SoftICE,
i wpisz:
:bpx getwindowtexta
:bpx getdlgitemtexta

Teraz wejdz do (=po uruchomieniu Command Line 95=) okna rejestracyjnego,
i wpisz nazwe (=imie=) i jakis numer (najczesciej liczba calkowita).
Ja napisalem tak, i nacisnalem OK...
Nazwa: ED!SON'96
Kod: 12345

Program zatrzymal sie na GetDlgItemTextA
(=czyli Softice automatycznie sie uruchomil=),
Tak jak w TaskLock, naciskamy F11 aby wrocic do wywolywanej funkcji.
Przesuwamy okno instrukcji w gore naciskajac kilka razy
Ctrl+(strzalka w gore)
az zobaczymy to:
MOV ESI, [ESP+0C]
PUSH 1E ;Maksymalna dlugosc
PUSH 0040A680 ;Adres do bufora textowego
PUSH 000003ED ;Identyfikator kontroli
CALL [User32!GetDlgItemTextA]

Numer 40A680 wyglada dla nas interesujaco, wiec sprawdzamy adres:
:d 40a680

I co pojawi sie w oknie danych, jesli nie nazwa ktora wpisalismy (=ED!SON'96=),
Nastepnie patrzymy ponizej powyzszego kawalka kodu, czyli:
PUSH 00 ;(nie interesujace)
PUSH 00 ;(nie interesujace)
PUSH 000003F6 ;identyfikator kontroli
MOV EDI, 0040A680 ;Zapisuje adres do bufora
CALL [User32!GetDlgItemInt]

GetDlgItemInt jest podobne do GetDlgItemText, ale zwraca liczbe calkowita
z okna dialogowego. To jest zwrocone w EAX,
wiec przechodzimy przez te instrukcje,
(=F10=) i patrzymy w okno rejestrow... U mnie to wyglada tak:
EAX=00003039


Ile to jest 3039 hexadecymalnie (=szestnastkowo=) ? Wpisujemy:
:? 3039

I otrzymasz to:
00003039 0000012345 "09"
^hex ^dec ^ascii

I, jak widzisz (jak juz pewnie zgadles), to pokazuje numer rejestracyjny ktory
sam wpisales. Ok, co teraz?
Zobacz na nastepujacy wycinek kodu, najpierw zwracany
kod jest zapisywany:
MOV [0040A548], EAX ;Zapisuje zwracany kod
MOV EDX, EAX ;Wklada zwracany kod do DX


3.1.3 Kalkulowanie kodu
=======================
Teraz zlamiesz kod!
MOV ECX, FFFFFFFF ;Te wiersze kalkuluja dlugosc stringu
SUB EAX, EAX ;.
REPNZ SCASB ;.
NOT ECX ;.
DEC ECX ;ECX zawiera teraz dlugosc stringu
MOVSX EAX, BYTE PTR [0040A680] ;Pobierz bajt w 40A680
IMUL ECX, EAX ;ECX=ECX*EAX
SHL ECX, 0A ;Przesuniecie w lewo o 0A krokow
ADD ECX, 0002F8CC ;dodaje 2F8CC do rezultatu
MOV [0040A664], ECX

I potwierdzanie...
CMP ECX, EDX ;Porownuje kody
JZ 00402DA6 ;Jezeli takie same, wykonaj skok...

Kiedy doszles do porownania numerow rejestracyjnych, mozesz sprawdzic
jaki jest poprawny numer:
:? ecx

U mnie to dalo:
000DC0CC 0000901324

To oznacza ze prawdziwy kod dla mnie to 901324.

Wiec nacisnij F5 albo Ctrl+D aby pozwolic programowi sie wykonywac,
sproboj teraz zarejestrowac z dobrym kodem ale w formie dziesietnej
oczywiscie. To dziala!!!


4. Tworzenie "keymaker-a" dla COMMAND LINE 95
==============================================
Patrzymy powyzej na kalkulacje kodu, i tlumaczymy to na jezyk C.
Tworzymy ta bardzo prosta deklaracje jak kod jest kalkulowany:
code = ( (uppercase_first_char * length_of_string) << 0x0A) + 0x2f8cc;

Uwaga (1):Nie mozna zapomniec ze wszystkie znaki sa konwertowane kiedy
je wpisujesz do okna dialogowego, wiec musimy zrobic to samo.

Uwaga (2): "<< 0x0A" oznacza "pomnoz przez 2^10"

Caly program w C moze wygladac tak:

#include
#include

int main()
{
unsigned long code;
unsigned char buffer[0x1e];

printf("Command Line 95 Keymaker by ED!SON '96\n"
printf("Enter name: "); (=wprowadz nazwe (imie)=)
gets(buffer);

strupr(buffer);
code = ( ((unsigned long)buffer[0] *
(unsigned long)strlen(buffer))
<< 0x0A) + 0x2f8cc;

printf("Your code is: %lu", code);

return 0;
}

Baw sie dobrze !!!


4. Jak naprawde dziala PUSH i CALL kiedy program wywoluje funkcje
=================================================================
Popatrzmy na ten kawalek kodu z TaskLock znowu:
PUSH 32 ;Zapisuje: Maxymalny rozmiar stringu
PUSH EAX ;Zapisuje: Adres bufora textowego
PUSH 000003F4 ;Zapisuje: Identyfikator kontroli
PUSH DWORD PTR [ESI+1C] ;Zapisuje: Wskaznik do okna dialogowego
CALL [USER32!GetDlgItemTextA] ;Pobiera text

Mozesz to wywolac z programu napisanego w C, Wywolanie bedzie wygladalo tak:

GetDlgItemTextA(hwndDlg, 0x3F4 (=to jest liczba szestnastkowa=), buffer, 0x32);
^ [ESI+1C] ^ EAX

PUSH wklada dane na cos co sie nazywa Stos. W rezultacie kazde wywolanie PUSH
wklada nowy kawalek danych na szczyt stosu, i wtedy funkcja sprawdza
co lezy na stosie i uzywa tego do czego jest przeznaczona.


5. O programach napisanych w Visual Basic
===========================================
Pliki .EXE napisane w Visual Basic-u (=VB=) nie sa prawdziwymi,
skompilowanymi EXE.
One zawieraja kod aby przywolac VBRUNxxx.DLL, ktory odczytuje dane z EXE aby
uruchomic program. To jest takze przyczyna dlaczego programy VB sa takie wolne.
Wiec kiedy pliki EXE nie sa "prawdziwe", nie mozesz ich Disassemblowac,
znajdziesz tylko wywolanie DLL-a i pelno smieci, a kiedy bedziesz Debugowal
ten program, skonczysz takze na wywolaniu DLL-a (=ang. Dynamic Link Library=).
Rozwiazaniem jest dekompilator. Jest dekompilator dla VB 2 i 3, zrobiony przez
kogos o przezwisku DoDi. Program jest shareware i dostepny w sieci
(Zobacz dodatek C). W SHIT95, sa 32-bitowe aplikacje napisane w VB 4,
i nie ma narazie dla nich dekompilatora, chociaz chcialbym aby byl.
Uwaga: Tylko nie prawdziwi (nie inteligentni) programisci pisza programy w VB.




A. Softice load symbols
=======================
Aby sprawdzic czy SoftICE zaladowal symbole dla GetWindowText, uaktywnij
Softice naciskajac Ctrl+D i wpisz cos takiego:
:exp getwindowtext
Jesli nie dostaniesz listy wszystkich GetWindowText, musisz edytowac
\SIW95\WINICE.DAT (=sciezka gdzie masz zainstalowanego SoftICE-a=)
i usunac znaki (';') (= ; - znak komentarza=) z kilku lini 'exp='
ktore wystepuja po tym tekscie: "Examples of export symbols that can be
included for chicago" blisko konca pliku. Mozesz usunac znaki (';')
ze wszystkich tych lini, albo zeby zaoszczedzic pamiec, tylko w tych
liniach ktore zawieraja pliki: kernel32.dll, user32.dll, gdi32.dll,
sa one najwazniejsze.
Kiedy juz to zmienisz, musisz zresetowac komputer aby to zadzialalo.



B. Skladnia funkcji
===================
Zawsze o wiele latwiej zrozumiec wywolania funkcji o ktorych mowilismy
majac ich deklaracje (=w C/C++=) , wiec:

int GetWindowText (int windowhandle, char *buffer, int maxlen);
int GetDlgItemText (int dialoghandle, int controlid, char *buffer, int maxlen);
int GetDlgItemInt (int dialoghandle, int controlid, int *flag, int type);

Aby zobaczyc bardziej szczegolowe deklaracje funkcji, sprawdz
w podreczniku programowania Windows/Win32.


C. Gdzie zdobyc SOFT
====================
Narzedzia Crackerskie:
SoftICE/Win 2.oo: http://www.geocities.com/SoHo/2680/cracking.html
Dekompilator VB: ftp://ftp.sn.no/user/balchen/vb/decompiler/

Przykladowe programy:
TaskLock: http://users.aol.com/Sajernigan/sgllck30.zip
CommandLine 95: ftp://ftp.winsite.com/pub/pc/win95/miscutil/cline95.zip


D. Kontakt ze mna (=ED!SON=)
============================
Na IRC (EFnet): na #Ucf96, #Cracking
E-mail: edison@ccnux.utm.my albo an461165@anon.penet.fi
WWW: http://www.geocities.com/SoHo/2680/cracking.html

============================================================================
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •