Cracking by mNICH #5

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 <bpx getdlgitemtexta> (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 (<bpx 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 <p ret> 
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) (<bpx messagebeep>) ...
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 <task> 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 <task> 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 <hwnd> 
... 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 <BMsg> !!!
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 <bd 0> 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 <-) ! ...

ucrack.zip

 Copyright © 2000 SYSTEM. Wszystkie prawa zastrzeżone.
 Kopiowanie tekstów w cało¶ci lub we fragmentach bez zgody redakcji i autorów zabronione.