kurs crackingu [ PL ] ^t0m^5



 FFFFFFFFFFFF
 HTTP://WWW.UNDERGROUND.ORG.PL FFFFFFFFFF
 ----------------------- FFFFFFFFFFF
 C R A C K FFFFFFFFFFFF
 ---------> 5 <--------- FFFFFFFFFFF
FF
Napisal: mNICH
Data : 15.02.1999
Miejsce: Bielsko-Biala

TEXT TEN DEDYKOWANY JEST NAJWIEKSZEMU FILOZOFOWI WSZECHCZASOW !!! ... KTORYM JEST :
FRYDERYK NIETZSCHE !!! (Z "DZIALU" - MLODA POLSKA - JESLI TO KOGOS INTERESUJE) <-) ...

15.02.99 (UPS! ... SORRY ... 15.02.1999 ! ... ufff ... ulzylo mi - teraz moj
text jest odporny na problem roku 2000 <-)) ) ...
BIELSKO-BIALA

=====================================
TEXT napisany przez mNICH-a |
CRACKING - REVERSE ENGINEERING !!! |
wydanie nr. 5 !!! |
=====================================

WSTEP :
Hmmm ... co tym razem ... :
Znowu bez WDASM <-) ... zreszta uzywam go rzadko ... wole S-ice'a <-) ...
... heh ... no dobra ... w tym "odcinku" ... NIE, nie zgadles nie bedzie
CrackME 4 <-) (CureME 1.0) poniewaz porcedura kodujaca jest "troche"
skomplikowana i dopiero po tym jak +CrueHead da mi zrodlo swojego
CureME zobacze jakie "kruczki i sztuczki" uzyl <-) ... (moze w nastepnym
odcinku) ... chociaz watpie ... bo sproboje opisac cos innego ... <-) ...
Dobra ... wracamy do terazniejszosci ... w tym (przerosnietym <-) ) odcinku
bedzie wszystko wymieszane ... tzn. troche roznych tematow ... natomiast
zadnego NOWEGO "celu" ... bedziesz potrzebowal tylko (ewentualnie) starego
dobrego CrackMe 1.0 <-) ... bedzie o : ... zmienianiu na stale plikow ...
i sposoby podejscia ... DOBRY sposob na lamanie okienkowo-zorientowanych
programow <-) ... troche o DOS ... troche o VB i ... FILOZOFII <-) ... Jak
widzisz duza rozbieznosc tematow <-) ... hmmm ... doszlem juz do ponad
80 KB textu ... eh ... szkoda tylko ze cos mi sie nie chce wiecej pisac ...
prawdopodobnie nastepny numer bedzie po jakims (dlugim) czasie (chyba ze mi
wroci "natchnienie" albo ktos sie przylaczy do pisania textow <-) ) ...
kurde ... sorry ... ze odeszlem (ALE TYLKO NA TEN TEXT !) od mojego stylu
MAX praktyki MIN teorii i zamiast tego wyszlo MAX teorii MIN praktyki <-( ...
musisz to przebolec i NAPRAWDE nad tym textem przysiasc aby WSZYSTKO zrozumiec ...
od nastepnego textu wracamy do praktyki <-) ... ale w tym texcie przysiadz
i przeczytaj WSZYSTKO (bo w niektorych dzialach sa wzmianki o tematach nie
zwiazanych z dzialam !!!) dokladnie i ze ZROZUMIENIEM ... jesli nie zrozumiesz
zagadnien tu zawartych moze Ci byc NAPRAWDE CIEZKO w dalszej "karierze" <-) ...
Mam nadzieje ze NIE bedzie zbyt ciezko <-) ...


BEGINNERS ... :
heh ... wiem ze wszystkie texty ktore pisze sa raczej przeznaczone dla
NAJBARDZIEJ poczatkujacych crackerow/reverserow ... no ale coz ... ktos
to musi zrobic <-) ... moze za jakis czas zaczne opisywac cos bardziej
zaawansowanego <-) ... wiec jesli znasz sie troche na rzeczy to nie masz
raczej po co czytac dalej <-) ...


POPRAWNE ? :
hmmm ... mam nadzieje ze nie ma w tym texcie zadnych bledow ... ale ze
wzgledu na objetosc nie chcialo mi sie sprawdzac tego dwa razy ... wiec
moglo sie cos pokrecic ... jak cos zauwazysz to mnie o tym poinformuj ...


CD-CHECK :
DUZO osob "CHCE" abym napisal jakis text na temat zabezpieczen typu
CD-check ... czyli jak zlamac program aby uruchamial sie na HDD bez
plyty ... albo zeby sie uruchamial z nie-oryginalnej plyty CD ... moja
odpowiedz (na razie - bo moze zmienie kiedys zdanie <-) ) : (znowu na
razie) NIE napisze textu o tym ! ... bo nie chce zbytniego rozpowszechnienia
piractwa ! ... a ten typ zabezpieczenia najbardziej interesuje "CIEMNA"
strone cracker-ow <-) ... ech ... ja nie pisze tych textow po to aby
rozprzestrzenic piractwo ! ... chodzi mi zakrzewienie umiejetnosci logicznego
rozumowania ... analizowania kodu ... znajomosci ASM-a (aby nie powstawaly
nowe "rzesze" Visual Basic-owcow <-) ) ... i ogolnie WIEDZY (ZABAWY <-) )
... <-) ... (prawdopodobnie) i tak zdobedziesz gdzies info jak lamac takie
CD-check ... trudno ... mam przynajmniej nadzieje, ze nie zostaniesz
kolejnym piratem na "rynku" ... a, poza tym to tego typu zabezpieczenia NIE
sa (w wiekszosci przypadkow) trudne do zlamania - wrecz przeciwnie bardzo latwe ...
aj, juz wiecej nic nie mowie ... to na tyle o CD-check <-) ...


XWA :
Pamietaj ze jesli spotkasz gdziekolwiek jakas osobe o xywie :
mnich , MNICH , Mnich , MnicH , mn1ch , Mn1cH , mnICH ... to NIE JA !!!
Tylko i wylacznie mNICH !!! ... to oswiadczam, bo juz pare osob
pytalo sie co to jest Dongle mnicha z klasztoru bernardynow <-) ...
heheh (moze przesadzilem <-) ) ...


<-) :
Jesli zobaczysz w texcie znak "<-)" to to nie jest zadna strzalka ...
czy cos takiego ... to zwykly ":-)" ... tylko ... Jak kazdy szanujacy
sie mNICH zaslaniam pol twarzy kapturem ... eheheh <-)))) ...


DOSKONALE ??? ... :
Dziwne, ze nikt nie ma zastrzezen do moich textow ... same pochwaly ...
hmmm ... nie wydaje mi sie zeby to byly doskonale texty <-) ...
kazdy tworca chce udoskonalac swoje dzielo ... a moze to robic tylko przez
jakies krytyczne opinie ... wiec piszcie co jest nie tak ... i co by sie
przydalo zmienic ... tylko nie cos takiego : TWOJ TEXT JEST DO DUPY ... i
koniec ... koniecznie wyjasnienie ... OK ? ...


KOMERCJA VS CRACKMES <-) :
Wiem ze myslisz sobie dlaczego nie lamiemy czegos pozytecznego z jakichs
plyt CHIP-a czy cos takiego ... hehe ... po prostu ktos kto bedzie czytal
ten text za rok nie bedzie juz mial dostepu do tego programu (tej wersji)
a ja mysle ze bez praktyki i wlasnych rozwazan na temat zabezpieczenia programu
cala wiedza ktora przekazuje zmniejsza sie o 50-60% i dlatego unikam tego
jak ognia ! ... Natomiast taki CrackMe mozna latwo dolaczyc do textu i wszystko
OK ... (jesli nawet wersja komercyjnego programu ktory MIALBYM opisac jest
aktualna to i tak lepiej zamiescic maly Crackme (za darmo !) niz musialbyc
kupowac jakies plyty !) ... Poza tym jestem ETYCZNY i wole lamac CrackMEs <-) ...
btw: i tu mam prosbe ... jesli ktos zna jakies CrackMEs dotyczace zabezpieczen
typu trialware (30-dni), ilosc uruchomien, itp. ... w kazdym razie inne niz
SERIAL ... NAME/SERIAL ... czy PLIK REJESTRACYJNY ... to niech da mi znac
koniecznie ! ...


SPOLKA Z O.O. <-) :
NIE ODPOWIADAM ZA NIEZGODNE Z PRAWEM UZYCIE WIADOMOSCI
NABYTYCH DZIEKI TEMU TEXTOWI ... ANI ZA ZADNE SZKODY
KTORE CZYTELNIK ZROBI SOBIE/KOMUS ... UMIESZCZONE
MATERIALY SA W CELACH EDUK... oh! ... sorry ...
ROZRYWKOWYCH ! <-) ...


Jesli chcesz zadac pytanie, wyslac kase ... eh ... to co zwykle <-) to :
KONTAKT -
E-mail : mnich@biosys.net
IRC : IRCnet - #cracking #crackpl #cracker #crackers
EFnet - #cracking #cracking4newbies #massive #phrozencrew #crackers
lub szukaj na jakis innych kanalach - czasami sie wlocze tu i tam <-)
xwa - mNICH lub mNICH-RE (jesli nie ma DUZYCH liter z mala
na poczatku - to jeszcze raz powtarzam : NIE ja !!! <-) ) ...
UIN : 18963457


{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
ZASADY KONTAKTU <-) :

O ... teraz bedzie typowe FAQ ... jesli chcesz sie ze mna skontaktowac,
PROSZE, przestrzegaj kilku zasad !!! <-) .... :

1)
Tylko prosze ! ... nie przysylajcie mi maili z pytaniami na temat sieci,
hackingu, czy phreakingu !!! ...

2)
I NAWET NIE PROBOJ PYTAC SIE MNIE O JAKIES CRACKI !!! ... I ZEBRAC ZEBYM
CI JE PRZESLAL/POSZUKAL/DAL URL !!! ... CHOCBY NIE WIEM JAKIE TO PILNE BYLO
CZY SPRAWA ZYCIA I SMIERCI ... NIE ODPOWIEM BO TO JEST SPRZECZNE Z MOIMI
IDEALAMI (MAM SWOJA ETYKE "ZAWODOWA" <-) ) ... WIEC NAWET NIE MASZ CO
PROBOWAC !!!

3)
Niestety nie jestem w stanie odpowiadac na kazdy mail z pytaniami w stylu :
1) Jak lamac zabezpieczenia typu trialware (30-dni) ?
2) Jak usuwac NAG-screen-y ?
3) Jak lamac Dongle ?
4) itp. itd. ...
Poniewaz sa one zbyt OGOLNE ... musialbym kazdemu z osobna przesylac
nie krotka odpowiedz ale cale tutoriale !!! ... Dotad staralem sie
odpowiadac na takie pytania ... przynajmniej NAKIEROWAC ... ale raczej
juz nie mam czasu ... wiec sproboj raczej zadawac KONKRETNE pytania ...

4)
NIE PYTAJ MNIE GDZIE PRZESYLAC SWOJE CRACKI !!! ... po prostu wejdz
na IRC-EFnet (nie IRCnet !) na kanal #cracking pogadaj z kilkoma gosciami
(in english of course) i zaraz sie znajdzie dla Ciebie miejsce w jakiejs
(jakichs) grupie(ach) <-) ... Polskie grupy tez sobie gdzies poszukaj ...
chyba grupa CrackPL przyjmuje cracki wiec tam sie zglosic do kogos ...
lub popytaj na IRC-IRCnet na #crackpl ...

5)
NIE pytaj mnie skad sciagnac popularne narzedzia ... po prostu POSZUKAJ !
... albo poproboj w linkach ktore sa na koncu textu ... wiem ze interesuja
was POLSKIE miejsca ... ale to tez nie jest problem (wiekszy <-) ) ...
Te najbardziej "standardowe" sa ... gorzej z tymi mniej "standardowymi"
... eh ... nie martw sie, niedlugo zrobie gdzies strone z narzedziami ...
w zasadzie to sa juz zaladowane narzedzia na jeden FTP i nawet przygotowana
strona wiec jest tylko kwestia wyslania kilkubajtowego .html na jakis serwer ...
jednak moja najwieksza wada jaka jest LENISTWO proboje mi w tym przeszkodzic
... <-) ... mam nadzieje ze ja pokonam i w koncu to zaladuje <-) ...

6)
Wiele osob pyta mnie gdzie mozna znalezc inne polskie texty (niz moje) ...
hmmm ... o ile mi wiadomo to sa tylko na tej stronie (grupa CrackPL) :
http://www.hyperreal.art.pl/cypher/crkpl/


No ... mysle teraz ze juz sie troche "odchudzi" lista standardowych
pytan ktore sa do mnie kierowane <-) ... jesli zastosowales sie do
powyzszych regul a nie dostales odpowiedzi na twoj list to
najprawdopodobniej ulegl on zniszczeniu na skutek skasowania/sformatowania
dysku/nie dotarl ... albo twoj serwer pocztowy padl i nie moglem wyslac
a ja nie lubie powtarzac wysylania wiec list poszedl do kosza <-) ...
w takim wypadku wysylaj az do skutku (oczywiscie listy zgodnie z REGULAMI)
... <-) ...
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
DLA ZALAMANYCH :

Jesli nie mozesz zlamac zadnych programow ... nie rozumiesz wogole o czym
ten mNICH pieprzy ... i nawet nie potrafisz zlamac programow przytoczonych
na koncu tego tekstu ... to ... sie NIE PRZEJMUJ ! ... jesli znasz ASM
(to jest po prostu PODSTAWA !) to jest tylko kwestia czasu ze zaczniesz
lamac kazdy program z zamknietymi oczami ... jesli dojdziesz juz do pewnego
poziomu to NAPRAWDE zlamanie programu jest TYLKO kwestia czasu ... mozesz go
lamac przez 2 min. albo przez 2 miesiace (oczywiscie troche wyolbrzymione -
chyba <-) ) ... ale NAPEWNO w koncu go zlamiesz !!! ... NIE ma zabezpieczenia
ktorego nie dalo by sie zlamac (i prawdopodobnie NIGDY nie bedzie) !!! ...
Jesli czytasz jakis text i go nie rozumiesz to wroc do niego za jakis czas !!!
(po jakims czasie praktyki) a napewno zrozumiesz <-) ... Wiekszosc
poczatkujacych zawsze chcialaby cos takiego :

MOV EAX,[ESI]
MOV EBX,[EDI]
CMP EAX,EBX
JZ xxxxxxxx

heh ... w kazdym razie cos podobnego ... i rzeczywiscie jest to obecne w
WIELU programach (jak sie przekonasz <-) ) ... Jednak po kilkudziesieciu
(kilkuset(kilku tysiecy)) programach tak zabezpieczonych zacznie Cie to
nudzic ... i bedziesz chcial czegos trudniejszego (czego znalezienie przyjdzie
Ci z trudnoscia <-) ) ... chociaz wiem ze narazie to bardzo fajne uczucie
dla was znalezc cos takiego, spisac zawartosc [EDI] (czy [ESI]) i wpisac to
do okna rejestracyjnego - i poczucie wlasnej MOCY gdy program "mysli" ze
jest zarejestrowany <-) ... (nawet nie bede mowil co niektorzy (jak mi
pisali) DOSTAJA ! <-) ) ... Jednak uwierz mi ! im trudniejsze zabezpieczenie
tym wieksza radosc ze zlamania (tym wiekszy x dostaniesz <-) ) ... choc wiem
ze niektorzy mimo lat lamania dalej dostaja przyplywu adrenaliny na widok
powyzszego kawalka kodu <-) ...
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""



============================== ATTENTION !!! =================================
WHO IS ABLE TO TRANSLATE MISCELLANEOUS ENGLISH (CRACKING BUT NOT ONLY !!!) TEXTS
PLEASE CONTACT WITH ME !!! ... I HAVE SOME "HOMEWORK(S)" FOR YOU ! <-) ...
NEW GENERATIONS OF FUTERE POLISH CRACKERS (REVERSERS) WILL BE THANKFUL TO YA !!!
... I WON'T MANAGE TO DO IT JUST ONLY MYSELF (ESPECIALLY, AS U SEE, MY ENGLISH
IS RATHER POOR ... ISN'T IT ? <-) ) ... THE MOST OF GOOD TUTORIALS HAS BEEN
WRITTEN IN ENGLISH LANGUAGE ALREADY ... AND ARE WAITING FOR GOOD TRANSLATION TO
MONOLINGUAL PPL ON THIS WORLD ... <-) ... OKAY ... I'M WAITING FOR
PROPOSITIONS ... YEAH, I KNOW, NONE WILL PAY ATTENTION TO THIS ... EH
... WELL, AT LEAST I'VE TRIED <-) ...
========================== END OF ATTENTION <-) ==============================



================================ UWAGA !!! ===================================
KTO MOGLBY SIE PRZYLACZYC DO PISANIA TEXTOW TO JESTEM OTWARTY NA PROPOZYCJE
HMMM ... TYLKO RACZEJ DOBREJ JAKOSCI ... HEHEH ... CHYBA ZA DUZO WYMAGAM
OD ZYCIA <-) ... W KAZDYM RAZIE (RACZEJ) NIE POWIEM "NIE" I KTO CHCE
TO MOZE SPROBOWAC SWOICH SIL I "POBAWIC" SIE W "NAUCZYCIELA" <-) ...
============================ KONIEC UWAGI <-) ===============================



Heh ... Tutaj byl oryginalnie DLUUUUUUGI text filozoficzny na temat
REALITY CRACKING i roznica miedzy CRACKEREM a REVERSE ENGINEEREM ...
jednak go wycialem bo mysle ze nie spotkal by sie ze zrozumieniem
<-( ... moze kiedys to opublikuje ... na razie raczej wolicie jezyk
zero-jedynkowy <-) ...


__________________________________________________________________________
(NIE ?)SLUSZNE ... i ... poszukiwacz CRACKOW :

Hmmm ... czy to sluszne ze rozpowszechniamy (rozpowszechniacie) "wykryte" SERIALE
czy swoje cracki w sieci ??? ... hmmm ... Moim zdaniem - Oczywiscie
MOIM, bo NIKOMU i NIC nie narzucam - to raczej nie sluszne ... Po to
pisze te texty zeby ktos sie czegos nauczyl a nie bezmyslnie wpisal
SERIAL sciagniety z ASTALAVISTY czy cos takiego ... Jesli koniecznie
potrzebujesz PELNEJ wersji to sobie ja KUP ! ... Eventualnie mozesz
zlamac program i uzywac go - nie popieram - ale to juz o WIELE lepsze
niz poszukanie SERIALA i "bezlitosne" zarejestrowanie ... Fakt, ze
wiekszosc programow nie zasluguje na oplate, ktorej zada programista
(producent), ale sa tez "perelki" (ktore zdarzaja sie raz na 1000(0)) ...
za ktore NAPRAWDE warto wylozyc troche kasy - przeznaczonej pierwotnie
na zakup pirackich plyt <-) ... No dobra, jesli RAZ (co najwyzej KILKA) raz(y)
zdazy Ci sie skads sciagnac cracka, bo 30 dni to za malo do przetestowania to
jeszcze mozna podarowac ... Ale do POGARDZENIA sa ludzie ktorzy ciagle,
malo tego ze staraja sie o te cracki, to jeszcze GNEBIA innych zeby im je DAC !!!
... To jest juz totalna przesada ! ... zeby sobie nie moc samemu znalezc (jesli
juz koniecznie MUSI miec) !? ... ... bo to naprawde przesada ...
Jesli kogos urazilem ... to ... NIE ... NIE PRZEPRASZAM ! ... Naprawde
czlowieku - zmien swoje nastawienie !!! ... No chyba ze ktos lubi jak mu
sie ciagle zawraca glowe zeby przeslac cracka ... jak sobie znajdziesz taka
osobe to nie ma sprawy ... ja sie nie wtracam <-) ...
___________________________________________________________________________



---------------------------------------------------------------------------
WINICE.DAT I SREDNIKI :

Jeszcze musze powiedziec o jednym pytaniu ktore mi zadaje WIELE osob ...
mam juz dosc odpowiadania na nie po raz 2000 ... wiec podaje odpowiedz ...
po raz OSTATNI !!! ... mianowice problem jest taki ze po wpisaniu
np. komendy (czy jakiejs innej 32-bitowej)
S-ice wypisuje blad : "Symbol not defined (getdlgitemtexta)"
Spowodowane jest to tym ze S-ice NIE "WIE" co to znaczy 'getdlgitemtexta'
musimy go tego "NAUCZYC" ... te standardowe nazwy (API) zdefiniowane sa w
roznych DLL-ach ... te "najbardziej" standardowe sa w KERNEL32.DLL i
USER32.DLL ... teraz co musimy zrobic zeby S-ice je "widzial" ? ...
Trzeba w pliku WINICE.DAT (ktory jest w katalogu z S-ice) w sekcji :

; ***** Examples of export symbols that can be included for Windows 95 *****
; Change the path to the appropriate drive and directory

ktora znajduje sie na koncu pliku usunac sredniki z paczatkow linijek
sciezek do DLL-ow ktore sa ponizej powyzszej sekcji ! ... nie musisz
usuwac srednikow z wszystkich linijek (chociaz dla nie znajacych API
i w jakich DLL-ach one sie znajduja to wskazane jest usunac wszystkie
sredniki <-) ) ... wystarczy usunac te sredniki z
linijek w ktorych sa sciezki do :

;EXP=c:\windows\system\kernel32.dll
;EXP=c:\windows\system\user32.dll

potem juz wedlug uznania mozna usuwac takze sredniki z innych linijek
ale tu juz musisz wiedziec ktore DLL-e maja jakie funkcje !!! ... (moze
jednak lepiej usun wszystkie sredniki <-) ) ... mozna tez dodawac swoje
wlasne !!! ... sprawdz jeszcze czy na pewno sciezki sa poprawne tzn.
czy windows nie znajduje sie u Ciebie na innym dysku czy w innym katalogu !!!
... Teraz juz powinno byc wszystko jasne ... jesli jeszcze nie (to QUAKE
<-) ) to dolaczylem do tego textu moj przykladowy WINICE.DAT ... mozesz nim
zastapic swoj wlasny ... i potem wszystko powinno byc OK. <-) ...
Jesli dalej nie dziala to ... teraz nic mi nie przychodzi do glowy ...
po prostu MUSI dzialac <-) ... jesli kiedys zobaczysz znowu ten komunikat
przy probie ustawienia breakpoint-a na jakiejs (nie)standardowej funkcji
to problem NA PEWNO (?) tkwi w WINICE.DAT i srednikach <-) ...
Jesli jeszcze raz ktos mi postawi to pytanie to NIE ODPOWIEM !!! ...
KONIEC ... kropka ... 3 kropki ... <-)
---------------------------------------------------------------------------


``````````````````````````````````````````````````````````````````
MAKRA :

Uzywaj roznych makr ! ... to ci moze ulatwic zycie ... np. zobacz
na dolaczony do tego textu moj WINICE.DAT przeanalizuj go i zwroc uwage
na makra jakie tam sa ... i sproboj stworzyc swoje wlasne ... a potem
mi je podeslij (jak beda ciekawe) <-) ...
``````````````````````````````````````````````````````````````````


******************************************************************
SPOSOBY PODEJSCIA :
Nie panikuj gdy nie dziala zaden standardowy breakpoint ... jest zawsze
o WIELE wiecej drog do zlamania jakiegos zabezpieczenia niz kiedykolwiek
bys pomyslal !!! ... oto kilka roznych drog (dla zabezpieczen typu SERIAL) :
1)
Na poczatku zawsze GetDlgItemTextA i GetWindowTextA ... oczywiscie
gdy mamy 16-bitowy program to NIE mozemy uzyc powyzszych funkcji !!!
uzywamy wtedy funkcji GetDlgItemText i GetWindowText (bez "A" na koncu !!!)
2)
Jesli powyzsze nie dziala ... to probojemy na innych standardach ...
np. GetDlgItemInt albo GetWindowTextW ... mozna to sobie ulatwic tworzac
makro ... np. takie jakie podalem w przykladowym WINICE.DAT ...
3)
Jesli inne takze nie dzialaja to probojemy ustawic breakpoint na
funkcji HMemCpy () ... UWAGA ! ... tutaj musimy ustawic
ten breakpoint PO wpisaniu swoich danych w okno rejestracyjne ...
jesli tego nie uczynimy to S-ice bedzie przerywal na KAZDYM wpisaniu
jakiegokolwiek znaku w okno ... chociaz czasami to moze byc uzyteczne ...
(HMemCpy jak latwo sie domyslic operuje na pamieci i na roznych danych
kopiujac je z jednej czesci "czegos" do drugiej (Jesli sie nie myle <-) )) ...
Nastepnie gdy juz nacisniemy klawisz "OK" i S-ice sie pojawi (prawie ZAWSZE
sie pojawi bo ta funkcja jest niemalze WSZECHOBECNA ... np. jest takze czescia
GetWindowTextA czy GetDlgItemTextA i innych) to musimy kilkakrotnie
(kilkunastokrotnie) nacisnac klawisz F12 ktory robi to samo co komenda


ktora natomiast powoduje ni mniej ni wiecej jak wykonanie programu az do
napotkania instrukcji RET (przy czym program ja takze wykonuje i ladujemy zawsze
zaraz za jakims CALL-em z ktorego wlasnie wrocilismy !!!) ... no wiec naciskamy
ten F12 iles tam razy AZ do pojawienia sie na lini oddzielajacej okno kodu
od okna komend jakiejs "znajomej" nazwy ... np. jesli program nazywa
sie I-M-SHIT to MOZLIWE ze we wspomnianej linii pojawi sie napis "IMSHIT" albo
cos podobnego ... albo np. jezeli program jest VB to naciskamy F12 az do pojawienia
sie napisu np. VB40032 czy nazwy innej wersji biblioteki VB ... w kazdym razie
badz czujny gdy pojawi sie cos innego niz USER albo VMM itp. ... ... no i od tej
pory mozesz juz normalnie sledzic kod programu <-) ...
4)
W wiekszosci przypadkow wystarcza 3 pierwsze punkty do dostania sie do kodu
zabezpieczenia ... no ale mozemy tez sprobowac innych drog np. : ...
ustwiamy breakpoint na MessageBoxA (czy odpowiednio MessageBox) wpisujemy
dane rejestracyjne klikamy OK i wtym momencie S-ice moze przerwac ...
ale co to spowodowalo ??? ... Otoz MessageBoxA to funkcja ktora wyswietla
na ekranie okienko z jakas informacja np. "Incorrect password" ... niektore
aplikacje wykorzystuja ta wlasnie funkcje do wyswietlenia wiadomosci o blednym
kodzie ...gdy juz S-ice nam przerwie to niciskamy F11 (wyjscie z funkcji) i jestesmy
w miejscu z kad zostala wywolana wlasnie ta funkcja ... i co teraz ? ... teraz
patrzymy sie do gory czy przypadkiem nie ma tam jakis "ciekawych" JNZ/JZ/JE/JNE/JMP...
itp. ktore wystepuja po jakims CALL albo TEST albo CMP itd. i patrzymy czy ten JZ/...
nie "skacze" ZA naszego CALL-a z MessageBoxA !!! ... dalej juz powinniscie wiedziec co
robic <-) ...
5)
Tak samo jak z MessageBox(A) sproboj z DialogBoxParam(A) !!! ...
6)
Jesli breakpoint na MessageBox(A) nie dziala to moze slyszymy jakies pikniecie
gdy program wyswietla info o zlym kodzie ??? ... jesli tak to MOZE program
uzywa funkcji MessageBeep do tego dzwieku ? ... a wiec ustawiamy w S-ice
breakpoint na MessageBeep (bez "A" bo nie ma 2 wersji) () ...
i wprowadzamy dane i klikamy OK ... mozliwe ze S-ice teraz przerwal wiec naciskamy
F11 (jesli jeszcze nie wiesz dlaczego ... to QUAKE czeka <-) ) i dalej tak samo
jak przy MessageBoxA ...
7)
Mozesz sprobowac tez jesli program pokazuje okno ale NIE uzywajac
MessageBox(A) ani DialogBoxParam(A) wykorzystac funkcje API :
ShowWindow ktora jest wywolywana (chyba miedzyinnymi <-) ) przy
wyswietleniu jakiegos okna ... ech ... nie bede wchodzil w szczegoly
po prostu sproboj jej uzyc (podobne do MessageBox(A) i drugiej <-) ) ...
8)
WIELE, WIELE innych sposobow !!! ... po prostu sproboj wymyslic swoje ...
powyzej podane sa tylko te najpopularniejsze i najczesciej spotykane ...
Przeczytaj jeszcze dzial "PODEJSCIE "ZAAWANSOWANE"" ... Jest to BARDZO
skuteczna metoda ... <-)
****************************************************************



^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PODEJSCIE "ZAAWANSOWANE" <-) :

Teraz podam sposob ktory jest PRAWIE ze nie zawodny !!!
Oczywiscie odnosi sie to do zabezpieczen ktore generuja JAKIEKOLWIEK
okna tzn. okna dialogowe , NAG-screeny , jakies infa ... itd. itp. ...
mianowicie jesli np. wpisales zly SERIAL i program generuje okno
z taka informacja, to oto co mozemy zrobic :
Majac ukazane okienko z informacja ze podalismy zly serial wchodzimy
do S-ice'a (Ctrl-D ... jakby ktos jeszcze nie pamietal <-) ) ... teraz
wykonujemy komende

task

Wyswietli nam sie kilka kolumn ... Jedyna ktora nas na razie interesuje
(znaczenie innych pozostawiam do odkrycia czytelnikowi <-) ) ...
to kolumna PIERWSZA (pod naglowkiem TaskName)... widzimy tu kolumne z
roznymi nazwami ... jesli sie im blizej przypatrzysz to pewnie
wydadza Ci sie znajome <-) ... Tak, masz racje ... Te nazwy oznaczaja
PROCESY (Programy) ktore sa akurat uruchomione (sa w pamieci) ...
hmmm ... co my mozemy z tym zrobic ??? ... Okay ... juz mowie ...
Teraz musisz odszukac nazwe programu (w tej kolumnie) ktory akurat
masz zamiar zlamac ! ... np. takie nazwy :

Powbar --> PowerBar
Getright --> GetRight
Rpmodem --> Rejestrator polaczen
Connectp --> ConnectPal proffesional
... ...

Eh ... napewno znajdziesz nazwe swojego programu <-) ...
Poza tym to te programy po komendzie ulozone sa tak ze
pierwszy w kolumnie jest zarazem ostatnim ktory uruchomiles w
swoim W95/98 ... czyli jesli program ktory chcesz akurat zlamac
uruchomiles bezposrednio przed komenda to NAPEWNO jest on
pierwszy na liscie !!! Dobra ... znalazles juz nazwe swojego
programu ... teraz znajac ja wpisujesz komende :

hwnd i_tutaj_nazwa_tego_programu

np.

hwnd powbar
hwnd rpmodem
... ...

(((Wprawdzie mozna wykonac ta komende bez nazwy programu i nie musimy
jej znac (ale jednak lepiej znac ta nazwe i uzyc komendy HWND na nazwie
jakiegos konkretnego programu) ... czyli dajemy sama komende
... tylko teraz wyswietli nam sie spis wszystkich okien jakie sa obecne a
kurat w systemie !!! Przy czym "wlasciciel" poszczegolnego okna jest w kolumnie
czwartej pod naglowkiem "QOwner" ... spis okien jest tak ulozony ze ...
hmmm ... dokladnie nie wiem <-) moze wedlug priorytetu albo czegos ...
w kazdym razie nie wedlug kolejnosci uruchomien ... jesli nie rozumiesz tego
kawalka od poczatku nawiasu to przeczytaj jeszcze raz ten kawalek po
przeczytaniu calego dzialu ... gdyz dodalem go na ostatku ... dalej
czytaj tak jakby tego nie bylo <-) ... )))
Znowu pojawi sie kilka kolumn ... i znowu interesuje nas tylko PIERWSZA
(pod naglowkiem Window Handle) (no moze tez PIATA - pod naglowkiem
Class Name) ... i znowu reszte pozostawiam czytelnikowi <-) ...
hmmm ... co to jest ??? ... hmmm ... HWND (Handle WiNDow)
jest to jakby identyfikator okna ... taki wskaznik ... ten wskaznik jest
przedstawiony w postaci liczyby 4-cyfrowej (hexadecymalnej) ktora widzimy
w pierwszej kolumnie !!! ... natomiast piata kolumna to nazwa klasy do
ktorej nalezy dane okno ... eh ... nie musisz tego (NARAZIE) rozumiec ...
(Jak troche popraktykujesz to zrozumiesz <-) ) ... Nazwa tej klasy sugeruje
nam ktorego okna dotyczy dany HWND ! ... kurde ... lepiej to zobaczymy
na przykladzie ... hmmm ... akurat mam pod reka starego dobrego WordPad-a <-)
co bede daleko szukal <-) ... juz szukam jakiegos okna ... ... ... Okay ...
wchodzimy do Pomoc/WordPad-informacje ... ukazuje nam sie okienko z jakimis
tam informacjami i przyciskiem OK ... majac wlaczone to okno wchodzimy do
S-ice'a i dajemy komende :

hwnd wordpad

(bo akurat taka nazwe ma ten program) ... ukazuje nam sie lista okien
nalezacych do WordPad-a !!! (no wiesz te kolumny <-) ) ... oto ta lista :

Window Handle ... Class Name
08A8(1) ... #32770 (Dialog)
0BB8(2) ... Static
08B8(2) ... Static
08BC(2) ... Static
08C0(2) ... Static
08C4(2) ... Static
08E8(2) ... Static
08AC(2) ... Static
08B4(2) ... Static
08C8(2) ... Static
08A4(2) ... Static
0B9C(2) ... Static
0C88(2) ... Static
0C90(2) ... Static
0C30(2) ... Button
02E8(1) ... tooltips_class32
... ... ...

hmmm ... okay ... numery (HWND) z pierwszej kolumny prawie NA PEWNO sie
u Ciebie roznia gdyz sa bardzo "dynamiczne" tzn. ze jesli zamkniesz
okno i je na nowo otworzysz to HWND bedzie calkiem inny !!! ...
W95/98 przydziela ten HWND kazdemu oknu ktore powstaje ...
Wszystkie powyzsze HWND sa identyfikatorami okien ktore sa "wlsnoscia"
programu WordPad ... tzn. ze tak sobie zaprogramowal programista ...
i kazde okno w programie WordPad ma swoje HWND !!! ...
Dobra ... przechodzimy dalej ... widzisz te numerki w nawiasie kolo
kazdego z HWND ??? ... okay ... to sa oznaczenia ktore S-ice daje
nam dla wygody ... oznaczaja one stopien zagniezdzenia okien ! ...
tzn. wszystkie okna tworza jakby drzewo ... no takie drzewo jak
masz w tym swoim Exploratorze (FAR rules <-) ) ... to oznacza
ze : istnieje jedno glowne okno programu a od niego "odchodza" inne ...
i tworzy sie hierarchia ... zmierzam do tego ze wszystkie HWND "dwojki"
(dwojki w nawiasie) sa czescia poprzedzajacego je HWND (okna) "jedynki"
(Class Name - #32770) ... Ostatni HWND (02E8(1)) na liscie nas nie
interesuje (gdyz nie jest czescia pierwszego HWND "jednyki" lecz jest
jakims osobnym oknem) ... Teraz wyjdz na chwile z S-ice'a i zerknij
na to okienko co otworzyles w WordPadzie i jeszcze raz na powyzej przytoczone
kolumny ! ... byc moze zauwazyles byc moze nie ... ale ... To okno w WordPad
reprezentuje pierwszy HWND na liscie i wszystkie odchodzace od niego
czesci (wszystkie "dwojki") ! ... po czym to poznac ??? ... po Class Name !!!
... mozna sie latwo domyslic patrzac na ta strukture i na okno w WordPad
ze : jak widac okno sklada sie z jakichs tam (statycznych) czesci czyli
textow, jakiejs ikonki ... itp. ... ORAZ z przycisku OK !!! a w powyzszej
strukturze wyraznie widac ze HWND 0C30(2) odnosi sie do przycisku (button) !!!
Przy odrobinie inteligencji ZAWSZE rozpoznasz ta wlasciwa strukture
swojego okna !!! Dobra ... powiesz ze wiesz juz co to HWND, jak wyglada
struktura okien, nazwe programu (identyfikator), jaki HWND maja
poszczegolne czesci okna ... itp. itd. ... ale ... co to ma wspolnego
z Crackingiem (Reversingiem) ????? ... uh ... juz wyjasniam ...
Do pelnego wykonania zadania potrzebna nam jeszcze jedna komenda !!!
Oto jej postac :

bmsg hwnd wm_xxx (wm_xxx...)

Gdzie "hwnd" to znany nam juz identyfikator okna (lub jego elementu) ...
Natomiast wm_xxx to operacja ktora zostanie (lub nie) wykonana na oknie
(lub jego elemencie) ... co prawda jest tez tam drugi wm_xxx (w nawiasie) i jakos
to mozna wykorzystac ... ale ja z tego nie kozystalem ... moze kiedys
sie naucze <-) ... zamiast xxx musisz podstawic nazwe komendy
ktora Ci odpowiada ... te komendy sa spisane w "API reference"
(No wiesz ... w kazdym kompilatorze 32-bit jest taki .HLP) ... musisz
dokladnie przeczytac ktora robi co ... po prostu wyszukaj w tym
"API reference" w indexie wszystko co zaczyna sie na "wm_" i przeczytaj
jak najwiecej (in english of course <-) ) ... Chociaz ja uzywam
tylko trzech ktore zaraz przytocze, ALE dobrze bedzie jak poznasz
wszystkie ! ... ja dlatego innych nie uzywam ze za bardzo ich nie
znam <-(( ... jak bede mial wolny czas to doczytam <-) ... Okay ...
trzy komendy ktore powinienes poznac to :

wm_move
wm_destroy
wm_command

(((Jeszcze moze byc WM_GETTEXT ktora uzywamy przy znanych nam dobrze
oknach dialogowych ... no wiesz tam gdzie wpisujesz dane rejestracyjne
jednak raczej z tego NIE korzystam ... powyzsze trzy sa bardziej
"uniwersalne" <-) ... a poza tym jest HMEMCPY <-) ))) ...
Pierwsza z nich dotyczy poruszania oknem ! ... tzn. ze jesli
poruszysz oknem (normalnie wjedz myszka na pasek i poruszaj <-) ) to
W95/98 jakos wywoluje ta procedure (nie znam szczegolow bo nie jestem
wybitnym programista <-) ) ... Dla NAS wazny jest tylko ten fakt
ze WYWOLUJE ... Druga z procedur jest wywolywana przy zamykaniu
jakiegos okna ! ... natomiast trzecia przy jakiejs "akcji" (chyba) ...
np. glownie o to chodzi ze przy kliknieciu na jakis przycisk ta procedura
jest wywolywana ! ... dwie pierwsze raczej uzywamy na HWND okna ... natomiast
trzecia na HWND jakiegos okna LUB przycisku ! ... heh ... dalej
nie rozumiesz co to moze nam dac ??? ... hmmm ... najpierw przetestujmy
jak dzialaja te procedury z pomoca WordPad-a ... przypuszczam ze
znasz HWND okna (#32770 (Dialog)) oraz HWND przycisku (button) !
Sprobojmy najpierw WM_MOVE ... czyli majac wlaczone okno Pomoc/WordPad-informacje
w WordPadzie wchodzimy do S-ice'a i oczywiscie najpierw szukamy HWND
do tego okna ! (i od razu do przycisku) ... nastepnie wykonujemy
komende :

bmsg 8a8 wm_move
| | |
| | |
Komenda HWnd Procedura

Przyjalem ze okno ma HWND takie jak w przytoczonej na poczatku tabeli,
oczywiscie prawie NA PEWNO u Ciebie bedzie inny !!! ... okay ...
teraz gdy juz wykonalismy ta komende wychodzimy z S-ice'a ...
Co teraz ??? ... Nic sie nie dzieje ??? ... heh ... Jesli uwazales
to wiesz ze procedura wm_move jest wywolywana przy poruszeniu oknem
... wiec nim PORUSZAJ !!! ... No ... Jestesmy juz znowu w ukochanym
S-ice <-) ... hmmm ... i co z tego, powiesz ??? ... Czesto dzieki
temu wm_move mozemy dostac sie do czesci kodu glownego programu w ktorym
zostala wyswietlona informacja/NAGscreen/jakiekolwiek_okno !!! ...
chyba juz domyslasz sie co to znaczy !? i jak mozemy to wykorzystac !?!?!?
eh ... dla tych co nie wiedza : prawdopodobnie wyladujemy w tym glownym
programie zaraz za jakims CALL-em ktory spowodowal wyswietlenie
jakiegos okna - przy czym oczywiscie nas nie interesuje jakies okno
pomocy w WordPadzie tylko ... no wlasnie co ? ... kurde ... zadajesz
zbyt duzo pytan <-) ... no dobra ... interesuja nas takie okna jak :
1)Po wprowadzeniu kodu program pokazuje OKNO ze jest on zly
2)Przy uruchamianiu programu wyswietla jakies paskudne okienko z
przypomnieniem o koniecznosci rejestracji (NAGscreen) ... albo co
gorsza program pokazuje to okienko z licznikiem (odliczanie czasu
po ktorym mozesz zamknac okno) ... ufff ... tego NIENAWIDZE !!! ...
tak marnowac czas czlowieka <-(( ...
3)Informacja ze skonczyly sie 30 dni pracy programu ... itp.
4)Informacja o bledzie w pracy programu ... np. zmienimy jakas instrukcje
w HIEW-ie i program zaczyna "narzekac" ...
5)itp. itd ...
Dobra ... wracamy do WordPad-a (nie placz ze tu nie ma zadnego z przytoczonych
punktow ... to tylko jako przyklad <-) ... bo pewnie kazdy ma ten program
na swoim W95/98) ... A wiec S-ice przerwal wykonywanie WordPad-a na
tym wm_move ... widzimy jednak ze nie jestesmy w kodzie glownego programu
- zobacz na linie oddzielajaca okno komend od okna danych, pisze tam
KERNEL.alloc co znaczy ze jestesmy gdzies na zewnatrz glownego kodu (w
DLL-u (KERNEL32.DLL)) - jednak zobacz jeszcze na dolny prawy rog ...
pisze tam "Wordpad" ... co oznacza ze jestesmy w jakims API ktory program
wywolal !!! ale nadal w programie (tylko nie w glownym kodzie) !!! ...
My CHCEMY sie dostac do glownego kodu, gdyz sledzenie jakis standardowych
DLL-ow NIC nam nie da !!! ... a wiec naciskamy F12 ... jeszcze raz ...
i jeszcze ... jeszcze ... jeszcze ... itd. ... jednak w koncu wyjdziemy
z S-ice nie dochodzac do glownego kodu ... co jest grane ??? ... heh ...
widocznie WordPad nie ma wlasnej procedury ktora obsluguje to poruszanie
okna ... Jak sie pozniej przekonamy obsluga tego poruszania jest WEWNATRZ
funkcji API i ta API nie musi sie odwolywac do kodu programu gdyz sama
"wie" kiedy i jak przesunac okno !!! ... tak wiec raczej dajmy sobie
spokoj z ta procedura i przejdzmy do nastepnej, ale UWAGA ! w innych
programach na ktorych nam zalezy (bo chcemy zlamac) ta procedura
moze z POWODZENIEM dzialac !!! ... na WIELU programach to stosowalem
i na WIELU z nich zastosowanie tej procedury konczylo sie SUKCESEM !!!
eh ... No wiec wchodzimy jeszcze raz do S-ice'a i kasujemy poprzedni
breakpoint :

bc 0

Nie dajemy komendy bo raczej nie bedzie nam juz potrzebny ten
breakpoint ... I poniewaz ta procedura nie zlikwidowala okna (jak wm_destroy
i wm_command (raczej tez) by zrobilo) HWND sie NIE zmienil !!! ...
Wiec zabierzemy sie za procedure ... (entliczek, pentliczek ... <-) ) ...
moze WM_COMMAND ... wiec powiedzialem ze czasami wm_command odnosi
sie albo do okna albo do przyciskow ! ... jesli sprobojemy komende :

bmsg c30 wm_command

Wiadomo ze c30 to HWND przycisku (nie calego okna !!!) ... jesli
teraz po tej komendzie wyjdziemy z S-ice i klikniemy przycisk OK
to S-ice sie NIE pojawi a okno po prostu zniknie !!! ... hmmm ...
wiec sprobojmy zalozyc ta komende na calym oknie ! ... ALE uwaga !
jesli sprobowales to wm_command na przycisku i jak wiadomo
to NIE zadzialalo (bo S-ice sie nie pojawil) to okno ZNIKLO ! ...
i jesli ponownie otworzyles to okno to jego HWND sie ZMIENILO !!! ...
musisz na nowo je odkryc !!! (chyba wiesz jak ? <-) ) ... okay ...
ja przyjmuje taki sam HWND (dla wygody) choc wiadomo ze u Ciebie jest
INNY ! ... komenda na calym oknie to :

bmsg 8a8 wm_command

I teraz wyjdz z S-ice'a i kliknij OK ... no ... jestesmy w S-ice ...
teraz normalne jest ze chcemy dostac sie do kodu programu ...
krotkie zerkniecie na linie oddzielajaca okno komend od okna danych
(od teraz bede ja nazywal "Linia com/dat" <-) ) ... i widzimy
znajome KERNEL.alloc ... co informuje nas ze jestesmy w DLL-u ... a
wiec wydostanmy sie z tego ! ... klikamy F12 ... i klikamy ... klikamy ...
klikamy ... po drodze napotykamy MFC42 (Microsoft Fundation Class (?)) ...
USER ... SHELL32 ... KERNEL32 ... (to chyba wszystko) ... ponaciskamy sobie
to F12 dobre KILKADZIESIAT (!!!) razy ... zanim ... dojdziemy do tego
co nas interesuje ! ... wiec naciskamy to F12 dotad az w linijce com/dat
wystapi cos podobnego do tego :

WORDPAD!.text+00010274

((((zupelnie poza tematem powiem ze mozemy tak rozpoznac czy program jest
spakowany/skompresowany czyms ... wtedy zamiast tego "text" moze pisac
np. "shrink0" albo "WWPack" (oczywiscie wszystko mowiace nazwy - zobacz
"zmienianie plikow na stale" i wszystko bedzie jasne <-) )))) ...
A wiec doszlismy do glownego kodu programu !!! ... hmmm ... co my tu mamy ?
... Wiemy ze F12 powoduje powrot z funkcji ... widzimy takze ze pierwsza
instrukcja ponad instrukcja na ktorej jestesmy to CALL !!! ... a wiec wszystko
prawidlowo ... tylko ... ten CALL to nie zwykly CALL lecz API-CALL <-) ...
Postac CALL-a :

CALL [SHELL32!ShellAboutA]

mhmmm ... Co nam to mowi ?! ... heh ... to znaczy ze cale okno jest
wyswietlane (i obslugiwane) za pomoca tej jednej procedury !!! ...
I np. dlatego NIE moglismy dojsc do kodu programu przy pomocy wm_move
gdyz obsluga tego poruszania zajmowala sie funkcja API - ShellAboutA
znajdujaca sie w DLL-u SHELL32.DLL ... i nie bylo potrzeby aby programista
sie tym w jaki kolwiek sposob przejmowal <-) (lenistwo-komercjalizacja) ...
Okay ... teraz WIEMY co jest odpowiedzialne za wyswietlenie (i obsluge)
tego naszego OKNA ... eh ... powiedzmy ze NIE podoba nam sie to okno ! ...
yeak ! ... uh ! ... fuj ! ... i go tam nie chcemy ... chcemy aby po
kliknieciu na Pomoc/WordPad-informacje NIC sie NIE pojawilo !!! ...
eh ... byloby COOL <-) ! ... przy pomocy powyzszej techniki : NIC
PROSTSZEGO !!! ... pewnie sie domyslasz co zrobic, nie ? ... Okay ...
wystarczy ze zastapisz calego tego CALL-a ... NOP-ami !!! ... (Jesli
nie wiesz jak to przeczytaj nastepny punkt o zmienianiu na stale plikow !)
I to okienko nie bedzie sie NIGDY wiecej pokazywalo <-) ... czujesz juz
potege tej techniki ? <-) ... Jeszcze na koniec sprobojemy WM_DESTROY
bo jest to (chyba) najlepsza (?) z wymienionych wczesniej <-) ... oczywiscie
chyba jeszcze nie wyNOP-owales tego CALL-a ??? <-) ... no wiec otwieramy
znowu znane okno z WordPad-a ... wchodzimy do S-ice i poniewaz znowu okno
zniknelo wiec przy ponownym otwarciu zmienil sie jego HWND !!! ... szukamy
jak zwykle jego HWND ... Okay, mamy ... oczywiscie ja przyjme stary HWND
z przytoczonej na poczatku tabeli ... teraz znana komenda :

bmsg 8a8 wm_destroy

Oczywiscie nie na HWND przycisku tylko OKNA ... Jak wiemy wm_destroy
jest wywolywane (jak sama nazwa mowi) kiedy okno znika czyli kiedy je
wylaczamy (niszczymy) ... wiec wychodzimy z S-ice'a i wylaczamy okno
- czy to przez klikniecie na OK czy tradycyjne klikniecie na krzyzyk <-) ...
Oczywiscie jestesmy w S-ice (jak by moglo byc innaczej <-) ) ... i znowu
oczywiscie chcemy sie dostac do kodu programu ... postepujemy tak jak
w przypadku wm_command (czyli F12, F12, F12 ... itd.) ... na szczescie
tutaj nie bedziesz musial naciskac dlugo ... juz po kilku(nastu) razach
jestesmy w glownym programie (Linia com/dat - WORDPAD!.text...) ... No
i wyladowalismy w tym samym miejscu co przy wm_command ... a wiec
te dwie procedury doprowadza nas do tego samego ... czyli z naszego
punktu widzenia sa jednakowo uzyteczne ze wskazaniem na wm_destroy gdyz
SZYBCIEJ dojdziemy do glownego kodu programu !!! ... Okay ...
Powyzszej techniki mozemy uzyc na REALNYCH celach ... wtedy gdy dostaniemy
sie do glownego kodu programu prawdopodobnie wyszlismy wlasnie z jakiegos
CALL-a ktory jest odpowiedzialny za wyswietlenie jakiegos OKNA ... wiec
wtedy trzeba poszukac jakiegos skoku (JZ,JNE ... itp.) przed tym CALL-em
ale takiego skoku ktory "skacze" ZA ten CALL !!! ... (chyba wiadomo dlaczego)
... wtedy prawdopodobnie znajdziemy w poblizu tego skoku procedure (CALL)
sprawdzajaca SERIAL albo czy wersja (NIE)Zarejestrowana albo cokolwiek ...
wtedy juz bedzie latwo dobrac sie do tego zabezpieczenia <-) ... teraz
MUSISZ juz widziec potege tej techniki <-) ...
MOWIE POWAZNIE ! ... radze Ci te technike DOBRZE opanowac !!! ... gdyz
jest ona NIE ZASTAPIONA ! ... Jesli teraz nic z tego nie zrozumiales to
zrob sobie przerwe ... idz na pivo ... do kina z dziewczyna ...
jesli jestes mnichem to pomedytowac <-) ... i przeczytaj jeszcze
raz (101 RAZY !!!) ... az to zrozumiesz i bedziesz umial wykorzystac ...
pamietaj ! ... to jest bardzo wazne ! ... popraktykuj z WordPad-em i
potem z jakims komercyjnym gownem ... PRAKTYKUJ ! ...
THE END <-) ! ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CO DALEJ ... ?!?!?! :

Hmmm ... powyzej opisalem jak sie mozna dostac do kodu zabezpieczenia ...
ale co zrobic dalej ??? ... hmmm ... troche juz powinienes wiedziec
po przeczytaniu textow wczesniejszych <-) ... eh ... no ale dobra
przeor klasztoru reverserow wam podpowie <-) ... hmmm ... np. w
poprzednich textach opisywalem CrackMEs ktore uzywaly standardowej
funkcji API GetDlgItemTextA i podawalem ze znajdujemy nasz SERIAL
w pamieci przez sprawdzenie adresu zawartego w argumencie PUSH-a
ktory natomiast znajdowal sie przed wywolaniem funkcji GetDlgItemTextA
(oczywiscie wiemy ze jako jej argument <-) ) ... jednak nie jest to
metoda ktora jest zawsze odpowiednia ... argument moze byc rejestrem
np. EAX przy czym GetDlgItemTextA modyfikuje ten rejestr i juz po
wykonaniu procedury GetDlgItemTextA komenda NIC nam nie da !
co prawda mozemy uzyc rejestru stosu ESP do tego celu (np. zobacz
na dolaczony WINICE.DAT na makro dotyczace GetDlgItemTextA i
GetWindowTextA i zwroc uwage ze gdy je uruchomie to S-ice
przerwie na wywolaniu tcyh funkcji AUTOMATYCZNIE pokazujac w oknie danych
NAME/SERIAL - to BARDZO ulatwia zycie - lepiej to przeanalizuj !)
Jednak ja nie robie tak jak podalem w poprzednich textach (no ...
kiedys tak robilem <-) ) ... ZAWSZE wykonuj komende :

s ds:0 l ffffffff "twoj_SERIAL"

Komenda ta powoduje przeszukanie okreslonego obszaru pamieci w
poszukiwaniu twojego SERIALA ... skladnia komendy to :
to komenda to adres poczatkowy (ds to Data Segment ...
czyli rejestr segmentowy danych ... wsakazuje na aktualny segment
w pamieci gdzie przechowywane sa dane !!!) przeszukiwania pamieci
trzeba dac ale nie ma (?) to celu ... jest to adres
koncowy przeszukiwania pamieci ... <"twoj_SERIAL"> wiadomo -
string jaki chcesz znalezc w pamieci ... Okay ... wykonales ta komende
i S-ice znalazl twoj SERIAL w pierwszym miejscu - wyswietlil twoj SERIAL
w oknie danych !!! ... teraz spisujesz adres pod jakim jest ten SERIAL
w oknie danych (bez segmentu - to (zazwyczaj) nie potrzebne) ... i aby
znalezc nastepne miejsce w pamieci z twoim SERIALEM wykonujesz komende :

s

ta ... bez zadnych argumentow ... S-ice znalazl (lub nie) nastepne miejsce
wystepowania ... i znowu spisujesz ... ale musisz wiedziec ze :
Zazwyczaj tylko kilka (lub jeden albo zero) "najnizszych" adresow ktore
wskazuja na miejsce w pamieci z twoim SERIALEM sa tymi ktore nas interesuja
i zazwyczaj zaczynaja sie one od cyfry "0" ... czyli np. adres
01234567 jest ciekawy ... i czesto ten adres jest jeszcze nizszy
np. 00123456 albo 00012345 ... natomiast jesli S-ice napotka twoj SERIAL
w wyzszym adresie to on nas NIE interesuje ... tzn. glownie chodzi o DWA
adresy : adres zaczynajacy sie od cyfry "8" np. 80123456 ... wszystkie
adresy zaczynajace sie od tego "8" okreslaja pamiec EKRANU (video) ... drugi
adres to adres zaczynajacy sie od cyfry "C" np. C0123456 i te adresy okreslaja
pamiec S-ice'a (w koncu S-ice tez musi gdzies trzymac dane <-) ) ...
Teraz tak ... przypuszczam ze spisales wszystkie miejsca w pamieci
zaczynajacej sie od adresu 0xxxxxxx (zazwyczaj) ... ALE ... prawdopodobnie
wystapilo raczej tylko jedno takie miejsce (oczywiscie jesli wykonales
ta komende bezposrednio po przerwaniu S-ice'a na funkcji GetDlgItemTextA -
bo jesli to zrobiles "gleboko" w kodzie programu to moze byc caly SZEREG
takich miejsc !!!) ... hmmm ... w zasadzie to nie musisz spisywac tych
adresow (adresu) bo od razu mozemy zastawic na nich breakpointy ! ...
Chyba wiesz jak to zrobic, prawda ? ... <-) ... no wiesz komenda
... tylko teraz jesli ustawisz breakpoint komenda to S-ice
automatycznie zamienia komende na co oznacza (breakpoint
on memory - byte) ze S-ice przerwie na odczycie/zapisie danych pod
adres okreslony argumentem komendy ALE tylko na JEDNYM BAJCIE !!!
... chyba wiesz co to oznacza ? ... <-) ... huh ? znowu nie ? <-) ...
ajajaj ... no dobra niech Ci bedzie ... wyjasnie ... przypuscmy ze mamy
SERIAL "1234567890" czyli 10-cyfrowy i jest zapisany pod adresem "0009A3FE"
czyli wiadomo ze zajmuje 10 bajtow ... ustawiamy breakpoint na tym adresie

bpm 9a3fe

oczywiscie S-ice zamienia to na i pozwalamy programowi sie dalej
wykonywac (wychodzimy z S-ice) ... i ... nic ... program nie przerwal ...
hmmm ... dlaczego ? ... przeciez musi pobrac dane z tamtego adresu ! ...
musi odczytac nasz SERIAL ! ... Oczywiscie ze MUSI ! ... wiec co ?
... hmmm ... program mogl zrobic np. cos takiego : odczytac 5-ty
bajt w naszym SERIAL-u i porownac go z jakas stala !!! i na podstawie
TYLKO tego osadzic czy dobry/zly SERIAL !!! ... Chyba sie juz wiesz
dlaczego S-ice NIE przerwal !? ... no to dobrze ... ale jak temu
zaradzic ??? ... czy musimy ustawiac na kazdym znaku w SERIAL-u ???
... oczywiscie NIE ... S-ice przychodzi z pomoca i latwo mozemy temu
zaradzic ... najpierw gorsze rozwiazanie : mozemy zastosowac zamiast
komendy (bpmb) komende (word) albo (doubleWord)
chyba nie musze tlumaczyc co to zrobi (odpowiedz sie sama nasuwa <-) ) ...
ALE ja nie uzywam powyzszej metody (bo widac oczywiste ograniczenia) ...
Zamiast niej robie cos takiego : uzywam komendy np. :

bpr 9a3fe 9a3fe+a rw

hmmm ... co to oznacza ? ... otoz komenda (breakpoint on memory
range) robi to samo co komenda z tym ze OKRESLAMY obszar na ktorym
ten breakpoint ma dzialac ! ... skladnia tej komendy to oczywiscie :
- komenda, <9a3fe> - poczatkowy adres, <9a3fe+a> to koncowy adres
(ReadWrite) to opcja ktora nakazuje S-ice'owi przerwanie i na
ODCZYCIE danych z danego miejsca w pamieci jak i ZAPISIE do tego miejsca
(jesli bysmy NIE dali tej opcji - standardowo bylaby tylko opcja ) ...
Jeszcze wyjasnienie dlaczego ten koncowy adres to <9a3fe+a> ? ...
poniewaz jak wiemy adres poczatku naszego SERIALA w pamieci to "9a3fe"
SERIAL ma 10 znakow ... przy czym to "10" to jest decymalnie natomiast
hexadecymalnie to wiadomo ze "0A" !!! ... czyli jesli chcemy ustawic
breakpoint na odczycie/zapisie KAZDEGO bajtu z naszego SERIALA to musimy
podaj jego poczatkowy i koncowy adres w pamieci !!! ... ufff ... chyba
jasne, nie ? ... <-) ... czyli podsumowujac komenda mozemy ustawic
breakpoint odczytu/zapisu danych TYLKO na JEDNYM bajcie w pamieci (bpmw -
na odczycie slowa (dwoch bajtow) i bpmd - na odczycie podwojnego slowa
(czterech bajtow)) ... natomiast komenda na odczycie/zapisie DOWOLNIE
duzego obszaru pamieci !!! ... ech ... jeszcze tego nie widzisz ? ...
jeszcze ostatnia proba zoobrazowania tego <-) :

BPM: BPR:
__ __
|31| <----P----> |31| :0009A3FE
-- R |--| :0009A3FF
32 <----O----> |32| :0009A400
33 G |33| :0009A401
34 R |34| :0009A402
35 <----A----> |35| :0009A403
36 M |36| :0009A404
37 | |37| :0009A405
38 | |38| :0009A406
39 | |39| :0009A407
30 <----|----> |30| :0009A408 => (0009A3FE+0A)
--

Rysunek symbolizuje BPMB VS BPR ! <-) ...
Jak zauwazyles pewnie ciag "31 32 33 34 35 36 37 38 39 30" to nasz SERIAL
(1234567890) w postaci hexadecymalnej ... i tutaj widac czym roznia sie obie
komendy ... miedzy kolumnami BPM i BPR jest nazwa "PROGRAM----" ktora symbolizuje
program ktory lamiemy (a cozby innego <-) ) ... od niego odchodza strzalki
ktore symbolizuja poszczegolne dostepy programu do komorek pamieci zawierajacych
nasz SERIAL ... i teraz, jesli dana komorka jest zakreslona to S-ice przerwie
na odczycie/zapisie do niej !!! ... a widzimy ze przy BPM zakreslona jest
TYLKO 1 komorka podczas gdy przy BPR zakreslone sa WSZYSTKIE !!! ...
eh ... kurde ... nie wiem po co rysowalem ten rysunek, przeciez to jest
bardzo proste ... w kazdym razie juz pewnie rozumiesz jaka jest roznica
pomiedzy komenda i ... tylko teraz ktora lepiej stosowac ??? ... hmmm
... to zalezy ... przy BPM w zwiazku z tym ze S-ice przerwie na odczycie/
zapisie TYLKO jednej komorki mozemy kilku rzeczy NIE zauwazyc, ale za to
S-ice nie musi przerywac w WIELU miejscach o ktorych wiemy co robia ! ...
Natomiast przy BPR S-ice przerwie na odczycie/zapisie WSZYSTKICH (oczywiscie
jesli tak sobie zazyczy cracker/reverser, bo mozna okreslic dowolny "zasieg"
tej komendy !!!) komorek z SERIALA (czy czegokolwiek) i w zwiazku z tym
mozemy miec lepszy wglad na to co sie dzieje wokol nas ! ... np. jesli widzimy
ze S-ice przrwal 10 (tyle znakow ma nasz SERIAL) razy na jakims okreslonym
miejscu kodu to mozemy wnioskowac ze program "przerobil" kazdy znak z naszego
SERIALA i cos z nim zrobil ! ... ale za to, przy BPR mozemy sie niezle nameczyc
naciskajac F5 tu i tam, poniewaz np. jesli program stosuje procedure zamiany
kazdego znaku z twojego SRIALA na duza litere to przy BPR S-ice przerwie wewnatrz
procedury zamiany przy zamianie KAZDEGO znaku ! ... a przy BPM przerwalby tylko raz,
zorientowal bys sie co robi ta procedura i juz S-ice by na niej NIE przerwal
... hmmm ... wiec jaki wybor ? ... hmmm ... ja robie tak : najpierw BPM
jesli to nie wystarczy do zorientowania sie o co biega to robie BPR i to
wydaje mi sie jest najlepsze rozwiazanie <-)... ... No i w zasadzie to
jest standardowe podejscie do zabezpieczen typu SERIAL ! ... po tym jak
S-ice przerwie na BPM czy BPR juz powinienes wiedziec co robic - po prostu
ANALIZOWAC ! <-) ... acha ! ... i CZESTO podczas sledzenia kodu wykonuj komende
bo mozliwe ze nie zauwazyles a program skopiowal
twoj SERIAL w jakies inne miejsce w pamieci !!! ...
END...
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
JAK ZMIENIAC NA STALE PLIKI :

Wiadomo ze jezeli zamieniesz jakas instrukcje w S-ice na inna to to
nie powoduje zmian w pliku programu tylko w pamieci (RAM) ... i jezeli
na nowo uruchomimy program to wprowadzone przez nas dane NIE istnieja !!!
Dlatego jesli chcemy zmienic jakas instrukcje na stale to musimy
dokonac modyfikacji na okreslonym pliku programu ... !!!
hehe ... prawdopodobnie juz wiesz jak to zrobic bo kazdy poczatkujacy
cracker/reverser woli znalezc ten "odpowiedni" skok i zwykle go "przestawic"
z wlasnym upodobaniem niz zmudnie odkodowywac proces kodowania SERIALA ...
no moze nie reverser <-) ... ale cracker raczej na pewno <-) ... heh ...
Mimo ze z pewnoscia 80-90% czytelnikow juz wie jak to zrobic to pokaze
tym mniej "ambitnym" <-) zeby nie zalewali mnie tonami poczty jak to
zrobic ... A wiec tak dla przykladu wrocimy jeszcze do CrackMe 1.0 ...
Przyjmuje ze przeczytales moj text nr. 2 ... tam jest opisane cale zabezpieczenie
i jesli czegos nie rozumiesz to tam przeczytaj <-) ... Do naszego zadania
wystarczy przytoczyc koncowy fragment zabezpieczenia :

58 POP EAX
3BC3 CMP EAX,EBX
7407 JZ 0040124C (x) <---|
E818010000 CALL 00401362 |
EB9A JMP 004011E6 |
E8FC000000 CALL 0040134D <-------|

Wyjasninie tych linijek macie w text #2 ... teraz to co musimy wiedziec to
ze jesli skok (x) nastapi to jestesmy zarejestrowani natomiast jesli nie
to jestesmy nie-zarejestrowani ... proste i logiczne <-) ... heh ...
w tym programie akurat BARDZO latwo jest odkodowac prawidlowy SERIAL wiec
tutaj nie maja sensu patch-e ... PAMIETAJCIE : PATCHE (czyli zmiany w pliku)
wykonujemy TYLKO w tedy gdy NIE ma INNEGO wyjscia !!! ... w zabezpieczeniach
typu SERIAL robimy to tylko w 1% przypadkow !!!, bo w 99% przypadkow MOZEMY
odkodowac SERIAL chociaz mielibysmy sie meczyc pare miesiecy <-) ... jesli
pojdziesz na latwizne i zrobisz zwyklego patcha to NIE jestes prawdziwym
reverser-em tylko co najwyzej crackerem !!! <-) ... Dobra, wracamy do kodu ...
Pomysl teraz co mozesz zrobic aby program "myslal" ze jest zarejestrowany ??? ...
No, teraz to juz wszystko zalezy od twojej fantazji ... jest wiele metod zlamania
(zpatchowania) tego programu ... musimy jednak zwrocic uwage na to ze kazda instrukcja
ASM zajmuje w pamieci iles tam BAJTOW ... Jesli chcemy zastapic ja jakas inna to
musi ona miec DOKLADNIE TA SAMA ilosc bajtow !!! ... natomiast jesli chcemy zastapic
ta instrukcje KILKOMA innymi instrukcjami to SUMA ich bajtow MUSI byc taka sama
jak ilosc bajtow zastepowanej instrukcji np.

3BC3 CMP EAX,EBX (ta instrukcja ma 2 bajty)
=
90 NOP (ta instrukcja ma 1 bajt)
90 NOP (ta instrukcja ma 1 bajt)

Jak widzimy, 2-bajtowa instrukcje CMP EAX,EBX mozemy zastapic dwoma
pojedynczymi instrukcjami 1-bajtowymi !!! inny przyklad to np.

E818010000 CALL 00401362
=
90 NOP
90 NOP
90 NOP
90 NOP
90 NOP
=
83E201 AND EDX,01
90 NOP
90 NOP

Chyba juz teraz wszystko jasne ? ... chyba wiadomo ze liczba hexadecymalna
skladajaca sie z dwoch cyfr czyli 00-FF to BAJT ? ... eh ... jesli nie to konicznie
musisz sie wziasc za ASM !!! ... Musze tu polecic dla wszystkich znajacych
English WSPANIALY tutorial ASM : "ART OF ASSEMBLY LANGUAGE" ... Nic tylko
przylepic mu etykiete "A MUST READ" <-) !!! ... Okay ... Jesli DALEJ mi nie
wierzysz ze NIE MOZNA zmienic jednej instrukji w programie na inna ktora ma
wieksza/mniejsza liczbe bajtow to zrob cos takiego (UWAGA ! ... nie ponosze
odpowiedzialnosci jesli zrobisz sobie tym krzywde !!!) : wejdz teraz do
S-ice'a (Ctrl+D) i po prostu wpisz komende (btw: jest to BARDZO pomocna
komenda - jesli wie sie jak ja uzywac <-) ) ... powoduje ona zastapienie
aktualnej instrukcji (tej na ktorej masz pasek w oknie kodu) jakas inna ...
Po komendzie
wpisz dowolna komende w ASM np. "mov eax,ebx" albo "nop" (sprawdz
czy ma napewno inna ilosc bajtow niz ta ktora chcesz zastapic) teraz nacisnij
enter i (Jeszcze raz mowie : NIE ponosze odpowiedzialnosci !!!) wyjdz z S-ice
(F5) ... Oczywiscie Win sie totalnie zawiesil !!! ... ale moze tez to spowodowac
inne rzeczy ... nie wiem jakie ale tak na wszelki wypadek mowie <-) ... No
chyba teraz juz mi wierzysz ze NIE mozna zmieniac instrukcji instrukcja o wiekszej
liczbie bajtow !!!?!!! ... No nic, wracamy do kodu ...
Podaje np. standardowe rozwiazanie problemu (zlamanie programu) : mozemy skok (x)
czyli dwubajtowa instrukcje "JZ 0040124C" zamienic na takze dwubajtowa instrukcje
"JNZ 0040124C" co spowoduje ze program zarejestruje sie dla jakichkolwiek danych
(Jakikolwiek NAME i SERIAL), no chyba ze podamy te wlasciwe dane (ale to graniczy
z cudem, zeby trafic wlasciwa "kombinacje") ... No chyba ze nie jestes tak przekonany
ze to graniczy z cudem, to mozemy zastapic ten skok czyms takim : "JMP 0040124C" co
tez jest 2-bajtowe !!! ... heh ... mozliwosci jest naprawde DUZO ... moglibysmy np.
wy-NOP-owac "CALL 00401362" i "JMP..." za nim, czyli zastapic te dwie instrukcje kilkoma
instrukcjami NOP (zalezy ile te dwie instrukcje maja bajtow) ... albo zamiast instrukcji
"CMP EAX,EBX" dac "CMP EAX,EAX" i skok (x) zawsze nastapi ... mozliwosci jest naprawde
DUZO ! ... Okay ... przypuscmy ze juz wiesz co chcesz zmienic ... ale teraz JAK to
zrobic ??? ... eh ... a wiec tak, potrzebujemy HEXedytora ... obojetnie jakiego ...
Ja uzywam "Hacker's View" , ale to naprawde OBOJETNE ... Opisze tu jak to zrobic
przy pomocy HIEW-a (potocznie Hacker's View), lecz mniej wiecej tak samo to bedzie
wygladalo u Ciebie ... No wiec tak, przyjmijmy na przyklad ze chcesz zmienic
"JZ 0040124C" na "JMP 0040124C" ... co musimy zrobic ? ... po pierwsze wiadomo ze
w pliku dane zapisane sa w postaci bajtow ... aby znalezc w nim interesujaca nas
instrukcje musimy znac jej "OPcode" czyli np. "OPcode" instrukcji "JZ 0040124C" to
7407 (Jesli w S-ice w twoim "oknie kodu" nie widzisz nic pomiedzy kolumna adresow
a kolumna instrukcji to wykonaj komende - wtedy zobaczysz OPcod-y
instrukcji !!!) ... Teraz jesli znamy juz "OPcode" danej instrukcji mozemy ja
znalezc w pliku !!! ... eh ... Teraz tylko nasuwa sie pytanie : "a co jesli w pliku
jest wiecej takich instrukcji - z kad mozemy wiedziec ktora jest ta "wazna" ??? " ...
no wlasnie ... w takim razie musimy takze spisac OPcod-y instrukcji z "otoczenia" ...
Czyli dla naszego przykladu jakim jest CrackMe 1.0 aby zlokalizowac ten "interesujacy"
skok spiszemy OPcod-y kilku instrukcji z otoczenia, oto co powinienes zapisac sobie na
kartce :

58,3B,C3,74,07,E8,18,01,00,00

(Chyba rozpoznajesz w tym ciagu instrukcje z otoczenia i ta "glowna" - 7407)
Okay ... to powinno wystarczyc ... Teraz tworzymy kopie zapasowa pliku ktorego
kod chcemy modyfikowac ... chyba wiadomo dlaczego ? <-) ... i jeszcze kopiujemy
ten plik do katalogu z HIEW-em ... w wyniku mamy 3 pliki ! ... Jeden - oryginal ...
dwa - kopia zapasowa ... trzy - do pracy z HIEW-em ... teraz uruchamiamy HIEW-a
albo zwykle (nowsze wersje) i pokazuje nam sie "menadzer plikow" <-) z ktorego
szukamy i wybieramy plik ktory chcemy edytowac albo mozemy go uruchomic bezposrednio
z prompt-a DOS-a podajac jako argument plik ktory chcemy edytowac, czyli :

hiew crackme.exe

Ukazuje nam sie okno ktore przypomina wbudowany edytor NC/FAR ... hmmm ...
teraz przechodzimy do trybu hexadecymalnego (bylismy w ASCII) naciskajac F4 ...
Aby znalezc wycinek kodu ktory szukamy naciskamy F7 ... mozemy teraz szukac zarowno
ASCII jak i Hex ... nam zalezy na hex-ach wiec przechodzimy do okna przy ktorym pisze
Hex i wpisujemy to co sobie zapisales na kartce ... Naciskamy Enter ... Teraz HIEW
powinien szybko znalezc to co szukamy ... w oknie z wartosciami hexadecymalnymi
na samej gorze powinien pojawic sie bajt 58 (pierwszy ktory wpisalismy do szukania)
Oczywiscie widac wyraznie nasz ciag : 58 3B C3 74 07 E8 18 01 00 00 ... Wiemy
ze bajty 74 07 odpowiadaja instrukcji "JZ 0040124C" a my ja chcemy zmienic na
"JMP 0040124C" ... heh ... powinniscie wiedziec ze niektore bajty w instrukcji
odpowiadaja za sama instrukcje a inne za jej argumenty ... w instrukcji
"JZ 0040124C" bajt 74 odpowiada za okreslenie samej instrukcji czyli ze jest
to "skok warunkowy gdy zero" natomiast bajt 07 odpowiada za jej argument
czyli "0040124C" ... my argumentu nie chcemy zmieniac, tylko sama instrukcje !!! ...
wiec bajt 07 zostawimy bez zmian natomiast zajmiemy sie bajtem 74 ... hmmm ...
Co mamy z nim zrobic ??? ... Tu musisz wiedziec ze do okreslenia instrukcji JMP
sluzy bajt EB ... czyli jesli chcemy aby instrukcja "JZ..." zmienila sie na "JMP..."
to musimy zmienic pierwszy bajt z jej OPcod-u : 74 na bajt EB !!! ... proste nie ? <-)
... hmmm ... zapytasz skad masz wiedziec jaki bajt(y) charakteryzuja jaka instrukcje ???
heh ... Musisz sobie skads zalatwic taki wykaz !!! ... (nie pytaj mnie skad <-) ) ...
A wiec chcemy zmienic bajt 74 na EB ... zaraz go zmienimy ... ale NAJPIERW ! :
A wiec tak ... jestesmy w HIEW ... znalezlismy te instrukcjie ... Teraz KONIECZNIE
zrob jeszcze jedno szukanie (F7) aby byc PEWNYM ze w kodzie programu nie wystepuje
wiecej miejsc z naszymi instrukcjami ... w tym przypadku nie bedzie ... ale co
by bylo gdyby byly ??? ... musielibysmy jeszcze raz wejsc do S-ice'a i spisac
WIECEJ bajtow (OPcod-ow) z "okolicy" interesujacego nas kodu ... Dobra, wiec
wiemy ze NAPEWNO kod ktory znalezlismy w HIEW odpowiada temu z S-ice ...
aby byc jeszcze bardziej pewnym nacisnij F2 - zobaczsz kod ASM - jesli odpowiada
on temu z S-ice to wszystko OK ... dobra wracamy do trybu HEX naciskajac ponownie F2 ...
teraz chcemy zamienic bajt 74 ktory widzimy w oknie HIEW-a
(no wiesz - ten z ciagu 58 3B ...) na EB ... Aby to zrobic naciskamy F3 i widzimy
ze kursor jest na oknie z wartosciami HEXadecymalnymi ... teraz wystarczy tylko
najechac na bajt 74 i wpisac EB !!! (Jesli jeszcze nie wiesz dlaczego EB - to
przeczytaj KILKA razy powyzszy text) ... Jesli sie pomyliles albo wpisales cos
innego to mozesz nacisnac ESC i wszystko wroci do normy ... natomiast jesli chcesz
aby zmiany zostaly zapisane w pliku to wystarczy nacisnac F9 (zaraz po wpisaniu EB) !!!
Gdy zmiany juz zostaly zapisane mozemy spokojnie wyjsc z HIEW-a ... teraz wystarczy
zastapic oryginalny plik programu tym ktory wyszedl po "obrobce" w HIEW-ie <-)
i uruchomic CrackMe ... wchodzimy do Help/Register wpisujemy DOWOLNE dane ... i
... yeah ! ... program zarejestrowany dla dowolnych danych <-D !!!
Mam nadzieje ze wszystko zrozumiales ... bo to jedna z podstawowych rzeczy <-) ...
Jesli nie to KONIECZNIE przeczytaj jeszcze kilka razy powyzszy text, az do skutku <-)
acha ... i oczywiscie NAJWAZNIEJSZY moral to : PRZECZYTAJ "ART OF ASSEMBLY LANGUAGE"
!!! <-) to jest "lektura obowiazkowa" dla kazdego szanujacego sie (przyszlego)
crackera/reversera - i wez sobie dluzszy urlop bo jest tego cos 5 MB w PDF !!!!!
... Czasami sie moze zdarzyc ze tych OPcod-ow ktore spisales w S-ice ani rusz nie
mozesz znalezc w pliku programu uzywajac HEXedytora !?!?!? ... To prawdopodobnie
znaczy ze albo :
a) Zle spisales bajty (sprawdz 3 razy)
b) Szukasz w zlym pliku !!! tzn. ze np. procedura sprawdzajaca jast w jakims
zewnetrznym DLL-u albo jakimkolwiek innym pliku !!! (w S-ice gdy jestes
przy procedurze sprawdzajacej sprawdz co pisze w linijce oddzielajacej
okno komend od okna kodu - czy to nie przypadkiem nazwa czegos innego
niz tego co sie spodziewales !?!?!)
c) Plik jest albo spakowany albo szyfrowany ... nie to nie znaczy
ze plik jest w ZIP-ie ... <-) ... tzn. ze plik jest tak pakowany ze
jest rozpakowywany dopiero w momencie uruchomienia (rozpkowowywuje sie w
PAMIECI operacyjnej (RAM)) ... Sa takie rozne standardowe sposoby kompresji
np. WWPACK(32) (btw : wymyslony przez polaka <-) ), PKLite , Shrinker , VBox ...
i wiele innych ... Te moze i bylyby trudne do zdekompresowania dla poczatkujacych
ale sa gotowe automatyczne programy ktore to za nas robia, a my jak wiadomo
jestesmy tacy LENIWI ze zaraz siegniemy po to co nam chocby troche ulatwi "prace"
<-) ... Takie narzedzia to UNP (dla 16-bit) i ProcDump (dla 32-bit) ... przy czym
ten drugi jest na tyle konfigurowalny (za pomoca skryptu) ze BARDZO latwo mozemy
go "nauczyc" dekompresowac/dekodowac rozne sposoby kompresji/kodowania !!! Jesli
programista wymysli sobie jakis swoj sposob kompresji/kodowania to ZAZWYCZAJ
jest to bardzo prymitywne ... i nawet poczatkujacy sobie z tym poradzi ... a majac
ProcDump-a to nawet dziecko <-) ...
Na koniec wyjasnie cos jeszcze ... mianowicie mozesz sobie zadawac pytanie dlaczego
musimy spisywac te wszystkie bajty z okolicy naszej instrukcji zamiast po prostu
spisac offset danej instrukcji i ja znalezc w HIEW-ie ... hmmm ... poniewaz te
offsety w S-ice to NIE to samo co offsety w pliku !!! ... te w S-ice to sa offsety
uzaleznione od W95/98 i pamieci RAM !!! ... a te w pliku to sa liczone od zera od
poczatku pliku do konca pliku (jak zobaczysz sa ulozone rosnaco i sa uzaleznione od
dlugosci pliku !) ... dlatego NIE mozemy po prostu spisac offsetu z S-ice i znalezc go
w pliku w HIEW-ie ... natomiast umozliwia to WDASM ktory podaje offset instrukcji w
pliku ! ...

heh ... Ok ... to by bylo na tyle na temat wprowadzania zmian w plikach <-)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LAMANIE POD STARYM DOBRYM DOS-em ... (ech to byly czasy <-) ) ...

hmmm ... w zasadzie to nie ma duzo roznic ... cracking (reversing)
to cracking (reversing) ... moze taka z wiekszych roznic to PRZERWANIA,
w programach W95/98 NIE zobaczysz ich zbyt wiele ... ale w DOS sa
WSZECHOBECNE ! ... Najlepiej zdabadz jakis spis wszystkich przerwan
... oczywiscie najlepszy to slynny "Ralf Brown's interrupt List" ...
i zobacz co robia ... eh ... zreszta przypuszczam ze ludzie to czytajacy
znaja sie na komputerach wiec wiedza co to przerwanie i ktore odpowiada
za co (przynajmniej przypuszczam ze znacie te najpopularniejsze) ...
w zasadzie to jest ta glowna roznica - nie ma API ... bo chyba nikt
z was nie probowal GetDlgItemTextA na programie DOS-owym <-)) ...
jest jeszcze szereg innych drobnych ... ale to juz sam zobaczysz <-) ...
wiec np. wiecie ze odczyt SERIALA z okna dialogowego moze wystapic
przy pomocy przerwania 21h (chyba najpopularniejsze w DOS-ie) fukcji
AH=0Ah ... oczywiscie takze moze za pomoca innych np INT 16h albo
czegos innego (po prostu zapoznaj sie z przerwaniami) ... no dobra
ale jak zmusic S-ice'a zeby sie pojawil na tym przerwaniu ... hmmm
za pomoca komendy (Breakpoit on interrupt) ... np. :

bpint 21 if ah==a

Musimy tu zastosowac wyrazenie warunkowe gdyz jesli dalibysmy samo
S-ice przerwal by na kazdym wywolaniu tego przerawania ktore
jak wiesz jest stosowane przez programy DOS-owe troche czesto <-) ...
Nawiasem mowiac to to wyrazenie warunkowe mozna stosowac nie tylko
przy komendzie ... mozna je stosowac przy WIELU komendach ...
chy to czy i innych ... zwroc uwage ze maja byc dwa znaki
'=' !!! ... (notacja C/C++) ... i przy okazji powiem ze w S-ice domyslnym
systemem liczbowym jest hexadecymalny czyli szesnastkowy !!! i jesli chcesz
jakas liczbe uzyc do czegos w systemie dziesietnym to musisz postawic przed
nia znak '+' !!! ... czyli np. jesli chcemy zobaczyc jaka wartosc w hex ma
liczba dziesietna 21 to stosujemy komende :

? +21

No ale to tak poza tematem <-) ... Czyli jesli postawiles ten breakpoint
na przerwaniu 21h funkcji 0Ah to zobacz czy to dziala ! ... jesli nie
to sproboj z innym przerwaniem i funkcja (po prostu zapoznaj sie z
jak najwieksza liczba przerwan) ... oczywiscie ja nie znam wszystkich
dlatego mam pod reka ksiazke ktora musze polecic ! ... Ksiazka ma
tytul : "ENCYKLOPEDIA INFORMATYKI" napisana przez Stanislawa Kruka ...
miedzy innymi ma w sobie wyjasnienia 1000 terminow informatycznych, wykaz
instrukcji koprocesora 80387 (!), wykaz wszystkich instrukcji ASM
procesorow x86 (!!), wykaz wszystkich przerwan (!!!), i kilka innych rzeczy !
... po prostu musisz ja miec ... wszystkie informacje co Crackerowi (Reverserowi)
sa potrzebne sa w niej zawarte (nie wiem dlaczego nie ma tytulu
"ENCYKLOPEDIA CRACKERA") <-) ... paskudna reklama co ? <-) ... no ale nic
... eh ... Nie bede sie dalej rozwodzil nad DOS-em ... gdyz i tak juz
umiera (bedziemy tesknic przyjacielu <~~-( ) ... Pamietaj o tych przerwaniach
... potem juz postepujesz podobnie pamietajac o zasadach zadzacych sie w
16-bit (16-bitowe adresy itp.) ... aha ... nie potrzebujesz specjalnie
Debuggera dla DOS gdyz rownie dobrze mozesz uruchomic program DOS-owy
pod W95/98 ... albo skorzystac z narzedzia ktore udostepnione jest
wraz z S-ice : dldr.exe ... jest ono w katalogu UTILS16 (nazwa mowi sama
za siebie) i ladujesz nim program :

dldr programx.exe

i ladujesz na poczatku kodu programu ... potem juz robisz wszystko "normalnie" ...
Jesli jednak MUSISZ w DOS-ie go lamac to jest tez S-ice 2.80 dla DOS-a ... znajdz
go w sieci i uzywaj ! <-) ...
No dobra ... to tyle <-) ...
END ! ...
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



...................................................................
LAMANIE VB-SHIT <-(

Eh ... nawet nie chce mi sie o tym pisac bo to przykre ... jednak
trudno ... robota to robota <-) ... VB to takie cos co nie jest jakby
zwyczajnym programem (tylko gownem <-) ) tylko programem ktory jest zwiazany
ze standardowymi bibliotekami VB (DLL-e) ... zaleznie od wersji - VB3 , VB4 , VB5 , VB6
(VB 1 i 2 to nie wiem czy to bylo czy nie ... w kazdym razie nie pod W32) ...
- nazwy bibliotek sie roznia np. dla programow napisanych w VB4 (32-bitowych)
nazwa biblioteki to : VB40032.DLL albo dla VB5 to : MSVBVM50.DLL ...
prawde mowiac to nie pamietam reszty nazw i nie chce mi sie sprawdzac
ale mozesz gdzies na to zerkanac ... Nie znam dlatego ze po prostu nie
musze ... zawsze udaje mi sie rozpoznac ktory program jest VB a ktory
nie ... to proste ... wystarczy zobaczyc podczas sledzenia kodu na DLL-e
jakie program "przerabia" jesli sa w ktorejs nazwie DLL-a literki "vb" to
prawdopodobnie jest to program VB ... nie ma tu zadnej filozofii ...
Rozpoznac mozna tez czy to program VB przy instalacji ... jesli widzisz
ze instalowane sa jakies "podejrzane" biblioteki to latwo to rozpoznac ...
W zasadzie jest tylko kilka roznic w lamaniu "zwyklych" programow i VB ...
przedstawie to w punktach :
1) Do kodu zabezpieczenia NIE dostaniemy sie przez GetDlgItemTextA czy tym
podobnych standardow ... dostaniemy sie za to przez HMemCpy !!! ...
(chociaz to tez w zasadzie mozna uznac za standard <-) ) ...
Zobacz na dzial "SPOSOBY PODEJSCIA" na dokladniejsze info o HMemCpy ...
Tylko tutaj po tym hmemcpy nie dostaniemy sie do kodu wlasciwego programu
lecz do BIBLIOTEKI !!! ... czyli po ilus tam F12 w linijce com/dat nie bedzie
nazwa programu tylko nazwa biblioteki np. VB40032.DLL ... i musimy sledzic
biblioteke (w zasadzie to nie musimy (zazwyczaj) wystarczy znalezc ciag
bajtow odpowiadajacy za okreslony ciag instrukcji poznasz to przy okazji <-) )
2) Jak wiadomo programy VB korzystaja ze standardowych bibliotek to wykonania
nawet najdrobniejszych zadan (takich jak np. porownanie SERIALI <-) ) ...
w zwiazku z tym sprawdzenie czy SERIAL byl wlasciwy (zazwyczaj) zostanie
przeprowadzone w tej wlasnie bibliotece (DLL-u) ... I tu przestroga ! ...
jesli juz znajdziesz kod sprawdzajacy poprawnosc SERIALA w DLL-u to NIE mozesz
zmienic w kodzie DLL-a jakiegos bajtu np. skoku JZ na JMP czy JNZ ...
hmmm ... dlaczego ? ... poniewaz z tego DLL-a NIE korzysta tylko program
ktory akurat lamiesz, lecz TAKZE inne programy VB4 (jesli to byl program VB4)
i te inne tez by korzystaly ze zmienionej biblioteki powodujac nie przewidziane
konsekwencje ... a jesli nawet tylko program ktory lamiesz korzysta z danego
DLL-a to i tak jest niebezpieczenstwo ! ... gdyz odcinek kodu w bibliotece
ktory jest odpowiedzialny za sprawdzenie SERIALA i ktory zpatchowales NIE
jest prawdopodobnie odpowiedzialny tylko i wylacznie za sprawdzenie tego
SERIALA lecz jest odpowiedzialny tez za porownanie JAKICHKOLWIEK lancuchow znakow !!!
... uh ... dalej nie lapiesz ? ... no coz ... zobrazuje to na przykladzie ...
WYOBRAZMY sobie program X ktory formatuje dyski ... jest to program VB4 ...
ma pole textowe w ktorym wpisujesz litere dysku do sformatowania ...
jest to shareware i mozna go zarejestrowac przez podanie numeru licencyjnego
... Znalazles miejsce w DLL-u gdzie jest porownywany twoj SERIAL z
prawidlowym ... okay ... zmieniles skok JZ ktory odpowiada za zarejestrowany/
niezarejestrowany program w hexedytorze na JMP (w pliku VB40032.DLL !!!) ...
uruchamiasz program, wpisujesz dowolne dane i spoko, program zarejestrowany ...
a teraz chcesz sobie sformatowac dyskietke, wiec wpisujesz litere dysku "A" ...
przypuscmy ze program NAJPIERW porownuje czy zostalo wpisane "C" ... a jesli ty
zpatchowales tego DLL-a to program "pomysli" ze to co wpisales jest ZAWSZE "C" ! ...
i co ? ... i zamiast sformatowanej dyskietki masz sformatowany HDD <-) ... (dzieci :
nie probojcie tego w domu <-) ) ... Oczywiscie program jest fikcyjny, ale to tylko
jako przyklad - abys zrozumial problem <-) ... Program VB moze porownywac KAZDE
stringi ta metoda i BEDA sie dzialy nie przewidziane rzeczy !!! ... WIEC PAMIETAJ !
... NIE EDYTUJ VB-DLL-a !!! (przynajmniej w zabezpieczeniach typu SERIAL <-) ) ...
3) W VB-DLL-ach istnieja standardowe miejsca gdzie sa porownywane stringi (jesli
zerkniesz na dolaczony WINICE.DAT do tego textu to zobaczysz w makrach jakie
to miejsca) ... jednak sproboj najpierw standardowo ... tak dla praktyki
pozniej zaczniesz stosowac te "wzorce" <-) ...
4) Wszystkie (chyba) wersje VB zanim zrobia cos ze stringami zamieniaja ich
format na WIDE CHAR ! tzn. ze oddzielaja kazdy znak bajtem "00" !!! ...
Obrazowo :

ZWYKLY : "12345" (okno danych : 12345)

WIDE CHAR : "1",0,"2",0,"3",0,"4",0,"5",0 (okno danych : 1.2.3.4.5.)

Jesli zobaczysz w oknie danych twoj SERIAL wlasnie w formacie WIDE CHAR
to mozesz podejzewac ze VB sie gdzies tutaj krecil <-) ... taka konwersja
pomiedzy zwyklym formatem textu a WIDE CHAR jest wykonywana (zazwyczaj) przy
pomocy funkcji API : MultiByteToWideChar ... mozemy na niej zastawic BPX
i od razu przechwycic miejsce w pamieci z naszym przekonwertowanym SERIALEM
zastawic na nim BPM/BPR i juz dalej standardowo ... UWAGA ! to jest bardzo
wazne z tym WIDE CHAR, jesli nie bedziesz o tym pamietal mozesz sobie
nie poradzic z programami VB ! ...

5) Istnieja dekompilatory dla VB3 i VB4 ... mozesz sprobowac ta droga <-) ...
Istnieje takze program o nazwie SmartCheck jest to "program flow analyzer"
tzn. sledzi okreslone dzialania w programie i wykonuje "raport" ...
Jednak ten program nie jest tylko dla programow VB (chociaz wydaje sie
ze do tego zostal przeznaczony <-) ) lecz takze do innych ... Po prostu
uruchom go i sie z nim zapoznaj (poproboj opcje I PRZECZYTAJ helpa) ma
"idioto-odporny" interface (zreszta tak jak WDASM) <-) ... (moze kiedys
napisze cos jeszcze o SmartCheck) ...

EEE ... dobra ... wiecej nie chce mi sie pisac ...
spadam z tego dzialu <-) ...
....................................................................



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PREZENCIK !!! <-) :

A teraz na koniec jako "prezent" <-) - "zadania domowe" ...
Wiele osob pyta mnie o to wiec postanowilem to tutaj zamiescic ... <-) ...
Jest to zbior 35 programikow ktore sa albo BARDZO proste albo BARDZO banalne <-) do
zlamania ... tzn. ze macie na kazdy program 1-5 min ... wszystkie zabezpieczenia
w nich sa typu SERIAL czyli sam SERIAL albo NAME/SERIAL ... nawet nie ma zadnego z
plikiem rejestracyjnym (nie mialem zadnego prostego pod reka <-) ) ...
Postarajcie sie je zlamac ... tak w ramach treningu <-) ...
... nie napisalem ktore wersje - bo nie chcialo mi sie sprawdzac ... <-) ...
Ze zdobyciem programow nie powinno byc wiekszych problemow ... w kazdym razie
w okolicy czasu gdy to pisze <-) ... wszystkie (chyba) programy sa z magazynow :
CHIP/PC WORLD KOMPUTER/WWW ... numery : 12/98 , 1/99 , 2/99 ... programy
oznaczone znaczkiem "(VBx)" znaczy ze sa napisane w Visual Basic-u (niezbyt
ich duzo <-) ) ... no ale "programisci" VB tworza ich coraz wiecej <-(( ) ...
(przynajmniej zadbalem o wszystkie wersje VB <-) ... wersja 3 juz praktycznie
wychodzi z uzytku)

Oto "CZARNA LISTA" <-) :

* WIN BOOST 98
* TELEPORT PRO
* EDIT++
* MIRC
* AUTOODTWARZACZ
* PACT GHOST 98
* WINHACKER
* ICCD
* MULTIMEDIA XPLORER
* MOMSHELL 32
* MACRO MAGIC
* CAOS GRAPH
* AUDIO COMPOSITOR
* FXEDIT
* WINAMP
* BUSINESS CARD DESIGNER PLUS
* GROUND CONTROL
* SAFETY NET PRO (VB4)
* GOLDWAVE
* KATALOG CD
* REMINDER
* THINGS TO DO
* SAFETY SCAN
* ARJSHELL
* WINZIP
* LINEAGE MANAGER FOR DOGS
* MUSIC MASTERWORKS
* TWIN EXPLORER
* HTMLOWIEC
* SCREEN LOUPE
* HTMLCOLORS
* CONNECTPAL PROFESSIONAL (VB5)
* F-SECURE SSH
* WEB WEAVER 98 (VB6)
* IRFAN VIEW

Okay ... Okay ... wiem mistrze ze to dla was za proste <-) ...
jeszcze podam 2 programiki ktore sa na troche wyzszym poziomie ...
(ale nie mysl ze to sa BARDZO dobre zabezpieczenia !!!)
programy te to :

* FAR
* FIRE HAND EMBER PRO

wskazowka do FAR-a :
Rejestracja odbywa sie przez uruchomienie programu z opcja -r ! ...
czyli w prompt DOS-a (bezposrednio z FAR-a ... tak jak NC - jest prompt)
wpisujemy (bedac w katalogu FAR-a) komende : far.exe -r ... !!!
program jest 32-bit ale pracuje w trybie textowym ! ... nie zadziala
tu zaden API (tzn. zaden do pobrania textu z okna np. GetDlgItemTextA) ...
Sa zapewne inne metody dostania sie do kodu programu ... ale powiem wam
jedna (najbardziej oczywista) ... eh, powinniscie to sami wykombinowac ...
JESLI CHCESZ TO NIE CZYTAJ DALEJ KILKU LINIJEK !!!
Ta oczywista metoda to oczywiscie : wpisz dane rejestracyjne ... wejdz do
S-ice'a przeszukaj pamiec czy nie ma w niej twojego SERIALA (s 0 l ffffffff "xxx")
Jesli znajdziesz to breakpoint (BPM/BPR) wychodzisz z S-ice'a i naciskasz OK ...
Jesli nie to wyjdz i znowu wejdz i znowu poszukaj i tak w kolko <-) (albo F12) ...
dalej juz sam ...

wskazowka do FIRE HAND EMBER PRO :
Nie ma <-) ...

Jesli powiedzie Ci sie z FAR-em i FIRE HAND EMBER PRO to juz sobie mozesz odpuscic
czytanie textow ! ... po prostu dalej mozesz isc juz bez ich pomocy ... przynajmniej
moich ... (az do pewnego numeru <-) ) ... co najwyzej czytaj texty o jakichs
nieznanych trickach (najlepiej na fravia.org) ... a tak to mozesz polegac na
swojej inteligencji i wprawiac sie w naszej "sztuce" ... <-) ... (ale powtarzam :
nie popadnij w MEGALOMANIE bo to nie sa BARDZO trudne zabezpieczenia !!!) ... <-)

UWAGA !!! ... WSZYSTKIE programy TRZEBA skasowac zaraz po zlamaniu ... bo podalem
je TYLKO jako zadanie praktyczne ... i da sie je zastapic jakimis FREEWARE ...
oczywiscie jak chcesz to mozesz je kupic <-) ... ale dla mnie (prawie) wszystkie z
nich sa BEZUZYTECZNE ... (tzn. (prawie) wszystkie mam zastapione przez FREEWARE -
i zmierzam do tego aby wszystkie (nie tylko prawie) zastapic FREEWARE-ami a te co
mam SHAREWARE to chodza na zasadach przyjetych przez autora !) ...
hehe <-) ... TO NIE ZADEN ZART ! ... MOWILEM POWAZNIE <-| ... podsumowujac macie
zrobic tak : a)INSTALL, b)CRACK, c)UNINSTALL !!! ... przynajmniej ja tak zrobilem i
mam nadzieje ze zrobisz to samo ... !!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



==================================================================
Linki :

CrackPL - http://www.hyperreal.art.pl/cypher/crkpl/ WRESZCIE polska strona
dotyczaca crackingu !!!
ma liste E-mail na ktora
mozesz sie zapisac ...

(UWAGA! reszta stron po angielsku!) :

MiB - mib99.cjb.net/ Kilka dobrych FAQ i
kilka dobrych programikow CrackMe
wraz z rozwiazaniami ... tam sa wszystkie
CrackMe ktore opisalem w moich textach
napisane przez +Cruehead-a

Fravia+ - fravia.org/ bardzo dobra strona czlonka +HCU (HQ +HCU)
bardzo duzo opisow zlaman
NIEZASTAPIONA ... i jedyna ... praktycznie
wystarczylaby ta jedna strona do nauki <-)
Przynajmniej ja praktycznie z innych NIE korzystam

ASM tutorials - www.la-online.com/assembly.htm Duzo faq dotyczacych ASM-a

+Greythorne - home.sol.no/reopsahl/files/assem.htm ciekawa strona
o Crackingu i ASM

Iczelion - iczelion.cjb.net NARZEDZIA ! ... dosc szybki
transfer (jesli cokolwiek z
TPSA mozna nazwac "szybkoscia" <-) )


Wiecej roznego rodzaju stron poszukaj w linkach na Fravia.org ...
Jest tam wszystko czego potrzebujesz <-) ...
===================================================================



::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
LITERATURA <-) :

"ZROZUMIEC ASEMBLER" - Eheheh ... nauka assemblera dla nowicjuszy
JEFF DUNTEMANN UWAGA ! ... jest to tak LOPATOLOGICZNIE napisane
Wydaw. "WILEY" ze prosciej sie NIE da ! ... wiec jesli nie pojmujesz
ASM-a z innych zrodel powinienes na to zerknac <-) ...

"ART OF ASSEMBLY LANGUAGE" - To jest cos co kazdy powinien przechowywac na HDD !!!
NIE znam autora DOSKONALY tutorial ASM-a (Po angielsku) ... po
Wydaw. NIE znam prostu lepszego nie ma ! <-) ... Nie pytaj sie mnie
gdzie to dostac ... powinno byc na stronie +Greythorne'a
... poza tym umieszcze go na swej stronie ... jest juz
zaladowany na FTP ...

"FRAVIA.ORG" - Najlepiej przeczytaj jak najwiecej z tej strony WWW ... <-) ...
FRAVIA+
Wydaw. SIEC <-)

"ENCYKLOPEDIA INFORMATYKI" - Prawie cala "techniczna" strona Crackingu/reversingu
STANISLAW KRUK opisana ! ...
Wydaw. "PRACOWNIA
KOMPUTEROWA JACKA
SKALMIERSKIEGO"

"WIELE INNYCH" - Szukaj roznych zrodel ... np. ksiazki dotyczace wnetrza
WIELE AUTOROW W95/98 ... ASM-a ... budowy i dzialania komputera (adresowanie
Wydaw. "WIELE pamieci, proty I/O, przerwania ... itp.) ... texty o crackingu
WYDAWNICTW" dostepne w sieci (slownik angielskiego sie przyda <-) ) ...
texty na temat Kryptografii i Virii ... Struktury plikow
wykonywalnych (EXE, COM ...) i ich naglowki (NE, PE ...) ...
metody kompresii/kodowania danych (plikow) ... rejestr W95/98 ...
kody zrodlowe virusow ... programowanie W32 (API reference) ...
HELP-y dolaczone do naszych ukochanych narzedzi ... no poprostu
wszystko co ma chocby jakis zwiazek ... nawet nie bezposredni <-)

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
KONIEC. END. FIN. TERMINO. ENDE. KONEC. UTOLSO. <-) ...

Wyszukiwarka


Podobne podstrony:
kurs crackingu [ PL ] u crack4
kurs crackingu [ PL ] Rules
Kurs Projektowania PL
WWW?D PL AutoCAD kurs dla średniozaawansowanych14
WWW?D PL AutoCAD kurs dla średniozaawansowanych12
Webcity pl Kurs PHP Continue
[PL] Kozaq M J Kurs OoBE
WWW?D PL AutoCAD kurs dla średniozaawansowanych6
WWW?D PL AutoCAD kurs dla średniozaawansowanych4
WWW?D PL AutoCAD kurs dla średniozaawansowanych8

więcej podobnych podstron