Jump to content

Dr4k3

Active Members
  • Posts

    427
  • Joined

  • Last visited

Everything posted by Dr4k3

  1. bah astoria si thelegend nu va mai certati (din nou, daca nu ma insel)...el a vrut sa ajute forumul prin aceste fl00dere...gestul conteaza...thelegend de ce critici pe altii cand tu de fapt ce ai facut pt forum?ai pus vreun hub flooder?
  2. si eu am tot nod si za si nu zice nik...decat cere za permisiunea
  3. deja ai facut...ma rog...si eu tocmai am facut...
  4. toate is de pe acelasi site...toate prg pe care le-ai postat...mai bine puneai un link...da e bine si asa ca nu mai tre sa intram pe siteul ala
  5. noi urlam din toate puterile sa folosim urbanfriends...dar uitam de cel care a facut posibila existenta urbanfriends si care ne-a scapat de multe patimiri cu free hostingul actual...: Spiridusu Caddy!!! Respect!
  6. si mai precis ce trebuie sa faci ca sa fi vip sau mod?
  7. bah voi abia ati venit pe forum si va certati deja???se cam incing spiritele...si nu bine...mai bine potolitiva si respectativa...ca forumul asta nu e facut ca sa va certati voi doi...
  8. stiam si yo de prg...eu am postat pentru cei care sti programare cat de cat..anyway ms ...mai bine punel si la programe-stuf tools...o sa ajute
  9. Da, Windows Passwords... Acest eseu este un supliment la eseul lui The Anonymous referitor la afisarea textului din ferestrele unde apare "***", si contine o descriere detaliata la modul de implementarea a unui astfel de program, la modul de lucru cu mesajele Windows, la modul de schimbare a proprietatilor ferestrelor (pentru incepatori) si, partea cea mai importanta, proiectul in Delphi (cu codul complet!) a programului pe care l-am facut eu in acest scop!!! Nu sunt sigur, referitor la comentariul lui The Anonymous ca Windows este departe de perfectiune, eu asi spune ca el mai are cite ceva de facut, dar in rest totul este OK, adica: BUGuri exista si "lucreaza" bine, CRASHuri se intimpla si strica multe, BSD (Blue Screen of Death) apar si nu rar, iar Windows isi continua calea pe drumul "ridicarii pretului" Ei, bine. Sa lasam asta pe seama celor de la Microsoft, iar noi sa ne ocupam putintel de "aranjarea lucrurilor" in favoarea noastra. {Pentru inceput asi dori sa lamuresc citeva notiuni si, din start, asi dori sa spun ca aceste rinduri sunt destinate incepatorilor (acelor care inca nu s-au ocupat de programare in Windows si/sau care nu stiu modul de lucru a Windows). Un alt lucru important este faptul ca eu lucrez mai mult in Delphi 3 asa ca coduri (exemple) o sa va dau anume in Delphi 3, iar standardizarile de la Microsoft vor fi prezentate in C (cu toate ca nu cred ca va reprezenta o problema traducerea lor in Delphi...).} {*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * INITIERE IN PROGRAMARE WINDOWS *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*} Pentru cei care au cunostinte mai avansate (adica au Instalat si unInstalat o data Delphi sau Visual C++... glumesc desigur) pot sa le propun sa treaca peste sectiunea de introducere, adica direct la partea mai interesanta In Windows (nu in zadar l-au numit asa, "Ferestre") totul lucreaza pe ferestre. Bine, cu totii stim ca o fereastra este "patratul" cela care apare pe monitor si care are bara de titlu, butoane de control (Close, Maximize, Minimize, Restore) si alte lucruri interesante. Insa lucrurile stau un pic altfel... Cum credeti ce este butonul Start pe care apasati de sute de ori pe zi, sau ce sunt "toate componentele vizuale a ferestrei active" (cum le numeste The Anonymous)? Toate aceste lucruri sunt fereastre!!! Da, da, anume ferestre. Adica, Microsoft, defineste orice "component vizual" ca o fereastra, iar ferestrele au proprietati, mesaje pe care le primesc. Deci, in dependenta de clasa din care face parte, fereastra devine ceea ce "vedem" noi. Spre exemplu, daca o fereastra deriva din clasa EDIT in rezultat obtinem un "chenar pentru text" (citeste TextBox), daca o fereastra deriva din clasa BUTTON in rezultat obtinem un "buton". Un alt lucru care nu trebuie scapat din vedere este asa-numitul handle. Ce reprezinta un handle? Orice fereastra are un identificator (handle) care este reprezentat printr-un numar. Folosind acest handle poate fi accesata direct fereastra dorita (in cazul in care cunoastem acest handle, care de altfel poate fi obtinut folosind functia... stati ca despre asta si este eseul, ca doar nu voi afisa toate cartile in "antet" Cam asta ar fi, in general, cind voi vorbi despre ferestre sa atrageti atentia daca ma refer la o clasa anumita sau la o fereastra "obisnuita", dintre cele cu bara de titlu, etc... Al doilea lucru interesant sunt mesajele! Modul de lucru a ferestrelor se bazeaza in mare parte pe mesaje. Ce sunt mesajele? Mesajele sunt niste informatii trimise spre ferestre (din orice clasa nu ar deriva ele) pe baza carora ele (ferestrele sau sistema) isi continua activitatea (expresia nu este chiar atragatoare, dar sunt obosit si cinta Cradle of Filth (Leaganul cu "Balegar") asa ca va rog sa nu ma bateti . Cind apasati butonul Start (care este o fereastra, nu uitati) care mesaje credeti ca le primeste el? Eh, sunt foarte multe, dar in linii generale ar fi cam asa (nu o sa folosesc definirea API pentru dinsele, ci doar denumiri conventionale, pentru a intelege esenta): MISCARE_A_CURSORULUI (foarte multe, pentru ca chiar si modificarea coordonatelor cursorului cu 1 pixel genereaza un astfel de mesaj), BUTONUL_DREPT_JOS, BUTONUL_DREPT_SUS. In dependenta de aceste mesaje programul (sistema) poate sa indeplineasca diferite operatii. Spre exemplu, primirea unui mesaj BUNTONUL_DREPT_JOS (WM_LBUTTONDOWN) actioneaza "procedura" de modificare a imaginii butonului (da, da, imaginea de "buton apasat" este modificata anume aici). Acum sa trecem la modul de trimitere a mesajelor. Orice mesaj trimis la o fereastra (indiferent, iarasi, de clasa ei) are trei componente: Identificatorul mesajului - reprezinta un nume conventional dat fiecarui mesaj. Este de tipul WM_MESSAGENAME (WindowsMessage_NumeleMesajului). Mai sunt si alte categorii de identificatori, i.e. EM_MESSAGENAME (ExtendedMessage_NumeleMesajului) etc. wParam - primul parametru (de tip Word) care contine ceva informatii folositoare pentru mesajul dat. lParam - al doilea parametru (de tip Long) care contine ceva informatii folositoare pentru mesajul dat. Nota: Citeodata wParam sau lParam nu este folosit, in dependenta de mesaj. Deci, pina acum avem inchipuire de mesaje, dar dupa cum se pare, ele sunt trimise doar de catre sistema. Corect, dar nu chiar. In Windows API (Application Programming Interface) exista o functie speciala (documentata care trimite mesaje la o fereastra. O sa va dau definirea acestei functii in WIN32 API. //Cod in C LRESULT SendMessage( HWND hwnd, // handle la fereastra destinatie UINT uMsg, // identificatorul mesajului (WM_MESSAGENAME) WPARAM wParam, // primul parametru a mesajului LPARAM lParam // al doilea parametru a mesajului ); Daca ca parametru hwnd este indicat HWND_BROADCAST atunci mesajul este trimis la toate ferestrele (inclusiv cele ascunse), dar nu la ferestrele copil (citeste Child Windows), adica mesajul va fi receptionat de "chenarele" cu bara de titlu, dar nu de catre butoane, TextBox-uri si alte dracovenii care pot exista si care pot fi numite "elemente vizuale". Pentru a intelege mai bine toate chestiile aceste, este necesar un exemplu. In primul exemplu va fi explicat cazul cind mesajul este transmis de catre Windows, iar in al doile noi vom transmite mesajul catre o fereastra. Sa presupunem ca programul nostru are nevoie de a afisa un meniu doar in cazul cind utilizatorul apasa butonul sting al mouse-ului si acest lucru trebuie sa se intimple numai daca butonul sting a fost apasat in coltul drepata-sus a butonului. Din start consideram ca coltul dreapta-sus se socot punctele cu coordonatele, unde: X + 20 <= Lungime_Buton, iar Y + 20 <= Latime_Buton. Pentru asta la primirea acestui mesaj (WM_LBUTTONDOWN) programul controleaza lParam care in cazul acestui mesaj contine coordonatele. Bitii inferiori ai lui lParam contin coordonatele X, iar bitii superiori coordonatele Y. Deci, codul in Delphi 3 ar arata cam asa: {*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * Puteti incepe copierea aici *-*-*-*-*-*-*-*-*-*-*-*-*-*-*} {Deci, Lo(TMessage_Var.lParam) reprezinta coordonatele X, iar pentru aflarea coodonatelor Y este nevoie de a chema Hi(TMessage_Var.lParam) Nota: Creatorii de la Borland au anticipat aceste chestii si, in rezultat, variabila de tip TMessage (tip folosit in functii / proceduri cu mesaje windows) are deja 4 proprietati suplimentare si anume: TMessage_Var.lParamLo - echivalent cu Lo(TMessage_Var.lParam) TMessage_Var.lParamHi - echivalent cu Hi(TMessage_Var.lParam) TMessage_Var.wParamLo - echivalent cu Lo(TMessage_Var.wParam) TMessage_Var.wParamHi - echivalent cu Hi(TMessage_Var.wParam)} if (Lo(TMessage_Var.lParam) + 20 <= Button1.Width) and (Hi(TMessage_Var.lParam) + 20 <= Button1.Height) then ShowCoolMenu; Daca avem nevoie de niste taste apasate concomitent sau alti parametri suplimentari, controlam valoarea lui wParam care in cazul de fata va contine niste chei, adica: a fost sau nu apasat CTRL in momentul transmiterii mesajului, etc... Nota: In practica proprie am intilnit multe cazuri cind trebuia de efectuat un control a unei variabile, variabila care poate fi ca suma a doua si/sau mai multe constante si am intilnit multi care aveau probleme cu acest lucru (nici eu nu am facut exceptie... la inceput . Spre exemplu: Sa presupunem ca avem variabila SR de tip TSearchRec (tip folosit la functiile FindFirst si FindNext, functii de cautare a fisierelor in Delphi). Aceasta variabila are mai multe proprietati, printre care si proprietatea Attr: Integer (care reprezinta atributele elementului gasit). Ea (Attr) este o suma a constantelor faDirectory, faArchive, faHidden etc.; in cazul in care elementul gasit este de tip DOSAR, ASCUNS si SISTEM (faDirectory, faHidden si faSysFile) - Attr va contine valoarea: faDirectory($00000010) + faHidden($00000002) + faSysFile($00000004) = $00000016 (adica 22 in limba muritorilor de rind Acum, problema: daca cunoastem ca dorim sa controlam este sau nu elementul gasit dosar, nu putem sa comparam SR.Attr>=faDirectory pentru ca SR.Attr ar putea sa fie mai mare sau egal cu faDirectory fara ca sa-l contina si anume: faSysFile($0000000b)+faHidden($00000002)>=faDirectory($00000010) dar nu-l contine!!! Deci, pentru a fi sigur de faptul ca elementul nostru este anume dosar, se foloseste un asa procedeu: if SR.Attr and faDirectory <> 0 then DoYourJob; Nota s-a primit cam mare, dar cred ca cei care aveau nevoie de ceva lamuriri in aceasta directie au primit informatia necesara. Spre ce "bat" eu acum... Mai sus (daca va amintiti) vorbeam despre controlul altor parametri suplimentari folosind wParam. Deci, in cazul in care doreati sa controlati daca la apasarea butonului drept al mouse-ului mai era apasata si tasta CTRL o sa trebuiasca sa scriti un asa cod: {*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * Puteti incepe copierea aici *-*-*-*-*-*-*-*-*-*-*-*-*-*-*} if TMessage_Var.wParam and MK_CONTROL then DoSomething; //sau combinarea a celor doua coduri prezentate... //observati ca de data asta am folosit proprietatile xxxLo si xxxHi if (TMessage_Var.lParamLo + 20 <= Button1.Width) and (TMessage_Var.lParamHi + 20 <= Button1.Height) then if TMessage_Var.wParam and MK_CONTROL then DoSomethingElse; A fost un exemplu destul de lung as spune... Foarte pe scurt o sa va dau un exemplu de trimitere a unui mesaj spre o fereastra (nu uitati, indiferent de clasa!). Pentru asta se foloseste functia SendMessage (despre care am discutat mai sus). {*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * Puteti incepe copierea aici *-*-*-*-*-*-*-*-*-*-*-*-*-*-*} Var PWText: array[1..255] of Char; begin //Trimitem un mesaj spre fereastra WHandle si anumem mesajul WM_GETTEXT // (mesaj ce va returna in PWText textul din fereastra data). SendMessage(WHandle, WM_GETTEXT, SizeOf(PWText), DWord(@PWText)); //Am folosit special acest mesaj pentru ca este unul din acele mesaje pe care le vom folosi //in elaborarea programului nostru de mai departe. end; Un moment la care asi dori sa ma opresc indeosebi, ar fi "pasarea" parametrilor catre aceasta functie. Daca examinati definirea functiei SendMessage in WIN32 API veti observa ca ultimii doi parametri (wParam si lParam) sunt de tipul WPARAM si, respectiv, LPARAM. Un alt lucru important este ca aceste doua tipuri nu sunt altceva decit niste valori intregi... adica se aseamana la ceva numere intregi (0, 1, 2... N). Din alt punct de vedere, wParam pentru mesajul WM_GETTEXT trebuie sa contina lungimea buffer-ului in care se va copia textul obtinut din fereastra. Lungime reprezinta ceva valori intregi: totul este OK. lParam are insa o alta menire pentru acest mesaj si anume: el trebuie sa reprezinte un pointer la o variabila care va contine textul copiat din fereastra. Pentru asta am folosit aceasta implementare: DWord(@PWText). {*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * SFIRSIT DE INITIERE IN PROGRAMARE WINDOWS *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*} {*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * PARTEA INTERESANTA *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*} Inapoi la partea introductiva . The Anonymous a folosit o metoda destul de buna pentru a afisa "parolele ascunse" (cind pronunt aceasta combinatie imi vine sa rid, pentru ca nu-i vorba de afisarea lor din PWL sau alte locuri "ascunse" ci doar afisarea dintr-o fereastra..., deci, pentru a afisa parolele ascunse in Windows. Intr-adevar trimitind un mesaj EM_SETPASSWORDCHAR la o fereastra derivata din clasa EDIT putem obtine rezultatul dorit. Dar cum sa facem sa ajungem la fereastra dorita (cu toate ca daca trimitem un mesaj la o fereastra, iar ea nu il intelege... pur si simplu il ignora, dupa cum a mentionat si The Anonymous)?Si chiar daca am gasit-o: ce facem cu mesajul acesta, ca doar mai are si niste parametri (wParam, lParam)? Ei bine s-o luam de la capat... Pentru inceput, gasirea ferestrelor. Pentru a gasi ferestrele active in momentul executiei programului vom folosi o functie API (iarasi si anume: //Cod in C BOOL EnumWindows( WNDENUMPROC lpEnumFunc, // adresa functiei callback LPARAM lParam // o valoare definita de programul nostru ); Primul parametru al functiei va reprezenta adresa functiei callback a programului nostru, iar al doilea parametru reprezinta ceva date de care putem avea nevoie la executia functiei noastre callback. Nota: O functie callback in API reprezinta o functie construita de programul nostru (adica de noi care are ca parametri parametrii necesari functiei originale API si returneaza un tip de date specificat de functia originala API. Cu alte cuvinte, daca avem functia API DoSomethingAPI(SOMETYPE sometp, LPARAM lParam), unde sometp reprezinta adresa unei functii, iar functia ceea trebuie sa fie de tipul BOOL CallBackSomething(PARAM_1 param1, PARAM_2 param2), inseamna ca noi trebuie sa construim o asa functie in program, de acest tip, cu acesti parametri, iar cind chemam DoSomethingAPI vom utiliza ceva de tipul: //Cod in Delphi DoSomethingAPI(@CallBackSomething, lParam); Aceasta functie enumera ferestrele toplevel (acele cu bara de titlu...) si paseaza handle-ul ferestrei la functia noastra callback. Enumerarea ferestrelor continua pina cind sunt "epuizate" toate ferestrele sau pina cind functia noastra callback returneaza valoarea FALSE. Functia callback pentru EnumWindows se defineste astfel: //Cod in C BOOL CALLBACK EnumWindowsProc( HWND hwnd, // handle-ul ferestrei gasite LPARAM lParam // o valoare definita de programul nostru ); Ei bine, aceasta functie poate sa intreprinda actiuni pe care le dorim noi si in plus mai are si handle-uri la ferestrele enumerate de EnumWindows. Cum o putem utiliza noi?! In cazul cind avem handle-urile ferestrelor toplevel putem sa cautam prin ele ferestre derivate din clasa EDIT (adica "elemente vizuale TextBox" care au proprietatea ES_PASSWORD (citeste "Extended Style Password")! Pentru asta ne vom folosi de inca una din functiile API si anume: //Cod in C BOOL EnumChildWindows( HWND hWndParent, // handle-ul ferestrei "parinte", adica a ferestrei care contine fereastra data WNDENUMPROC lpEnumFunc, // adresa functiei callback LPARAM lParam // o valoare definita de programul nostru ); Si, evident, mai avem nevoie si de o functie callback pentru aceasta functie API: //Cod in C BOOL CALLBACK EnumChildProc( HWND hwnd, // handle-ul ferestrei gasite LPARAM lParam // o valoare definita de programul nostru ); Deci, algoritmul de cautare a ferestrelor derivate din EDIT cu proprietatea ES_PASSWORD este cam asa: Enumera ferestrele toplevel Enumera ferestrele child. Controleaza daca printre ferestrele child exista ferestre cu proprietate ES_PASSWORD.
  10. ba nu nu era greseala ta...eu gresisem de la inceput ca nu pusesem parola :@ :@ :@
  11. Un micro-tutorial, pentru cei neinitiati in cracking, de SfYnX Este vorba de un program care trimite e-mailuri la mai multe adrese de odata (spamming ,indeed ), dar versiunea neinregistrata, are o limita de 3 adrese. Exista doua solutii la problema ta: 1) Se inregistreaza programul 2) Se patchuieste proramul ca sa trimita oricat de multe mesaje, chiar fiind neinregistrat. Sigur, metoda mai simpla este metoda 2. Metoda mai frumoasa si mai utila, insa, este metoda 1 (poate mai are niste nag screenuri, care dispar la inregistrare, etc). Voi incerca sa descriu pe scurt metoda de inregistrare generala, care lucreaza la 90% din programele shareware. La crackuiala unui program (inregistrarea), planul negru de actiune este urmatorul: 1. Se incearca inregistrarea cu un cod de inregistrare aiurea 2. Se gaseste functia care face inregistrarea in program: 2.1. Se gaseste punctul unde se citeste codul introdus 2.2. Se gaseste punctul in care se face compararea codului cu 3.1 Daca este codul corect, se inregistreaza programul cu codul corect 3.2 Daca este un cod generat din codul nostru introdus, se gaseste in program metoda de transformare a codului introdus 3.2.1. Se scrie o functie generala pentru efectuarea acestei transformari 3.2.2. Se extrapoleaza functia cu parametrul , pentru a gasi codul corect de inregistrare. Voila, nici 4 pasi . Ei, acesti pasi necesita ceva cunostinte si resurse: cunoasterea limbajului de asamblare si NuMega Soft-Ice instalat. Eventual si Borland Pascal sau C sau alt limbaj de nivel inalt, pentru a putea scrie functia de transformare a codului (si extrapolarea), functie care poate fi scrisa si in assembler, sau chiar in debug.exe, daca nu ai nici un compilator prin zona. Voi incerca sa descriu pe scurt pasii pe rand, straduindu-ma sa fiu cat mai inteles si lipsit de aiureli si greseli . Pasul 1: Este clar: Vom incerca sa inregistram programul cu un cod invalid. Deobicei, cand selectam 'Register', ne apare un dialog, unde introducem acest cod [si numele, adresa, etc]. Pasul 2: Pentru a gasi functia care face inregistrarea, trebuie in primul rand sa gasim unde se afla parametrii acesteia, sau codul nostru introdus (alti parametri, ca adresa, etc, nu ne intereseaza, sau ne intereseaza mai tarziu, in cazul in care acestia participa in transformarea codului nostru introdus). Dar, ca sa nu ma intind pe 100 de pagini, sa consideram ca suntem in cazul cel mai simplu, adica programul jertva va compara codul nostru introdus cu un cod pe care il are scris in el, adica ceva de genul: if cod_introdus<>cod_corect then mesaj('Dute-n dracu!') else mesaj('Thanks for paying $500 for our program'); Ceea ce trebuie sa aflam ca if-ul acesta sa fie false, este constanta cod_corect. Pentru a putea sa-l aflam, trebuie mai intai sa gasim in program punctul unde se executa acest if. Ar fi o idee grozava, daca am putea impune soft-ice-ul sa se opreasca atunci cand se face vreo operatie cu codul nostru (ca, de exemplu, acest if). Pentru aceasta, in soft-ice exista notiunea de breakpoint. Ei,aceste break-pointuri se pot pune cu o sumedenie de conditii, ca, de exemplu, executia unei functii API, citirea sau scrierea din/in vreun port, citirea/scrierea unei adrese din memorie, etc. Acum, daca am sti adresa variabilei noastre (codul) in memorie, am putea pune un breakpoint pe accesarea acestei adrese, oprindu-ne chiar la if-ul multdorit . Asfel, problema ar fi rezolvata. Cum aflam, insa adresa codului introdus ??? Iarasi, printr-un breakpoint. Si anume, vom pune un breakpoint pe functia windows de citire din dintr-un control. In cele mai multe cazuri, aceasta se realizeaza prin urmatoarele functii: GetWindowTextA GetDlgItemTextA Iar in soft-ice, pentru a ne opri atunci cand se executa aceasta functie, se utilizeaza comanda BPX (Breakpoint on execution): BPX Ei, noi nu stim care din aceste doua functii este utilizata in program, deci, vom pune breakpoint pe ambele. Dar cand? Pai, anume atunci cand am introdus codul invalid in dialogul de registrare, dar inainte de a apasa pe OK. Deci, dupa ce am scris tot ce a vrut programul in dialogul de registrare, nu apasam OK, ci apasam Ctrl-D, pentru a intra in softice. Aici vom scrie: BPX GetWindowTextA BPX GetDlgItemTextA Cu Ctrl-D iesim din softice inapoi in proramul nostru. Cand apasam pe OK, ne vom trezi in softice, la inceputul unei din aceste doua functii, sa zicem, GetWindowTextA. Ce facem mai departe? *********************************************************************** Sa facem o abatere si sa analizam aceasta functie. Declaratia ei in Win32 API este urmatoarea: int GetWindowText(int wndhandle, char *buffer, int maxstrLen); Pentru a chema aceasta functie in C, vom folosi comanda: result=GetWindowText(myWndHandle, *MyBuffer, 32); Aceasta inseamna, sa ne dea textul inscris in fereastra cu ID=myWndHandle, sa-l puna in MyBuffer si sa ia doar 32 de caractere. Dar cum se cheama aceasta functie in assembler? Parametrii pe care ii transmitem la functie intr-un limbaj de nivel inalt, se pun pe stack, care este un segment de memorie, in care se stocheaza date "una peste alta". Adresa ultimei bucatele de date aflata pe stack, se afla in registrul ESP (extended stack pointer). Cand executam comanda push, procesorul decrementeaza automat valoarea acestui registru cu marimea operandului de la push (eg, push EAX, va pune valoarea din EAX, pe stack la adresa SS:ESP, iar ESP=ESP-4, pentru ca registrul EAX este de 32 biti, deci 4 bytes). Comanda POP va incrementa registrul ESP cu marimea operandului... Bine, sa ne intoarcem la chemarea GetWindowTextA. Pentru a chema aceasta functie in assembler, va trebui sa executam urmatoarele instructiuni: Push 20 ; lungimea stringului in hexazecimal lea eax,myBuffer ; eax = adresa myBuffer Push eax ; punem adresa pe stack Push dword ptr [esi+1D1] ; punem pe stack ID-ul (sau handle-ul) ferestrei, aflat in memorie la esi+1D1h CALL USER32!GetWindowTextA ; luam textul... *********************************************************************** Pasul 2.1 Acum am inteles (sper) cum este chemata functia in assembler, sa ne intoarcem deci in softice (unde ne-am oprit), cand suntem la inceputul functiei GetWindowTextA, in USER32.DLL. Nu avem nevoie sa vedem cum se citeste valoarea acesetei functii de catre Windows, deci, ca sa ne intoarcem in programul nostru, apasand tasta F11. Acum suntem la urmatoarea instructiune dupa CALL USER32!GetWindowTextA. Sa examinam putin cu ce parametri a fost chemata aceasta functie (sa vedem ce s-a pus pe stack), vom vedea ceva de genul: Push 20 ; lungimea stringului * Lea eax, [ebp-3C] ; Eax=ebp-3c mov ecx, dword ptr [esi+2D] ;... push eax ; adresa buferului push ecx ; handle-ul... CALL USER32!GetWindowTextA ; cheama functia.. push 00000000 ; adaoga un zero pe stack...etc .... cu am marcat punctul interesant. Acum am aflat unde este buferul nostru, deci unde a fost luat textul nostru: la ebp-3C. Daca scriem comanda D EBP-3C (Display Memory at), vom vedea in fereastra de date din softice codul pe care l-am introdus. S-ar putea sa nu fie chiar codul, ar putea fi numele sau adresa pe care a mai cerut-o. In acest caz, apasam Ctrl-D pentru a ne opri la urmatoarea chemare a functiei GetWindowText, pana cand D EBP-3C=codul nostru. Pasul 2.2 Acum, pentru a vedea ce face programul cu aceasta variabila, va trebuia punem un breakpoint pe citirile/scrierile din/in aceasta adresa de memorie. In Soft-Ice, aceasta se face cu comanda BPM (Breakpoint on Memory access): BPM In cazul nostru adresa este ebp-3c, deci vom scrie: BPM (EBP-3C) Apasand Ctrl-D, ne vom opri in momentul in care se manipuleaza datele de la adresa EBP-3C, si anume la instructiunle (de exemplu): 0234C001 DEC CX INC EDI INC ESI MOV AL,Byte ptr [EDI] * ; AL=[EDI] MOV BL,Byte ptr [ESI] ; BL=[ESI] CMP AL,BL ; if AL<>BL then JNZ 0234CA4D ; goto 0234CA4D CMP CX,0 ; If CX<>0 then JNZ 0234C001 ; goto 0234C001 .... Pentru mine aceasta inseamna urmatoarea comparatie: again: CX:=CX-1 EDI:=EDI+1; ESI:=ESI+1; If var1[EDI]<>var2[ESI] then goto abort_loop If CX<>0 then goto again Pentru ca SoftIce s-a oprit la *, inseamna ca codul nostru se compara cu ceva. Ceva inseamna, de fapt codul corect. Care se afla la adresa ESI. Pasul 3.1. Deci, pentru a-l vedea, este suficient sa scriem comanda: D ESI Scriem pe-o hartiuta codul, scoatem toate breakpointurile pe care le-am pus: BC * (clear breakpoint *), iesim din SoftIce, cu Ctrl-D si mai facem o data registrarea cu acelasi nume si adresa, dar cu codul corect. Uite ca am si crackuit programul. Doar ca sa ma exprim corect: Ceea ce am descris eu aici este cazul ideal, adica metoda cea mai simpla de protectie (care, totusi, este utilizata in 80% din cazuri). Exista metode foarte complicate de protectie, dar diferenta de complexitate pentru un cracker adevarat este doar ceva timp in plus petrecut la crackuirea programului.
  12. era'>http://balcau.iad.ro/studiulparole.htm era prea mare ca sa il postez aici...
  13. http://www.balcau.iad.ro/sectcp-ip/
  14. Comunicarea este probil cea mai perfecta metoda de interactiune intre doi indivizi. Datorita comunicarii umanitatea exista ca unitate! Conceptiile, ideile individuale, devin accesibile intregului conglomerat odata trecute prin mrejele comunicarii. In esenta comunicarea reprezinta conceptul pe care se bazeaza sistemele informationale cele mai sofisticate pe care le avem astazi . Judecati si singuri : Vorba sub forma de unde acustice este emisa (vorbita) de emitator (coardele vocale) inainte de asta trecind procesul de criptare (transformata in cuvinte cu ajutorul proceselor psihice), este "transportata" cu ajutorul mediului transport (aerul) si este receptionata de celulele senzitive a apratului Corti (urechea interna), dupa care e decriptata, supusa analizaei cu elaborarea rezultaului. Incercati sa ilustrati astea grafic si veti obtine in principiu schema generala a transportului de date in cadrul unui sistem informational. Acest gind ar putea fi prelungit, dar poate il voi face in alt eseu. Scopul lucrarii de fata este de a va aduce la cunostinta sistemele de comunicare existente in retea si posibilele probleme care vor aparea in urma folosirii acestora. Pentru inceput un mic exemplu: In procesul de comunicare va loviti de doua probleme esentiale: 1) anonimitatea ---- vorba rostita poate fi receptionata de orice persoana care se gaseste prin apropiere si nu doar de cea caruia ii este adresata 2) in procesul comunicarii puteti intilni adresari comunicative cu scopul de a va intimida, forta sa executati o "functie" nedorita, etc. De ce am enuntat anume pe astea doua? Fiindca ele mai mult ca altele fac o paralela intre procesul comunicarii propriu-zis si comunicarea prin intermediul mijloacelor alternative de comunicare in retea (IRC si ICQ). Acestea in esenta reprezinta doar niste mediatori (adaptori mai bine zis) a mediului de transport a datelor, si in acelasi timp un instrument care folosit cu cap poate cauza cele doua probleme relatate mai sus. ICQ- clientul pe care probabil il au astazi marea majoritate a utilizatorilor I-netului. El este flexibil, gratuit, are o multime de functii capabile sa va reziolve toate capriciile legate de comunicarea in retea si in acelasi timp ca si oricare program nu e lipsit de "gaurele" . Ei bine odata ce vati instalat ICQ si va-ti inregistrat propriul UIN fiti gata sa va impiedicati de nuielele infipte in aceste gaurele de raufacatori (wow cum am intors-o). In fine pregatitiva sa fiti: spoof-uiti, sniff-uiti, bomb-iti, primi mesaje care va blocheaza calculatorul, primi mesaje in numele Dvs pe care nu le-ati scris niciodata (tot asa si asa si acuzati ca ati intimidat o persoana, cind de fapt in acea zi nici n-ati fost in retea) etc. etc. Pentru a va pazi de asmenea surprize (iar pentru altii din contra poate pentru a le crea) am scris acest eseu! Cuprins: 1) Ce este si la ce ne foloseste ICQ . 2) De unde vine insecuritatea ICQ 3) Flooding 4) Spoofing 5) Homepage hack 6) File transfers ICQ --- program elaborat de Mirabilis este o abreviere pentru englezul (I seek you). Si reprezinta probabil cel mai folosit client din seria Instant Messangers . Din Programele asemenatoare putem mentiona ---AIM (AOL Instant Messanger), Yahoo Instant Messanger, MSN Instant Messanger, Gooey si altele. Dupa cum se observa marii giganti s-au grabit sa creeze o alternativa pentru ICQ (ideea originala apartinind insa lui Mirabilis). Asa se intimpla in lumea asta a dominata de puterea banului ( pentru detalii citi site-ul lui Fravia sau adresativa la IRQ ) De altfel Mirabilis a vindut recent marca ICQ companiei AOL pentru 400 de milioane $ . Capacitati: Monitorizarea persoanelor alese de Dvs. si comunicarea cu ele; trimiterea/receptionarea mesajelor scurte (sau mai lungi); initerea unui chat cu una sau mai multe persoane; trimiterea/receptionarea fisierelor; trimiterea/receptionarea mesajelor audio si video; pe linga acestea versiunile mai noi pot functiona si in calitate de web-server, daily-organizer, meetings-organizer etc.etc. Clientul poate fi luat de la http://www.icq.com si este accesibil atit in varianta PC pentru windows cit si Linux precum si pentru Mac. 2). De unde vine insecuritatea ICQ ? Chiar din conceptul de lucru al clientului-- IP to IP. Poate ca ati observat ca unele persoane trimit mesajele prin intermediul serverului in timp ce altele prefera metoda directa. Si intr-un caz si in altul clientul accepta mesajele. Teoretic e posibila crearea de black-lists, in conditiile de dinamic-IP aceasta insa nu este prea comod. Poftim un exemplu concret: Ultimele versiuni au "ficea" cu IP clocking. Pentru userul neexperimentat poate pare ca clientul si-a schimbat conceptul de lucru. In realitate insa pur si simplu lucrurile s-au comlicat putin avind acum urmatoarea schema UIN-IP-IP-UIN. Cu alte cuvinte IP=ul userului se pastreaza la server si aflarea lui e putin mai dificila dar nu imposibila. Incercati programul icqsniff pentru a va convinge de aceasta. Pe de alta parte probabil e si incompetenta programistilor de la Mirabilis, dar nu mie mi-i dat sa-i critic, deoarece cunostintele mele in programare sunt prea "lichide" 3). Flooding Notiunea inseamna "impotmolirea" unei persoane anumite in tone de mesaje sau events. In anumite conditii aceast vandalism ( care de fapt este si cel mai simplu) poate crea cele mai mari neplaceri. Exista citeva metode de flooding ( eu le-am incercat pe toate ) a) Fara nici un instrument ( naturista deca vreti) ----double-click pe o persoana din lista, scrieti mesajul ,il copiati in Clipboard, send, double-click,paste, send si de aicci se preia ciclul . Dupa cum vedeti e o metoda nu prea comoda. De a va folosi de programele pe care vi le pune "mura in gura" persoanele mai experimentate ---- asa numitele flooders. Exista o multime de astfel de programe. Eu personal am incercat 3 din ele. Principiul de lucru : cele mai simple trimit mesajul pe care il introdiuceti chiar Dvs. inntr-un numar de copii pe care de asmenea il alegeti, punind un fake UIN. Altele mai avansate pentru fiecare mesaj aleg un random UIN si persoana "bombardata" se trezeste brusc cu o lista in continua crestere. ( ceva mai drastic cred ca nu exista, dupa citeva secunde veti observa cum victima dispare de pe ICQ. Exista o multime de site-uri de pe care puteti face un download la un asemena program, dar cred ca nu trebuie sa va reamintesc ca a folosi in scopuri murdare programul pe care nu l-ai facut tu, este nu pur si simplu amoral dar si josnic ( lamers must die:). Pe de alta parte am intilnit un flooder facut anume pentru asa imbecili : La prima vedere pare un flooder obisnuit (de fapt si este), insa pe linga mesajul propriu zis el mai si ataseaza IP celui care va bombeste ,iar cunoscind IP-ul unei persoane (pentru flooding e de ajuns UIN-ul) se poate face mult mai multe smecherii si asta o veti vedea mai jos. Pentru a opera un flooder, avre nevoie de un port deschis (de obicei in limitele 1024-2000. Pentru a gasi un port deschis dati drumul la un scaner ( eu am incercat portseal ), Uneori vine impreuna cu flooder-ul intr-un flacon. Securitatea: Pentru userii mai experimentati se recomanda a deschide citeva din aceste porturi (jucativa cu /etc/inetd.conf sub Linux) . Deo obicei daca sunteti atacat de un lamer dupa citeva incercari nerusite de atac asupra porturilor "momeala" el se lasa. Folositi ICQ nabber (si eu il folosesc) ----acesta din urma "asculta" toate porturile folosite de ICQ c) Daca nu aveti la indemina un flooder , va puteti folosi de cel mai elementar Mail-bomber trimitind mesaje prin ICQ Mail Experess (sa presupunem ca UIN-ul victimei e 1231234 , atunci se "bombardeaza" adresa [mail]1231234@icq.com[/mail]. Aceasta metoda insa este destul de periculoasa. Victima poate afla atiti e-mail-ul Dvs cit si IP-ul. Securitatea: Disable E-Mail Express in ICQ preferences. Exista programe care in caz ca sunteti bombardati va vor propune sa inchideti clientul ele facind un delete la toate mesajele care au reusit sa vina (bagati insa de seama sa nu fie si unul important printre ele). Astfel de programe pot fi gasite la www.warforge.com 4). Spoofing Notiunea de spoofing este absolut identica cu englezul fakeing, adica a falsifica. A intelege cum lucreaza asemena programe presupune adincirea in ICQ-protocols. Unul dintre cele mai apreciabile spoofere este Lame Toy. Folosirea unui spoofer poate fi foarte fun ( puteti face glume indraznete asupra prietenilor) si in acelasi timp destul de periculoase, precum veti vedea mai jos. In orice caz menirea primordiala a asemena programe a fost for tricks: De exemplu puteti trimite un mesaj unei persoane… de la el insusi … dindu-va drept programul de super inteligenta artificala a computerului sau (totul depinde doar de imaginatie). Sau puteti trimite un mesaj unei persoane in numele sefului spunind ca de astazi el e somer ( luati seama sa nu-l apuce boala ischemica a cordului… ca tot pe camul meu are sa vina In afara de mesaje lame-toy este capabil sa faca un spoofing si altor evenimete: file-transfer request; chat request (inchipuieti ca iti vine unul de la Claudia Shiffer); URL etc etc. Si acum partea neagra: Daca o persoana primeste un mesaj de la el isusi si el se adauga in contact list, data viitoare cind el va rula programul sau de ICQ el isi va pierde toata baza de date ( i.e. contact list). Baza de date sta intr-un director aparte (NewDB pentru ICQ99a sau DB99b pentru ICQ99b) si pastreaza in ea toate mesajele care au fost trimise/primite (history) precum si lista de contacte. Merge vorba de o gaurice pe care cei de la Mirabilis nu au avut cum sa stie ca ea va apare vreodata. Securitatea: Exista programe care fac crack reparind aceasta gaura. Am si eu una dar asa si n-am mai aplicat-o. Faceti un back-up al bazei de date. 5. Homepage Hack Incepind cu 99a, clientul are "minunata' optiune de ati organiza propriul www-server (icq homepage), insa pe cit de minunata pe atita de deocheata! ICQ webpage server care vine impreuna cu 99a #1700 si #1701 are doua greseli stupide: a) La o conectare manuala (cu telnet de exemplu ) si introducerea unor comenzi nestandarte pentru un webserver , acesta pur si simplu zboara. De exemplu pentru a lua un fisier de la adresa somewhere.com/root/dandy.jpg, faceti un telnet la acest host la portul 80 si tapati comanda "get /root/dandy.jpg". Acuma daca faceti acelasi lucru la un icq web server si tapati "get" fara nici un parametru atunci obtineti "connection lost". Versiunile mai noi de asemenea reactioneaza printr-un "connection lost" insa de data aceasta sa stiti ca serverul nu e down, pur si simplu el a intrerupt legatura. De obicei toata pagina se gaseste intr-un director de tipul 'programs/icq/homepage" , cu un mic siretlic insa in versiunea 99a #1700 si 1701 se poate naviga prin tot calculatorul. De exemplu pentru a "lua" *.pwl unei persoane ( la ce foloseste acest fisier? Cititi pagina lui Sfinx!) nu avem decit sa introducem urmatorul URL (/…./windows/trulala.pwl). Sa va explic: un puinct inseamna directoriul curent, doua puncte-un director in sus è acest URL nu inseamna altceva decit doua directoare in susàwindows àtrulala.pwl. Este foarte probabil ca veti primi urmatoarea eroare - 304 forbidden. Normal ! Severul nu te lasa sa faci download la alte fisiere decit *.jpg, *.gif, *.html. (smecherii Dar e destul de simplu sa treci peste aceasta "securitate" , tapati urmatorul URL " /…./.html/windows/trulala.pwl". Bingo! Va atentionez inca odata ca "chestia" a fost corectata in versiunile mai sus decit cele pe care le-am numit. 6). Smecherii cu ICQ file transfer. Nici nu le mai stiu numarul la fel de fel de flecutstete ( poze care mai de care incepind cu animale de casa ale ICQ-uistilor si teminind cu cele pentu care poti sa iei pina la 1 an inchisoare, programe care mai de care,….demos etc) am primit si trmis folosindu-ma de acest serviciu. Pe buna dreptate se considera cel mai util, dar totodata si cel mai periculos. Poti sa inhati un virus ! …sau sa trimiti chiar tu unul. Problema insa este cum sa-l faci pe adversar sa-l ruleze ?! Simplu! Faci un fisier de tipul " myfoto.jpg exe". Deobicei nu e sufucuent loc pentru ca ICQ sa sa tipareasca numele intreg, el apare ca "myfoto.jpg ". Fara sa fie atenta victiima ruleaza fisierul si in loc de mutra ta….BAH ! you're fucked up.
  15. Securitatea pe Internet by Mad Surgeon Securitatea în Internet devine una din cele mai actuale probleme. Rãzboiul viitorului se va baza pe lupte ale sistemelor informaþionale. Mercenarii nu vor mai fi bãieþii cu trupuri a la Shwartzneger, ci programiºti, hackeri, freackeri sau pur ºi simplu doritori de a pune la încercare noi arme (de tipul Nuke-rilor de astãzi). Aceste lupte desigur nu vor trece fãrã pierderi omeneºti ºi materiale enorme. ªi posibil va veni ziua când omul va blestema reþeaua ºi data în care a fost ea creata (printre altele Internetul a apãrut pentru prima data tot în cadrul unui proiect militar). Fiind folosit cu cap, internetul chiar ºi în zilele noastre este o arma mortala. Este bine cunoscut faptul ca marile organizaþii teroriste de acum au proiecte pentru viitorul cel mai apropiat de înfãptuire a terorului prin intermediul reþelei. De aceea fiecare om care foloseºte internetul este pur ºi simplu obligat sa cunoascã anumite reguli tehnice referitor la securitatea personala în reþea! Internetul poate sa ne ofere surpriza neplãcute de tot felul, cel mai des acestea insa sunt legate de transmisiunea datelor prin intermediul poºtei electronice ºi a surselor alternative de comunicare (ICQ, IRC etc.). Probabil ca multora din cei ce au utilizat W'95 versiunile mai vechi li s-a întâmplat sa fie nuke-uiþi, ping-uiþi etc. Acestea ºi altele fac parte din aºa-numitele mici acþiuni de huliganizm computaþional. Cuvântul "mici" în acest caz este de-a dreptul relativ... O pilda: Mai mult de doi ani în urma, când unii din provideri încã nu-ºi puteau permite modeme mai sofisticate decât 14400, un cunoscut download-uia din Internet o programa de care avea mare nevoie ºi care cântãrea vreo 30 MB. Cam pe la ultimele sute de Kb. când toþi prin casa umblau în vârfurile degetelor de frica sa nu se rupã conectarea, POC!...ºi ecranul devine albastru ca rezultat avem 29 de MB. Într-un bun de nimic "broken archive" ºi vreo 5$ pierduþi în zadar pentru timpul conexiunii. O alta latura negativa a Internetului este ca el devine o biblioteca imensa în care putem gãsi nu numai date de uz general, ci ºi informaþii foarte personale (adresa de acasã, telefonul, faxul, hobby, adresa de la oficiu etc. al oricãrei persoane) Aceasta informaþie poate fi folosita de unele organizaþii împotriva persoanei date. ªi uite aici ne ciocnim de un nou tip de antisecuritate în reþea--- inviolabilitatea personala a persoanei! Pe scurt date istorice: 1996- Cartoteca clienþilor companiei "ICA-net" este deschisa de studentul Andy Hendrata, ca rezultat 11000 de adrese ºi caracteristici ale clienþilor devin proprietatea sa personala. 1996- Revista "Covert Action Quarterly" publica oficial bazându-se pe dovezi evidente ca 12 din cele mai mari "remailer-e" din lume activeazã sub tutela CIA. 1997 -Sakura Bank oficial anunþa ca din bazele sale de date au fost furate datele personale a mai mulþi de 20000 de clienþi ºi apoi vândute unor firme comerciale. 1997 -Apare primul val de protest în vederea securitãþii persoanei în urma scurgerii de informaþie din surse computaþionale. Pentru nimeni nu este un secret ca informaþia reprezintã o marfa care se bucura de cerere (respectiv ºi oferta) nu mai rãu decât orice alta marfa materiala. De ce ºi pentru ce ar putea sa-i fie cuiva interesant datele Dvs. personale ? Aici cu siguranþa putem spune ca la prima vedere "nevinovaþii" de la firmele ce împart cataloage, CD'uri, casete gratuite, postere, lucratorii bãncilor, poºtei, agenþii companiilor de asigurare deseori primesc un bun adaos la salariu pentru vinderea informaþiei Dvs. personale. Pe WWW sunt servere întregi care se ocupa de strângerea în acest mod a informaþiei. ªi prostuþii de oameni naivi pentru un CD' sau o hârtiuþã sub forma de poster îºi vând datele lor personale acestor servicii. Doritori de a cumpãra aceasta informaþie sunt foarte mulþi. Aceºtia pot fi începând cu vecinul Dvs. ºi terminând cu serviciile secrete ale unor tari. Pe de alta parte managerii unor firme comerciale din industria alimentara ar da aproape orice ca sa afle ce aþi mâncat Dvs. astãzi la dejun! Aceasta afacere a luat aºa proporþii atingând un aºa grad de profesionalizm incit daca o firma ce se ocupa de acreditare va duce lipsa de clienþi, atunci pentru o anumita suma ea va fi asigurata cu o lista a acelor persoane care în momentul dat au nevoie de bani. Un producãtor de preparate farmaceutice nu are nevoie sa cheltuieºte sume enorme pentru recalama. Pentru o suma mai modesta lui i se poate oferi baza de date a unui spital sau policlinici ºi peste câteva zile, anume Dvs. care suferiþi de o maladie ºi nu vecinul care e sãnãtos tun, veþi primi pe posta o înºtiinþare ca firma "Farmo" produce, "absolut întâmplãtor", anume ceea ce va trebuie Dvs. Dorind sa plecaþi intr-o cãlãtorie cu maºina ºi adresându-vã intr-o firma turistica Dvs. automat deveniþi potenþialul client al unor firme ce se ocupa de asigurarea transportului. Aici poate apare întrebarea, cit costa aceasta informaþie. Dupã cum afirma unii cercetãtori mai experimentaþi nu puþin, insa în comparaþie cu gigantele acþiuni de reclama, niºte bãnuþi. Spre exemplu adresa unui om care întrebuinþeazã zilnic cafea de o anumita marca costa 10-15 cenþi. Vreo 10-15 mii de asemenea adrese sunt suficiente pentru elaborarea strategiilor de marketing, statisticii etc. Adresându-vã intr-o firma ce se ocupa cu elaborarea unor asemenea planuri puteþi cu uºurinþã afla care din marfa s-a bucurat de succes în luna trecuta, sau care este suma medie a datoriilor clienþilor unei bãnci. Teoretic aceasta poate ºi nu-i aºa de rãu. Este absolut inofensiv poate chiar util sa primeºti reclama anume a acelor mãrfuri de care ai nevoie. De cele mai dese ori oamenii lãsând pe Web "urme", care la prima vedere par atât de mici ºi inofensive nici nu-ºi dau seama ca anume ele ºi reprezintã acele picaturi care cu uºurinþã adunate pot da tabloul întreg al vieþii Dvs. ªi daca firma "X" va dori sa strângã informaþii despre Dvs. ºi Dvs. sunteþi un utilizator al Internetului fiþi absolut sigur ca nume de aici vi se vor trage toate pãcatele. Având la dispoziþie un echipament minim de informaþie în cel mai scurt timp despre Dvs. se poate afla absolut (!) totul. ªi atunci sa nu va miraþi daca intr-o buna zi veþi fi arestat, ºantajat, atras în anumite structuri criminale, bãtut pentru anumite pãcate de care dupã cum credeaþi ºtiau doar un cerc restrâns de oameni, expulzat din tara, învinovãþit de crime pe care nu le-aþi comis etc. etc. Iatã câteva sfaturi: 1) Multe programe, sisteme de operare, au anchete care vi se oferã pentru a fi completate, pentru înregistrare. Încercaþi sã evitaþi maximum posibil oferirea de informaþie. Nu completaþi câmpurile din ancheta care sunt opþionale. Folosiþi patch-uri, crack-uri pentru înregistrarea soft-ului. 2)Niciodatã nu oferiþi nimãnui în reþea informaþie despre sine (chiar ºi cea mai neînsemnata). 3) Nu va înregistraþi la toate serverele unde vi se propune, chiar daca vi se promite ceva foarte ademenitor. Þineþi minte: Pe gratis caºcavalul sta numai în capcana. 4)Þineþi minte ca foarte multe servere fixeazã URL-urile de la care aþi venit, la fel ºi multe browsere. Daca folosiþi Netscape încercaþi "about:global" pentru a va convinge. 5)Daca ieºiþi în Internet prin LAN, folosiþi protocolul Netbeui. 6) Nu folosiþi parole cu cuvinte care sunt chiar ºi în cel mai mic dicþionar. Ideala este o adunãtura de litere! 7) Daca scrieþi undeva E-Mailul Dvs. încercaþi o ºmecherie simpla dar foarte efectiva împotriva programelor automate de colectare a adreselor: În loc de [mail]asd@email.com[/mail] scrieþi asd#email.com b)Folosiþi mãcar cele mai primitive metode de criptare (codare) a mesajelor. 9) Dezactivaþi folosirea în browser a "Java", "cookies", "Active X" Þineþi minte ca cu ajutorul unui foarte simplu program scris în Java se pot fixa nu numai miºcãrile Dvs. în reþea, dar ºi protocola tot ce se introduce de la claviatura. 10) ªi esenþialul: Niciodatã nu folosiþi date adevãrate acolo unde aceasta se poate evita (mai cu seama în ICQ, IRC ). Fiþi cit mai conspirativ.
  16. Unde pastreaza Windows-ul informatia despre rata de refresh a monitoruluii, aferenta fiecarui regim grafic ? Iata un trick pentru cei carora le clipeste ecranul, iar Windows-ul nu le da posibilitatea de-a schimba rata de reresh (asa cum mi s-a intimplat mie, de curind) . (Ca regula - o rata de refresh mai mare inseamna o clipire mai putin observabila a ecranului, prin urmare o obosire mai mica a ochilor.) Uitati-va atent la monitorul vostru - clipeste? Apoi uitativa la Display/Properties din Control Panel ( sau cu right click pe desktop). Daca acolo nu e nici o posibilitate de a schimba rata de refresh, atunci s-ar putea sa va fie de folos ceea ce am scris aici. Iata solutia unui hacker, care nu se lasa condus de nazurile lui Windows. HKEY_LOCAL_MACHINESystemCurrentControlSetServicesClassDisplay
  17. Procese in Windows O aplicatie bazata pe Win32 consta din unul sau mai multe procese. Un proces, in cei mai simpli termeni, este un program executat. Modul oferit de Windows 9x pentru a avea control asupra aplicatiilor active este boxa de dialog "Close program" iar de Windows NT este "Task Manager". Citind acest eseu veti afla metodele de a evita aparitia programului in aceasta lista, si, din alta parte, o sa invatati cum sa scrieti un program ce va da controlul asupra proceselor in sistem. Enumarare procese Terminare procese Ascundere procese Links Enumarare procese Sa incepem de la urma, invatind modul de a enumera procesele. Pentru aceasta sint folosite functiile Tool Help ce se gasesc in kernel. Inainte de a incepe parcurgerea, trebuie facut un snapshot al sistemului. Aceasta este o necesitate datorita naturei multitasking a lui Windows. Un snapshot este o copie read-only a starii unui sau mai multor obiecte din memoria sistemului: procese, threads, module si heaps. Procesele ce folosesc functiile Tool Help citesc listele din snapshot in locul accesarii directe a listelor sistemului de operare (SO). Listele obiectelor din memoria SO se schimba cind procese, threaduri, module, heaps sint create sau distruse, cind aplicatii sint executate sau terminate. Folosirea informatiei din snapshot previne aparitia inconsistentelor. Altfel, aceste schimbari in timpul enumararii elementelor ar putea duce la traversarea incorecta a listei sau sa cauzeze access violation. HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, DWORD th32ProcessID ); In parametrul dwFlags specificam ce elemente trebuie sa fie incluse in snapshot. In cazul dat ne intereseaza numai procesele, deci transmitem TH32CS_SNAPPROCESS. Parametrul th32ProcessID este identificatorul de proces si este folosit in cazul cind este nevoie de a include elemente specifice unui proces. Ca rezultat, functia intoarce un handle la snapshotul creat, pe care putem sa il folosim in functiile de enumarare. Acest handle trebuie sa fie inchis cu CloseHandle dupa ce nu mai este nevoie de el. typedef struct tagPROCESSENTRY32 { DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; DWORD th32DefaultHeapID; DWORD th32ModuleID; DWORD cntThreads; DWORD th32ParentProcessID; LONG pcPriClassBase; DWORD dwFlags; char szExeFile[MAX_PATH]; } PROCESSENTRY32; typedef PROCESSENTRY32 * PPROCESSENTRY32; typedef PROCESSENTRY32 * LPPROCESSENTRY32; In functiile urmatoare va fi folosita structura PROCESSENTRY32, in care va fi introdusa informatia despre proces. Inainte de a transmite structura la functie, trebuie initializat membrul dwSize cu sizeof(PROCESSENTRY32). BOOL WINAPI Process32First( HANDLE hSnapshot, LPPROCESSENTRY32 lppe ); Deci, hSnapshot este handle la snapshot, lppe este un pointer la o structura PROCESSENTRY32. Functia intoarce TRUE, daca datele despre primul proces au fost copiate in buffer, sau FALSE in caz contrar. Eroarea ERROR_NO_MORE_FILES este intoarsa de GetLastError daca nu exista nici un proces sau snapshotul nu contine informatie despre procese. BOOL WINAPI Process32Next( HANDLE hSnapshot, LPPROCESSENTRY32 lppe ); Parametrii si valorile intoarse au aceeasi semnificatie ca si in cazul precedent. Chemam in ciclu aceasta functie, pina cind lista nu se va epuiza (va intoarce FALSE). Nota Referitor la functiile Tool Help: Windows NT: Requires version 5.0 or later. Windows: Requires Windows 95 or later. Windows CE: Unsupported. Header: Declared in tlhelp32.h. Import Library: Use kernel32.lib. Referitor la WinNT: In versiunile WinNT mai mici decit 5, informatia despre procesele active se pastreaza in registru la HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionperflib. Terminare procese Identificatorul procesului identifica unic procesul in sistem. Dar pentru a accesa procesul din programul nostru e nevoie de obtinut un handle la el. Pentru aceasta vom folosi functia OpenProcess. HANDLE OpenProcess( DWORD dwDesiredAccess, // access flag BOOL bInheritHandle, // handle inheritance flag DWORD dwProcessId // process identifier ); Handle-ul la proces trebuie sa aiba acces PROCESS_TERMINATE la el, ceea ce si indicam in dwDesiredAccess. BOOL TerminateProcess( HANDLE hProcess, // handle to the process UINT uExitCode // exit code for the process ); TerminateProcess este folosit pentru terminarea neconditionata a procesului. Se recomanda de a fi folosita numai in cazul cind alte metode nu au efect. Toate threadurile din proces sint terminate, dar librariile DLL atasate la proces nu sint notificate de detasare. Terminarea presupune urmatoarele: Toate handles deschise de proces sint inchise; Toate threadurile din proces termina executia; Starea obiectului proces si a obiectelor threads devine semnalata, ceea ce satisface toate threadurile ce asteptau inchiderea lor; Statusul procesului se schimba de la STILL_ACTIVE la codul de iesire a procesului. Terminarea unui proces nu cauzeaza terminarea child-proceselor. Terminarea unui proces nu neaparat elimina obiectul procesului din sistem. Un obiect proces este eliminat atunci cind ultimul handle ce indica la el a fost inchis. Ascundere procese Cel mai simplu de a exclude aparitia aplicatiei in lista dialogului "Close program" (aceasta nu include ascunderea procesului) este de a chema functia RegisterServiceProcess. DWORD RegisterServiceProcess( DWORD dwProcessId, DWORD dwType ); Daca dwType este 1 atunci ea va inregistra procesul indicat de dwProcessId (daca este NULL, se va subintelege procesul curent) ca un Service Process. Aceste procese nu sint inchise in faza de logoff. Nota Metoda recomandata de a executa functia RegisterServiceProcess este prin adresa procedurei. Ea se obtine in felul urmator: hKrnl = GetModuleHandle("kernel32.dll") hProc = GetProcAddress(hKrnl, "RegisterServiceProcess") Astfel, va fi evitata problema rularii sub WinNT, unde functia data nu este exportata de kernel (Thanks to Sfynx). BO2K Doua moduri interesante sint implementate in BO2K pentru a ascunde procesele in Win9x/WinNT. In cazul cind este rulat sub Win9x: Se inregistreaza ca un Service Process; Schimba protectia tabelului de export al kernel32.dll cu ajutorul functiei nedocumentate VxDCall si o face accesibila pentru modificare; Aloca memorie shared cu permisiuni RWX (Read/Write/Execute) si copie acolo functiile sale analoage celor din Tool Help; Memoreaza adresele functiilor reale; Si in sfirsit, modifica adresele de intrare a functiilor Tool Help cu adresele functiilor sale. Deci, cind un program va incerca sa enumere procesele active, de fapt vor fi chemate functiile lui BO2K, care la rindul sau cheama functiile reale, si controleaza sa nu fie intoarsa informatie despre procesul BO2K. La iesire, BO2K nu uita sa restabileze adresele originale, ceea ce este un lucru important. In cazul cind este rulat sub WinNT: Gaseste un alt proces pentru "incubatie"; Primeste la el un handle cu PROCESS_ALL_ACCESS; Aloca spatiu in procesul-victima pentru a injecta codul sau in el; Creaza un thread in procesul-victima cu ajutorul la CreateRemoteThread ce va executa codul injectat. Dupa cum va dati seama, nu va mai ramine nici o urma a procesului BO2K. Daca va intereseaza sursa pentru o studiere mai detailata, o puteti gasi aici - process_hop.cpp. Sursa completa si executabilul le puteti obtine la http://www.bo2k.com/.
  18. De la ce pornim: - Avem un program cu un termen de evaluare care dupa ce termenul de evaluare a trecut nu mai lucreaza sau lucreaza limitat. Sa presupunem ca termenul de evaluare a trecut si programul nu ne lasa sa-l folosim linistiti. Ce trebuie sa incercam? A.Sa schimbam data de sistem inapoi astfel ca ea sa cada in termenul de evaluare. Daca programul merge sa automatizam acest proces. Daca nu, trecem la punctul B. Puteti folosi utilitarul scris de mine denumit Smart Launch. Folositi un shortcut cu urmatoarea linie de comanda pentru a lansa programul: SLAUNCH.EXE /d23.2.99 /r c:progsmailbomb.exe /t5 /d /d23.2.99 -schimba data de sistem la o data la care programul merege, si salvaeza data reala. /r /r c:progsmailbomb.exe -lanseaza programul nostru /t5 -asteapta vreo 5 secunde ca programul sa se incarce. /d - (fara nici un parametru) restabileste data reala. Daca programul la start afiseaza un nag screen, pentru a scapa de el, puteti folosi comanda /k , care simuleaza apasarea unor taste. Detalii in documentatie. Puteti face rost de SLAUNCH pe pagina MOLDHACK. B.Daca programul nu se lasa prostit cu schimbarea datei, incercati sa reinstalati soft-ul. Daca nici aceasta metoda nu merge, sau reinstalare periodica a soft-ului nu va convine treceti la punctul C C.Aceasta si este metoda proprie zisa "medicina naturista" penru Registry. Ceva asemantor a folosit SfYnX la crackuirea lui Vpage, vezi tutorial-ul de pe Moldhack. Dar metoda de acolo nu este sistematizata, si eu pot doar sa spun ca intuitia lui SfYnX a fost geniala:). Iata si metoda sistematizata, care lasa putine sanse programului de a scapa. Sa ne gindim..... Cind instalam pentru prima data programul pe calculatorul nostru, el merge normal. De ce n-ar vrea sa mearga acum, dupa ce a expirat termenul de evaluare si chiar dupa ce noi am dezinstalat si instalat din nou programul ? Raspunsul e simplu ... chiar si dupa dezinstalare el lasa anumite urme pe hard-ul vostru, adica fie in Registry, fie intr-un fisier. Cel mai des in Registry. Scopul nostru este sa gasim aceste urme si sa le inlaturam. Inlaturarea se poate face automat prin scrierea unui program in orice limbaj de programare, sau manual. Iata o metoda de detectare a acestor urme. Pentru a monitoriza schimbarile facute in Registry aveti nevoie de un program de backup a registry-ului(zis si snapshot)/ si de comparare a acestor snapshot-uri. Puteti folosi orice. Cred ca mai la indemana va fi Registry Tracker din pachetul Norton Utilities. Sau puteti folosi programul Install Watch, sau orice alt program cu functii asemanatoare. Daca sitemul vostru este deja infectat cu aceste urme, va va fi greu sa le detectati. Mergeti la un prieten (puteti apela la membrii grupului Moldhack, asa cum am apelat eu la SfYnX in cazul Vpage ) pe calculatorul caruia acest program n-a fost instalat niciodata. Deci iata cum facem: 1.Luati un snapshot(A) la registry inainte de instalare. 2.Instalati programul/ Lansati programul/ Iesiti din program. 3.Schimbati data inainte astfel ca sa treceti de data de evaluare /Lansati programul /Iesti din program. 4.Dezinstalati soft-ul. 5.Luati un nou snapshot(. 6.Comparati snapshot-ul(A) cu (. Diferenta va fi acele urme pe care programul le lasa pentru a vedea ca soft-ul a fost pe calculatorul dumneavoastra. Ele pot consta in adaugarea sau modificarea unor chei din registry. 7.Inlaturati urmele suspecte manual. Testati daca programul merge. Scrieti un soft de inlaturare automata.
  19. Disassmebler/debuger'>http://share.urbanfriends.us/savefile_php/uploads/01958491ad.zip Disassmebler/debuger pe 16/32 biti v8.7
  20. Vreau sa sa va bucur: toate TOOL-urile de care aveti nevoie pentru a face primii pasi in crackuirea programelor exista la sigur pe Web în varianta warez, adica crackuite si gata de start. Cum le gasesti? Simplu, mergi la Altavista si dai un search....Atît. Urmariti linkurile de jos pentru detalii asupra produselor. -------------------------------------------------------------------------------- Automate4 (Unisyn Software - recorder si inerpretator de macros-uri la nivel de SO - pentru primele jmekerii Soft ICE (Numega) - un puternic debuger - pentru crackuieli adevãrate WDasm - un sourser si un debuger pentru aplicatii 16/32 biti Win-eXpose-Registry si Win-eXpose-I/O 2 programe care va permit sa monitorizati programul la operatiile de citire/scriere în Registry, respectiv în fisiere TechFacts 95 - un bun monitor pentru sistemul de operare HEdit - daca ati ajuns la procesul final, adica daca aveti nevoie sa modificati codul programului pe care-l crack-uiti, exista sute de programe de tipul asta si este o problema de gust pe care-l folositi. (citeste articolul de mai jos semnat de iRQ9 pentru a vedea la ce-ti folosesc) -------------------------------------------------------------------------------- "De ce i-a trebuit lui mos Ion SoftIce-ul?" de iRQ9 Ei bine, va veti întreba de ce aveti nevoie pentru a începe sa crack-uiti programe chiar acum. Înainte de aceasta puneti-va întrebarea daca în general aveti nevoie de vreun tool special pentru aceast scop. Cele mai stupide protectii pot fi ocolite fara nici o interventie în codul programului. Personal prefer aceasta metoda, adica "medicina naturista" . Bineînteles, daca aceasta nu da rezultate, mai mult ca sigur ca programul va ajunge pe "masa de operatii" ... si atunci începe adevarata distractie... Probabil ca ati întîlnit macar o data în viata un program care da posibilitatea de a fi evaluat sa zicem timp de 30 zile. Si probabil ati întîlnit destule dintre ele care pot fi trase pe sfoara printr-o simpla schimbare a datei de sistem. Exemple sunt nenumarate... Sa zicem ca ati încercat deja sa "automatizati" acest proces, adica nu umblati singuri sa schimbati data înainte si înapoi, ci ati descoperit asa unelte cum ar fi Automate4 de la Unisyn Software, sau oricare alt program capabil de a executa macros-uri la nivelul sistemului de operare. Eu mi-am scris chiar singur un program în Vbasic , care se numea Smart Launch(zip, 8kB), si care primea în linia de comanda anumiti parametri care-i permiteau sa schimbe data de sistem, sa lanseze programul, iar apoi s-o schimbe frumos înapoi... O multime de programe au fost prostite în acest fel...Ma gîndesc acum ca producatorii sau au fost stupizi de-a binelea sau au prevazut acest lucru... adica s-au gîndit ei ca...fructul interzis e mai dulce.. dar sa fim atenti sa nu-l facem prea inaccesibil... Toate bune si frumoase pîna la acest moment... pîna nu dai de programe ca WinHacker95 sau VisualPage de la Symatec-un bun editor pentru pagini web. Da, ele într-adevar folosesc o protectie mai deosebita... Adica nu pot fi prostite atît de simplu. Am încercat astfel metoda clasica, vorba poetului "sa dau timpul înapoi...", VisualPage m-a detectat imediat si, desi eram abia la ziua a 14-a din 30 în termenul de evaluare, mi-a interzis folosirea programului în continuare. Bineînteles prima idee care mi-a venit a fost sa reinstalez programul. VisulaPage însa nu m-a uitat..., adica, padla, si-a lasat amprenta pe HARDUL MEU!!, nu conteaza ca doar de putini bytes ... conteaza ca a lasat.. Si eu am fost stupid destul, sa nu monotorizez procesul de instalare... Adica sa nu vad si eu ca omul ce dracarii mai scrie programul asta prin fisiere, prin Registry si care din ele le lasa dupa dezinstalare... Ei bine ce ma fac în acest caz? Solutia simpla - mergi la un prieten si instaleaza pe calculatorul lui (virgin din punctul de vedere al lui VisulaPage ), numai ca de data asta foloseste un program care monitorizeaza instalarea (TechFacts95,de exemplu) vezi care fisiere, sau înregistrari din registry au fost adaugate modificate de VisulaPage, vezi care din ele au ramas dupa dezinstalarea programului. Distrugele. Atât. Dupa 30 de zile problema va reaparea ...Repeta procedura , acum stii ce sa faci... Aceste artificii nu sunt însa crack-uiala adevarata, asa considera multi crackeri de vaza... Cum sa scapati de protectie definitiv, cum sa faceti ca programul sa poata fi utilizat vesnic si de cei mai putin instruiti..Urmariti site-ul nostru penru afla. P.S. Si totusi pentru ce i-a trebuit lui mos Ion Soft-Ice-ul ? Probabil ca el nici nu i-a trebuit nicicind - era prea ocupat cu taiatul porcului, ca sa mai apese din cind in cind si Ctrl-D. ALL CREDITS GO TO iRQ9
  21. cu metoda bruteforce( da nu aia de care vb Anonim :@ ) teoretic se poate sparge orice parola...da daca e unu mai incurcata ...nu cred ca are nimeni timp si chef sa astapte 2 luni pana formeaza toate variantele...
  22. Ok am sa prezint un mic tutorial despre cum sa crack-uiesti AVX2000 Chiar m-au dezamagit baietzii astia de la Softwin cand am vazut ce protectzie de rahat au pus la program. La faza serial number i-a facut GeCad-u' (sper sa citeasca si cineva de la Softwin tutorialu' asta asa sa se indrepte in ultimul ceas). Pasu I - Scaparea de nag-screen-ul ala f@#$%. Intrii in directorul Plugins din directorul programului (Ex C:Program FilesAvx2000Plugins). Redenumesti fisierul optical.dll in optical.xxx (sau ce extensie itzi da prin minte la momentul respectiv). Asta e tot. Potzi sa zici ca ai cumparat programul. Pasul II - Scaparea de jegul ala de prezentare de la inceput (Tip of The Day sau reclama pe barba utilizatorului) Avem nevoie de W32Dasm. Dupa ce dezasmablezi programu' cautzi cu String Reference stringu': Htmlavxaboutp.htm . Te duci la el. O sa apara: * Possible StringData Ref from Data Obj ->"Htmlavxaboutp.htm" | :00401A88 6854624A00 push 004A6254 :00401A8D 8D4C2408 lea ecx, dword ptr [esp+08] :00401A91 E8FAA40400 call 0044BF90 :00401A96 8D442404 lea eax, dword ptr [esp+04] :00401A9A 8D4C2408 lea ecx, dword ptr [esp+08] :00401A9E F7D8 neg eax :00401AA0 1BC0 sbb eax, eax :00401AA2 6A00 push 00000000 :00401AA4 23C1 and eax, ecx :00401AA6 6A00 push 00000000 :00401AA8 6A00 push 00000000 :00401AAA 6A00 push 00000000 Nimic important. Ne ducem putin mai sus si gasim: * Referenced by a CALL at Address: |:0040191A | :00401A30 6AFF push FFFFFFFF :00401A32 68D8174800 push 004817D8 :00401A37 64A100000000 mov eax, dword ptr fs:[00000000] :00401A3D 50 push eax :00401A3E 64892500000000 mov dword ptr fs:[00000000], esp :00401A45 83EC08 sub esp, 00000008 :00401A48 56 push esi Hmm. Procedura de afisare a html-ului este chemata de la adresa 0040191A. Ne ducem aici. :0040191A E811010000 call 00401A30 :0040191F 6A01 push 00000001 Vedem ofsetul la call 00401A30 si modificam in hex E811010000 cu 9090909090. PS. Pasul I merge la orice AVX 2000 (am incercat la 2 versiuni) Pasul II merge la sigur cu AntiVirus eXpert v2000 Desktop build 12. Pentru alt build se vor modifica adresele(offseturile)
  23. O (foarte)scurta descriere a VPAGE. VPAGE este un editor HTML. Este destul de cool, se pot face multe chestiute interesante in el, in fine, dar nu asta conteaza. Pe noi ne intereseaza metoda de protectie pe care o foloseste. Dupa 30 de zile dupa prima pornire, programul nu va mai lucra. Metoda de protectie: Scrierea in Windows Registry a 2 chei secrete, in care se tin informatiile despre data curenta si data instalarii programului. Unelte utilizate: WinExpose Registry - varianta Shareware, crackuiala in lectia urmatoare Volcov Commander sau Norton Commander Regedit poate fi gasit in directorul Windows de pe sistemul tau. -------------------------------------------------------------------------------- BackGround: Cand instalam si pornim programul prima data, ne apare o fereastra, care tipa: "This version will expirein 30 days" cu 2 butonase injositoare: Oksi Buy. Peste 30 de zile va apare o ferestruica: "This version has expired" cu alte doua butonase injositoare: Bye si Buy. Bine, pentru a nu astepta 30 de zile pana cand expira, am procedat (logic) foarte simplu: am schimbat data sistemuluicu 31 de zile inainte. Ok, acum incepe partea interesanta: Ne apare un mesaj, care spune ca am incercat sa pacalimprogramul si programul este 'disabled' (in adevar nu este disabled - vom vedea mai tarziu). Bine, am zis eu, haisa pornesc Soft-Ice - ul si sa incerc sa - i scot bataia asta de joc. Insa, peste putin timp de crackuiala si patchuialaam inteles ca ar trebui gasita alta metoda (problema era ca mi se bloca de fiecare data cand il patchuiam si nuprea aveam timp sa ma frec cu el). Asa ca l-am deinstalat si am uitat de el pentru putin timp. Cand am gasit ceva timp liber si l-am instalat la loc, mi-a aparut acelasi mesaj stupid: Versiunea este expirata...Cum, pisici, de unde stie? Este clar. A lasat o urma dupa deinstalare pe harddisk.Aceasta urma poate fi lasata in doua locuri: intr-un fisier in vre-un director, sau in Windows Registry. Pentrua putea gasi ce anume a lasat nenorocitul pe harddisk, am apelat la programul WinExpose Registry (metoda de crackuialacu SoftIce a caruia va aparea in timpul cel mai scurt). WinExpose Registry este un tool foarte bun pentru un cracker care incearca sa vada ce se intampla in sistem (ce chei a registry-ului se acceseaza, ce fisiere se deschid, ce date se citesc samd). Apropos, daca nu ai habar ce inseamna Registry, citesteaici. WinExpose Registry este cool, desigur, dar este incomplet: nu are functie directa de salvarea log- fisierului. Ei, dar aceasta nu este o problema. Va explic putin mai jos, cum salvam intr-un fisier tot cese intampla. Cu WinExpose Registry am facut trei fisiere log: 1. La instalarea VPAGE pe un calculator (pe care nu a mai fost instalat) 2. La pornirea VPAGE-ului prima data. 3. La pornirea VPAGE-ului cu data schimbata. Am gasit cheile care se creaza la prima pornire, am vazut ce scrie si ce citeste si am aflat metoda de verificare. Totul bine si frumos, programul lucreaza si nu mai am probleme,dar Cum am facut aceste lucruri. Ei bine, hai sa incepem, pas cu pas. Pasul 0: Niste configurari: Intra in Volcov Commander (VC)si creaza urmatoarele directoare: C:VP_CRKINSTALL - aici vom salva fisierul log creat la instalarea VPAGE. C:VP_CRKRUN_OK - fisierul log creat la prima pornire. C:VP_CRKRUN_BAD - fisierul log creat la pornirea cu data din sistem schimbata. C:VP_CRKRUN_OA - fisierul log creat la pornirea cu data restaurata Pasul 1: Inceputul: Porneste WinExpose Registry (WE).Te va intreba, 'Do you want to create a New Trace file?', apasa pe Yes. Astfel vom incepe sa inregistram toate accesarile la registry care se intampla in sistem. Pasul 2: Instalarea: Fara a inchide WE, porneste programul de instalare VisualPage si instaleaza VPage pe sistemul tau. Dupa ce s-a terminat instalarea, schimba-te in WE (Alt-Tab) si oprestetrace-ul (meniul View/Suspend Trace, sau apasa pe palma roza:). Intra in VC si copiaza din directoriul WE (ar trebuisa fie C:Program FilesWinExpose Registry) fisierul trace~1.wxr (trace.wxr95) in directorul C:VP_CRKINSTALL. Pasul 3: Pornirea: Porneste WE si creaza un nou fisier de trace. Fara a inchideWE, porneste programul VPAGE instalat. Cand apare fereastra cu mesajul 'This version will expire...' schimba-tein WE si opreste trace-ul. Apasa OK si iesi din VPAGE. Copiaza fisierul trace.wxr95 in directorul C:VP_CRKRUN_OK.Astfel vom avea logul a tot ce s-a intamplat in registry cand programul a pornit normal. Pasul 4: Incercarea: Schimba data de sistem cu 31 de zile in viitor. In WEcreaza un fisier de trace nou. Fara a inchide WE porneste VPAGE. Iti apare un mesaj care iti spune ca perioadade evaluare a expirat. Schimba-te in WE si opreste traceul. Copiaza trace.wxr95 in C:VP_CRKRUN_BAD. Apasa Bye.Acum schimba data de sistem inapoi. Repeta pasul 4 cu data normala si ai sa vezi ca in log de mesajul de expirareiti va apare un mesaj, care spune ca ai incercat sa 'overcome the time-limitation of this version' sau o tampeniede genul asta. Copiaza fisierul trace.wxr95 in C:VP_CRKRUN_OA. Pasul 5: Analiza: Hai sa vedem ce am facut pana acum. Raspuns: Pana acumam creat niste fisiere idioate log pe care le-am copiat in diferite directorii. Nu chiar. Acum avem toate accesarileVPAGE la registry. Problema noastra este sa gasim in ce cheie se scrie data sau ceva de genul acesta. Daca acumam incerca sa reinstalam VPAGE, vom vedea ca mesajul de eroare nu dispare... Daca ne uitam in directorul VP_CRKINSTALL vom vedea ca el creaza mai multe chei (treci peste accesarile luiExplorer la registry de la inceputul fisierului, pana ajungi la lucrarile lui_ins0432 (programul de instalare)). Vom vedea ca _ins0432 a creat mai multe chei, dintre care cea mai importanta este LOCALSoftwareSymantecVisual Page - ce interesant! In general, procedura de creare a unei chei este: Citeste ceva din cheia XXX.Daca cheia nu a fost gasita ---> Creaza cheia XXX (functia CreateKey) Deci, pentru a gasi cheile noi create, va trebui sa cautam functia CreateKey.Ignoreaza toate cheile create in legatura cu setarile internet, sistemului, ODBC samd. Pe noi ne intereseaza sagasim ceva FOARTE straniu. Aceasta inseamna o denumire de cheie de genul 'FirstDate' (in cazul ideal) sau o denumirede cheie FOARTE stranie de genul '{126de-2132f-0000-90000...}. Deci... Hai sa vedem ce avem acolo: Pornim regedit (startRun...regedit.exe) si intram pe cheia HKEY_LOCAL_MACHINESoftwareSymantecVisualPage. Vedem: 2.0 si Application. Intrand pe Application vedem ceva interesant: Registered 0x0000. Insa, daca incercam sa-i schimbam valoarea si pornim VPAGE nu se intampla nimic. Mai cautant prin fisierul lognu mai gasim nimic interesant, decat niste setari a proprietatilor programului samd. Hai atunci sa vedem ce face VPAGE la prima pornire. Deschidem fisierul din C:VP_CRKRUN_OK. La inceput sunt nisteaccesari neinteresante ale Explorer... hai sa mergem la capatul fisierului (ce a facut cu registry inainte sa nearate mesajul de expirare). Urcand putin in sus gasim niste inregistrari foarte interesante: ----------------------------------------------------------------------- Vpage Opens the specified registry key [Not Found ] [[OpenKey ]] ROOTCLSID{136C3F90-F0F4-11d1-BD45-00C04F93168B} ----------------------------------------------------------------------- Vpage Creates/Opens the specified registry key [[CreateKey ]] ROOTCLSID{136C3F90-F0F4-11d1-BD45-00C04F93168B} Result HKEY= 0xC11BDE30----------------------------------------------------------------------- Vpage Opens the specified registry key [Not Found ] [[OpenKey ]] ROOTCLSID{136C3F90-F0F4-11d1-BD45-00C04F93168B}MiscStatus ----------------------------------------------------------------------- Vpage Creates/Opens the specified registry key [[CreateKey ]] ROOTCLSID{136C3F90-F0F4-11d1-BD45-00C04F93168B}MiscStatus Result HKEY= 0xCAFF1C44 ----------------------------------------------------------------------- Vpage Closes a previously opened key [[CloseKey ]] 0xC11BDE30 ----------------------------------------------------------------------- Interesant... Ce inseamna ROOTCLSID{136C3F90-F0F4-11d1-BD45-00C04F93168B}MiscStatus? Hai sa vedem mai departe: ----------------------------------------------------------------------- Vpage Opens the specified registry key [Not Found ] [[OpenKey ]] ROOTCLSID{B0DB41E0-F0F4-11d1-BD45-00C04F93168B} ************* Alta cheie interesanta ----------------------------------------------------------------------- Vpage Creates/Opens the specified registry key [[CreateKey ]] ROOTCLSID{B0DB41E0-F0F4-11d1-BD45-00C04F93168B} Result HKEY= 0xC11BDE30 ----------------------------------------------------------------------- Vpage Opens the specified registry key [Not Found ] [[OpenKey ]] ROOTCLSID{B0DB41E0-F0F4-11d1-BD45-00C04F93168B}MiscStatus ************** Acelasi dubios MiscStatus... ----------------------------------------------------------------------- Vpage Creates/Opens the specified registry key [[CreateKey ]] ROOTCLSID{B0DB41E0-F0F4-11d1-BD45-00C04F93168B}MiscStatus Result HKEY= 0xC11D2ED4 ----------------------------------------------------------------------- Vpage Closes a previously opened key [[CloseKey ]] 0xC11BDE30 ----------------------------------------------------------------------- Vpage Sets the value and name for a Key [[setValueEx ]] ROOTCLSID{136C3F90-F0F4-11d1-BD45-00C04F93168B}MiscStatus Value: "938723249" ************** Scrie valoarea 938723249 ----------------------------------------------------------------------- Vpage Sets the value and name for a Key [[setValueEx ]] ROOTCLSID{B0DB41E0-F0F4-11d1-BD45-00C04F93168B}MiscStatus ************** Scrie valoarea 938723250 Value: "938723250" ----------------------------------------------------------------------- Vpage Closes a previously opened key [[CloseKey ]] ROOTCLSID{136C3F90-F0F4-11d1-BD45-00C04F93168B}MiscStatus ----------------------------------------------------------------------- Vpage Closes a previously opened key [[CloseKey ]] ROOTCLSID{B0DB41E0-F0F4-11d1-BD45-00C04F93168B}MiscStatus ----------------------------------------------------------------------- Vpage Retrieves the value for a key [Not Found ] [[QueryValEx ]] 0xC11D345CD:VPAGEVPage.ini ----------------------------------------------------------------------- Hmm... Hai sa vedem ce se intampla cu aceste chei cand am executat programul cu data schimbata. Deschidem fisierulC:VP_CRKRUN_BAD. Cautam stringul: '{136C3F90' Gasim imediat urmatoarea poveste: Vpage Retrieves the value for a key [[QueryValEx ]] ROOTCLSID{136C3F90-F0F4-11d1-BD45-00C04F93168B}MiscStatus Value: "938723249" ----------------------------------------------------------------------- Vpage Retrieves the value for a key [[QueryValEx ]] ROOTCLSID{B0DB41E0-F0F4-11d1-BD45-00C04F93168B}MiscStatus Value: "938725459" ----------------------------------------------------------------------- Interesant: Valoarea in B0DB41E0... s-a schimbat, pe cand cea din 136C3F90 este aceeasi... Aceste doua chei sunt prea interesante. Hai sa vedem in registry ce se intampla cu ele (cu regedit!)... Pornindprogramul de fiecare data, vom vedea ca valoare din B0DB41E0 se modifica (cu unu), iar acea din 136C3F90 este aceeasi.Interesant. Hai sa vedem ce se intampla cu aceste doua chei dupa dezinstalarea programului. Normal ar trebui caun program sa-si stearga toate cheile din registry. Daca aceste doua chei ar fi indiciul pentru VPAGE ca a maifost instalat pe sistem, inseamna ca problema este ca si rezolvata. Pasul 6: Apropierea: Dezinstaleaza VPAGE-ul. Porneste Regedit (daca nu il aipornit) si incearca sa gasesti aceste doua chei acolo. Ca sa vezi: Cheile sunt acolo!!! Hai sa le stergem frumusel...ReinstalamVPAGE... Executam... Si.. MERGE! Nu mai spune ca am incercat sa-l pacalim ci ne spune ca mai avem 30 dezile pana la expirare. Pasul 7: Finalizarea: Bine, dar totusi cum o facem sa nu expire? Ok. Schimbadata sistemului cu 2 zile inainte. Porneste VPAGE. Intra in regedit si examineaza cheia {B0DB41E0...}. Ai observatschimbarea. Schimba data sistemului inapoi. Porneste Vpage. Iti va spune ca ai incercat sa-l pacalesti. Acum ***momentul crucial*** Scrie in cheia {136C3F90...} valoarea din {B0Db41E0...} minus 1. Candvei porni programul iti va spune ca mai ai 30 de zile pana la expirare. BINGO! Am gasit solutia. Deci pentru a evita expirarea, totul ce trebuie sa facem este sa scriem(cand VPAGE a expirat) in prima cheie valoarea cheii a doua minus 1. Si gata. Se poate scrie si un program careface chestia asta automat, dar hei, go ahead!
  24. http://balcau.iad.ro/Tips%20&%20Tricks%20pentru%20Outlook%20Express.htm
  25. yahoo'>http://share.urbanfriends.us/savefile_php/uploads/385779009d.rar yahoo b00ter of course...5000 bot login...si o optiune mijto...TOTAL ANYHILATION!!!
×
×
  • Create New...