Drept registru tăiat ferestre

Ne sunt introduse în interiorul sanctuarului a sistemului fără a trece prin mecanisme standard

Privind în perspectivă, observăm că acest subiect este interesant, dar există un întreg set de probleme serioase. Dar cine a spus că noi nu facem pe umăr? 🙂

Din punctul de vedere al sistemului de operare Windows, registru - aceasta este o pivniță unică. Aceste date de configurare magazine de baze de date ierarhice construite în mod unic, informațiile de înregistrare și alte prostii despre aproape totul în sistem, începând cu programul și terminând cu setările unui anumit utilizator. Registrele publice, practic, totul. În ciuda faptului că unele programe preferă să stocheze setările în .ini config (în special programele scrise pentru Win 3.11 - Ed. ..), Windows în sine toate informațiile despre sine citite din registru. În corectitudine, observăm că în sistemul de operare nix-ca * domină încă setările sistemului sunt stocate în diferite configs.

Începători - administratorii de sistem la începutul bătrânilor registru teamă că setarea greșită și setările de registry modificarea poate umple complet până sistemul cu reinstalării sale ulterioare. Și acest lucru este adevărat.

De exemplu, așa-numitele puncte de recuperare - o copie a registrului. Ele sunt utilizate pe scară largă de către utilizatori în caz de diverse probleme, cum ar fi sistemul de operare, precum și cu software-ul și hardware-ul.

Trebuie să spun că 99% din informațiile de pe Windows Registry - o descriere a tastelor principale, precum și sfaturi cu privire la modul de a lucra cu ei. Dar este de lucru cu registrul sistemului de operare? Și dacă putem emula acțiunile sale? Să ne gândim puțin.

Registrul - ambele părți puternic și slab pentru Windows. partea de registru Strong este faptul că nu este nevoie de a manipula Tuyev configs huchey pentru dezvoltatorii de software, ca, de exemplu, puse în aplicare în Knicks. Înregistrează-te și convenabil pentru creatorii COM-componente - sistemul detectează automat o componentă a registrului și a face mai ușor pentru utilizarea sa ulterioară.

Registrul de slăbiciune în care accesul la zonele sensibile ale modificării de registru vă permite să controlați orice program Windows scris unele malvarschikom nouveau. Amintiți-vă chiar și cele mai renumite ramură a registrului în Windows, care permite programul pentru a rula pe sistemul de operare de pornire :).

Cum funcționează Windows cu registru

În cazul în care registrul de Windows 98 ar putea dregeau tuturor acelora pe care a venit în cap, începând cu acces registru Windows XP Numai utilizatorii cu un cont de administrator. În Vista + acces la registru se află sub protecția UAC. Este de înțeles.

Trebuie să recunosc că, odată cu lansarea conceptului Win7 de securitate atunci când se lucrează cu registru au fost revizuite pentru mai bine. De exemplu, sub protecția este o ramură cheie a HKEY_LOCAL_MACHINE. În general, o încercare de a scrie ceva în ea va fi redirecționat către HKEY_CURRENT_USER ramură corespunzătoare pentru utilizatorul curent.

Pentru a lucra direct cu registrul Windows oferă programator un set de WinAPI, care ar trebui să fie familiare oricărui dezvoltator de sistem - este Reg * sunt funcții, cum ar fi RegOpenKey, RegQueryValue și așa mai departe. La baza Win este NtOpenKey, NtQueryValueKey și multe altele. Descrie-i nici o semnificație specială - toate documentele cu privire la utilizarea corectă a acestor caracteristici pot fi găsite pe MSDN.

Este demn de remarcat aici că. Antivirus și proaktivki pentru a monitoriza acțiunile utilizatorului capcane pe aceste funcții, atât în ​​nucleu și în yuzermode.

Odată cu lansarea Win7 x64 situația sa schimbat, și am scris deja o dată. Dezvoltatorii de Windows a decis să renunțe la posibilitatea de a intercepta caracteristici potențial periculoase în Win nucleu. Acum variabila KeServiceDescriptorTable în 64 mai exportate, și rescrie piesa corectă de cod nu va funcționa - PatchGuard nu va. Există, desigur, soluții sadomazochiste pentru a eluda aceste restricții - dar va fi mai mult decât un rahat de profit. Mai ales că Microsoft oferă ObRegisterCallbacks callback confortabile pentru a monitoriza registru.

Informații pe web despre structurile care descriu fișierele de registru de bază sunt foarte mici. Și aproape toate dintre ele în limba engleză. Cunoștințe de bază pot fi găsite aici. În plus, și cu privire la registru este scris în Biblie analist sisteme de „dispozitiv intern pentru Windows» de la camarazii lui M. Russinovich și David Solomon.

Dar ceea ce este registrul real? Dacă te uiți la dosar WINDOWSsystem32config, puteți vedea există mai multe fișiere: sistem, software, securitate, SAM, și multe altele.

Acest registru fișiere.

fișierele registry din Windows

Cu toate acestea nedrept pentru a vorbi despre registru la fel ca un fel de combinație de fișiere încărcate în memorie. O mare parte din ea conține registru este dinamic în natură, există un număr de valori calculate la momentul de pornire a sistemului, în special, acest lucru se aplică anumitor parametri de fier. De exemplu, un astfel de registru HKEY_DYN_DATA de sub ale cărui date la încărcarea sistemului de operare în memoria RAM și sunt acolo până la finalizarea sistemului de operare. Același lucru este, de altfel, se poate spune despre secțiunea HKEY_LOCAL_MACHINE cheie, care nu are un fișier corespunzător de pe disc, dar de fapt format din alte fișiere de registry, cum ar fi software-ul, de sistem și altele.

Astfel, în interiorul registru poate fi numit foarte aproximativ „fișiere virtuale registru combinație“. După pornirea sistemului, aceste fișiere sunt stocate în fișierul de paginare (piscina paginat), iar memoria nepaginate (nepaginate).

Pentru a învăța cum să lucreze cu registru direct, fără nici o cunoaștere a structurii sale interne nu poate face nimic. În general, nu Microsoft a dezvăluit secretele structurii interioare a fișierelor care alcătuiesc registru, deoarece amenință siguranța. Conform observațiilor mele, toate descrierile fișierelor de registru, și structura sa (și ele sunt, de modul în care doar un pic) - rezultatele cercetătorilor sondaje pionerov. Cel mai complet, în opinia mea, este „cercetarea“ pot fi găsite aici. apartine cuiva Peter Norris.

Nu vom intra în detalii chiar acum organizarea și structura registrului, cazul este o lungă, plictisitoare, și în domeniul de aplicare al prezentului articol nu se potrivesc exact. Este important să se înțeleagă că registru - o structură arborescentă ierarhică, uneori, de asemenea, spun că arată ca un fagure de miere.

Imediat dezamagi: poshamanit cu ușurință direct cu registru în yuzermode nu funcționează, sistemul nu va face, așa cum se întâmplă de obicei cu fișierele utilizate de un alt proces. Dacă încercați să Dodge, puteți citi doar un fișier „ocupat“, iar apoi ghici dacă steagurile, cu care a fost deschis. Din păcate, înregistrarea de interes pentru noi „fișierul registru de“ informații să nu fie eliberate. De altfel, caracteristica cu informațiile corecte înregistrate în registru poate merge, dacă scrieți în reestrovskie * bak-fișiere, acestea sunt doar disponibile pentru înregistrare.

Dar din kernel-ul nu este ceea ce să citească, dar, de asemenea, să înregistreze informațiile necesare în fișierele de registru este chiar posibil.

Deci, ceas de mână :).

Primul lucru pe care ar putea veni la cap lumina - deschide direct fișierul de registru și ceva pentru a înregistra.

În teorie, puteți face acest lucru, este nevoie, în primul rând, să fie capabil de a lucra cu un fișier „ocupat“ (caută modalități de pe web), și, în al doilea rând, după cum am spus mai sus, este necesar să se cunoască structura internă a fișierului registru. Această metodă este destul de lipsit de tact, dar, în ciuda delirante sale, este destul de viabilă, deși este dificil să pună în aplicare în practică (încercați să experimenteze cu ea pe cont propriu).

Aici am oferit două modalități de a vă ajuta să-l taie în bucăți mici de registru.

Primul mod este faptul că managerul de configurare (Configuration Manager, parte a sistemului de operare, dacă nu știu) registru nu este nimic mai mult decât un set de structuri bine definite în memoria de operare, care, după cum se pare, foarte ușor de operat. Care este structura, vă întreb? HBASE_BLOCK, HHIVE, HBIN, HCELL, HMAP_ENTRY, HMAP_DIRECTORY, ciorchine CM_ * structuri utilizate de config-manager pentru a opera un registru. Din punctul de vedere al sistemului de operare, registru - acesta este doar un set de structuri reglementate în memorie. De exemplu, semnătura „REGF“ care definește „fișierul de registru“, există o constantă care:

Și aici este semnătura «REGF» ...

Acesta este înțelesul toate acestea, monologul meu că există luxul de manipulări cu registru la nivelul sistemului de operare, dar nu folosind mijloace ei regulate. Cum este posibil acest lucru? Tocmai am semuliruem acțiune a sistemului de operare, așa cum ea este de lucru cu registru! Este important, așa cum am spus, pentru a înțelege ce registru sistem de operare pentru nu mai mult de un set de structuri corespunzătoare în memorie.

Dacă avem acces la fișierele de registru la nivel de nucleu, atunci suntem mai rău decât sistemul de operare în sine, pentru a stabili ordinea?

Și apoi pe scena pare cea mai interesantă întrebare - cum să găsească aceste aceleași modele în memorie? Este adevărat de mijloace standard de sistem pentru a rezolva această problemă nu este, deci va trebui să iasă din complicat.

Știind cum să se uite structura, trebuie să ne amintim că fiecare fișier, registru stup, are o semnătură constantă. De exemplu, «REGF» - este 0x66676572. Pentru semnarea stup va fi egal 0xBEE0BEE0. Având acces la memoria din kernel, putem găsi destul de ușor aceste semnături în memorie, doar proskaniv. O altă posibilă memorie proskanit în căutarea de semnături «CM10» - acesta este atribuit în memoria paginate unitatea de configurare-manager care este alocat CMHIVE structurii. Eu cred în a găsi elementul de memorie, suntem interesați, vă puteți imagina ce să faci cu el :).

Cum, de exemplu, modificați valoarea de registry a celulei? Valoarea este stocată în CM_KEY_VALUE-> Data, deci, dacă aveți o sarcină apare pentru a schimba orice domeniu într-un anumit registru cheie, caută valoarea a fost acolo:

Al doilea exemplu de realizare este o modificare a primului tip. Dacă știți există o caracteristică atunci când se lucrează cu registru - totul se schimbă, că este „crearea de noi chei / scriere / ștergere chei“, de regulă, produce efecte după o repornire a sistemului (sau după repornirea Explorer, acesta este un hack-metoda). Înainte de aceasta, toate modificările sunt suspendate, în cazul în care «murdare» state. Mai mult decât atât, sistemul de manipulare registru comunică cu el prin intermediul sistemului de fișiere cache. Acest lucru este de înțeles - face apel la registru poate fi de sute pe secundă, respectiv, în același timp, se bazează pe performanța sistemului de fișiere este nerezonabil, nu există nici o performanță nu va salva. Prin urmare, sistemul și lucrul cu registru, spun ei, practic, prin intermediul sistemului de fișiere cache. Și apoi, pentru a obține intestin registru în lumină, este necesar pentru a intra în cache-ul! Cum se face acest lucru a fost deja descrisă în tyrnete, inclusiv în www.xakep.ru.

Ce să spun în cele din urmă? Propus în articol cititorului o variație pe controlul direct al registrului este în întregime experimental. Nu infirm, este prea greu pentru punerea în practică, și mulți ar spune că este mai bine să utilizeze normale WinAPI-funcții pentru lucrul cu registru - și va fi în ceva bine. Cu toate acestea, de fapt, pus în aplicare die_hard Lieb, pe baza principiilor indicate în articol va avea o putere cu adevărat termonucleare eludează nici Avery, nici sistemul de operare în sine.

finisaj După care. compilare de succes și da, Forța să fie cu tine!