Număr Windows de conexiuni rdp concurente. Remedierea defectelor RDP cu biblioteca RDP Wrapper

Terminal Server Windows 7 / Vista / XP (sp1 / sp2 / sp3) este o soluție reală. Terminal Server pentru a vă conecta la desktopul la distanță Windows 7 / Vista / XP (sp1 / sp2 / sp3) mai mulți utilizatori în același timp.

Terminal Server poate fi folosit pentru a rula o aplicație cu calculatoare la distanță sau la dumneavoastră server terminal pe Windows 7 / XP / Vista / diferite computere vechi precum 486 și Pentium 1 pot fi conectate în același timp, vor funcționa ca și cum ar fi instalat un sistem de operare Windows Vista / 7 / XP cu Office XP-2003-2007, 1Cși o grămadă de programe de birou diferite.

Mod implicit Windows 7 / Vista / XP nu acceptă activitatea mai multor utilizatori în același timp. Pentru a permite mai multor utilizatori să lucreze simultan la PDR, trebuie să înlocuiți fișierul C: \ Windows \ System32 \ termsrv.dll și să faceți modificări în registru - pentru a elimina restricția impusă Windows XP / 7 / Vista.

Înainte de a face modificări la Windows 7 / Vista / XP, asigurați-vă că acțiunile dvs. nu contravin legilor țării dvs. și acordului de licență, deci depinde de dvs. să utilizați sau nu metoda.

Cum se face un server terminal din Windows XP / 7 / Vista?

1. Creați mai mulți utilizatori cu drepturi de administrator sau de utilizator obișnuit, asigurați-vă că setați o parolă.

Asigurați-vă că este activată opțiunea - Comutarea rapidă între utilizatori (Panou de control -> Conturi utilizatori -> Schimbare autentificare utilizator)

2. Permiteți conexiunea la distanță - selectați „Computerul meu” făcând clic dreapta și deschideți „Proprietăți”. În fereastra care apare, accesați fila „Sesiuni la distanță”. Confirmați elementul „Permiteți accesul la distanță la acest computer” cu o bifă. Selectați utilizatori la distanță (altfel Desktop la distanță va funcționa numai pentru administratori) și faceți clic pe „OK”

3. Asigurați-vă că funcția Conexiune desktop la distanță funcționează pentru un singur utilizator.

Realizarea unui Windows Terminal Server XP / 7 / Vista

4. Descărcați un patch universal pentru crearea unui server terminal:
-
Windows XP sp2 sp3;
- Windows Vista sp1 sp2;
- Windows 7, 32 biți (x86) / 64 biți (x64).

5. Executați fișierul UniversalTermsrvPatch - *. Exe care corespunde bitității sistemului dvs. și apăsați Plasture pentru a înlocui fișierul cu un C: \ Windows \ System32 \ termsrv.dll

6. Executați fișierul * .reg care corespunde sistemului dvs. de operare pentru a face modificări în registru

7. Reporniți sistemul de operare

8. Porniți -> Rulați -> gpedit.msc

Pentru Windows 7

Configurare computer -> Șabloane administrative -> Componente Windows-> Servicii desktop la distanță -> Gazdă sesiune desktop la distanță -> Conexiuni ->

Pentru Windows XP

Configurare computer -> Șabloane administrative -> Componente Windows -> Terminal Server -> Limitați numărul de conexiuni

Setați „Enabled” și modificați valoarea numărului de terminale permise.

9. Reporniți computerul

Dacă ai făcut totul corect, atunci server terminal Windows 7 / Vista / XP (sp1 / sp2 / sp3) gata. Ar trebui să lucrezi acum desktop la distanță pentru mai mulți utilizatori în același timp.

Setări suplimentare ale serverului terminal Windows XP

1. După cum arată practica, utilizatorii serverului terminal sunt pur și simplu deconectați, iar programele continuă să funcționeze. Puteți seta ora pentru deconectarea unei sesiuni inactive

Start -> Run -> gpedit.msc
Configurare computer -> Șabloane administrative -> Componente Windows -> Terminal Server -> Sesiuni -> Setați limita de timp pentru sesiunile deconectate

Includeți și specificați ora

Există și alte restricții, puteți alege cum doriți

2. Lansarea unui program pentru toți utilizatorii la distanță ai serverului terminal, fără desktop

Start -> Run -> gpedit.msc
Configurare computer -> Șabloane administrative -> Componente Windows -> Terminal Server -> Executați programul când sunteți conectat

Aprinde
\ Bkc.RemoteClient.exe

Specificați folderul de lucru
C: \ Program Files \ Bankomz "language \ Viddaleniy kliєnt spasterezhennya

3. Lansarea unui program pentru utilizatorii selectați ai terminalului server, fără desktop(atenție, funcționează chiar dacă vă autentificați local, deci nici măcar nu știu cum să îl anulați mai târziu, cu excepția ștergerii utilizatorului și apoi crearea unuia nou sau folosirea disc de boot liveCD, (prin programul ERD-commander) cu alegerea de a încărca registrul sistemului de operare de care avem nevoie.

Start -> Run -> regedit

Creați un parametru șir Shell și specificați calea completă către fișierul de program în câmpul „Valoare”

4. Lansarea unui program independent de către utilizatorul terminalului server, fără un desktop

Mai întâi, executați elementul 2 pentru toți utilizatorii , reîncarcă și apoi returnează valoarea așa cum a fost (Nu este setată)

În setările clientului Windows (Remote Desktop Connection) de la care ne conectăm, în Setări din fila Programe, bifați caseta „Când vă conectați, rulați următorul program”

Specificați calea completă către program și numele fișierului

Specificați folderul de lucru
C: \ Program Files \ Bankomz "language \ Viddaleniy kliєnt spasterezhennya

5. Lansarea programului când vă conectați la desktop

Adăugați o comandă rapidă în folderul de pornire
C: \ Documente și setări \ nume de utilizator \ Meniu principal \ Programe \ Startup \

În Windows 8 / 8.1, cum ar fi Versiuni anterioare Sistem de operare client Microsoft, acceptat numai o conexiune RDP de intrare simultană... Aceasta înseamnă că prin Computer Windows 8, un singur utilizator (o sesiune), local sau la distanță, se poate conecta prin intermediul unui desktop la distanță la un moment dat. În majoritatea cazurilor, acest lucru este suficient, dar uneori aș dori să pot lucra simultan mai mulți utilizatori simultan în propriile sesiuni. Un exemplu bun poate exista un computer în rolul Media Center, atunci când videoclipul este redat în sesiunea consolei și, în același timp, este necesar să lucrați de la distanță cu sistemul, fără a întrerupe videoclipul de pe televizor.

Sfat. Accesul RDP la distanță nu funcționează în edițiile Home ale Windows, edițiile Pro sau Enterprise sunt necesare.

Când încercați să deschideți o a doua sesiune RDP pe un computer cu Windows 8, apare un mesaj care spune că un alt utilizator este deja conectat la sistem și sesiunea sa poate fi terminată.

Sfat... Anterior, în proprietățile computerului din fila Remote, trebuie să adăugați conturile de utilizator necesare la grupul local de utilizatori Remote Desktop. Administratori locali rdp la distanță accesul este permis în mod implicit. După activarea accesului RDP în proprietățile sistemului, Paravan de protecție Windows pornește automat regulile care permit trafic de intrare la portul 3389. Uneori această regulă trebuie verificată manual.

Deci, de exemplu, în camera serverului Versiuni Windows sunt acceptate două conexiuni administrative simultane cu sesiuni individuale (în cazul organizării bazate pe Windows Server terminal server RDS, acest număr poate fi și mai mare).

Cu toate acestea, pe Internet, puteți găsi un patch special care vă permite să ocoliți această limitare. Datorită acestui patch, mai mulți utilizatori se vor putea conecta simultan prin RDP la un computer Windows 8 / Windows 8.1.

Important... Utilizarea acestui patch este, de fapt, o încălcare acord de licențiereși condițiile de utilizare pentru produsele Microsoft. Prin urmare, efectuați toate operațiunile descrise mai jos pe propriul risc.

Deci, patch-ul implică înlocuirea fișierului de sistem original % SystemRoot% \ System32 \ termsrv.dll(bibliotecă utilizată de Remote Desktop Services).

  • Windows 8 - termsrv.dll-win8.zip
  • Windows 8.1 - termsrv.dll-win8.1.zip

Înainte de a înlocui biblioteca de sistem, creați de rezervă fișier termsrv.dll cu comanda:

Copiați c: \ Windows \ System32 \ termsrv.dll termsrv.dll_old

Acum, dacă ceva nu merge bine, puteți reveni oricând la configurația inițială înlocuind fișierul curent cu termenii originali rv.dll_old.

Descărcați arhiva cu biblioteca pentru versiunea dvs. de Windows.

În Windows 8, trebuie mai întâi să schimbați valoarea următoarelor chei din cheia de registry HKLM \ System \ CurrentControlSet \ Control \ Terminal Server \:

  • fDenyTSConnections(DWORD) - 0 (cheia permite pe computer)
  • fSingleSessionPerUser(DWORD) - 0

Aceeași operație poate fi efectuată din linia de comandă:

REG ADD "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server" / v fDenyTSConnections / t REG_DWORD / d 0 / f REG ADD "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server" / v fSingleSessionPerUser / t REG_DWORD / d 0 / f

Apoi accesați directorul C: \ Windows \ System32, găsiți fișierul termsrv.dllși deschideți proprietățile sale.

În mod implicit, proprietarul acestui fișier este Instalare de încredereși chiar administratorul nu are drepturi să-l înlocuiască.

Să mergem la fila Securitateși apăsați butonul Editați | ×... În lista de acces, găsiți grupul de administratori locali și acordați-i drepturi complete asupra fișierului ( Control total) și salvați modificările.

Următorul pas înainte de a înlocui fișierul bibliotecii, deschideți Consola de administrare a serviciilor ( services.msc) și opriți serviciul Servicii desktop la distanță.

Copiați fișierul termsrv.dll din arhiva descărcată pentru versiunea dvs. Windows în director % SystemRoot% \ System32 \(cu înlocuire).

Notă... Arhivați pentru Windows 8.1 conține două fișiere 32_termsrv.dllși 64_termsrv.dll, pentru versiunile pe 32 de biți și respectiv pe 64 de biți de Windows 8.1. Despachetați arhiva și redenumiți fișierul pentru versiunea dvs. de sistem în termsrv.dll

După înlocuirea fișierului, porniți serviciul Remote Desktop Services și încercați să creați două sesiuni RDP cu aparatul corecționat sub conturi diferite. Dacă ați făcut totul corect, ar trebui să se deschidă două sesiuni independente de desktop la distanță.

Sfat... Este posibil să trebuiască să reporniți computerul.

Important! Utilizarea versiunii corectate a termsrv.dll are mai multe dezavantaje. Principalul este că la instalarea următoarei actualizări de Windows 8.1 / 8, acest fișier poate fi înlocuit. În consecință, va trebui să remediați singur un fișier nou utilizând un editor HEX sau să căutați pe internet un fișier modificat gata pentru versiunea dvs. Windows.

Ca soluție rezistentă la înlocuirea fișierului termsrv.dll în timpul instalării Actualizări Windows, ar trebui să utilizați o soluție open source Biblioteca RDP Wrapper(disponibil pe GitHub), care nu guvernează termsrv.dll și este un strat între Terminal Services și SCM. Puteți citi mai multe despre utilizarea RDP Wrapper Library.

Windows XP Professional și Windows XP Media Center Edition (MCE) au un serviciu de conectare desktop la distanță (RDP), care vă permite să conectați de la distanță un computer, să accesați și să controlați de pe alt computer sau gazdă. Cu toate acestea, mașinile care rulează un sistem de operare Windows XP permite simultan conexiune desktop la distanță un singur utilizator care a fost conectat la acesta, fără sesiuni multiple conexiuni desktop la distanță sau linkuri de asistență.

Ori de câte ori un utilizator la distanță se conectează printr-un client la desktop la distanță (RDC) pentru a vă conecta la gazdă Windows XP, utilizator local se deconectează cu blocare consolă sau fără permisiunea acestuia. Desktop la distanță spre deosebire de Serviciile Terminal Server din Windows Server 2003 și Server 2008, este conceput pentru o singură utilizare de către utilizator, indiferent dacă este un utilizator local sau la distanță.

Aici hack pentru a debloca o limită care permite mai multe sesiuni simultane de conexiune la birou la distanță în Windows XP Professional și Media Center Edition utilizând fie patcherv term.dll, fie vechea versiune 5.1.2600.2055, astfel încât un număr nelimitat de utilizatori să poată simultan conectați-vă la computer utilizând desktopul la distanță.

  1. Descărcați o copie a patch-ului care va elimina restricțiile conexiune la distanță pe desktopul dezactivat pentru versiunea dvs. de Windows XP:

Windows XP SP3: termsrv.dll (versiunea 5.1.2600.5512)

Pentru informații, patch-ul termsvv.dll are de obicei următorii biți de coduri HEX, care sunt suprascrise în următoarele valori:

00022A17: 74 75
00022A69: 7F 90
00022A6A: 16 90

  1. Reporniți computerul și încărcați informațiile în modul sigur făcând clic pe F8în timpul pornirii și selectați modul sigur ... Acest pas este necesar numai dacă vă aflați în acest moment utilizând Windows Terminal Services sau servicii desktop la distanță, protecție Sistemul de fișiere trebuie omis, altfel veți primi următorul mesaj de eroare pentru a restabili termenii originali rv.dll.

3. Accesați % WINDIR% System32și faceți o copie de rezervă (sau redenumiți) termsrv.dll .

4. Redenumiți sau ștergeți termserv.dllîn dosar % WINDIR% System32 Dllcache.

5. Copiați fișierul descărcat termsrv.dllîn % WINDIR% System32 , % WINDIR% ServicePackFiles i386(dacă există) și % WINDIR% System32 Dllcache .

6. Apoi descărcați și rulați pentru a îmbina valorile registry în registru sau puteți porni manual editorul de registry și puteți adăuga următoarele setări de registry:



"EnableConcurrentSessions" = DWORD: 00000001


"AllowMultipleTSSessions" = DWORD: 00000001

7. Faceți clic pe buton start -> A executași introduceți comanda gpedit.msc, faceți clic pe introduce pentru a deschide Editorul de politici de grup.

8. Accesați Configurare computer -> Șabloane administrative -> Componente Windows -> Servicii terminale .

9. Includeți limitați numărul de conexiuniși setați numărul de conexiuni la 3 (sau mai mult). Configurarea permite utilizarea mai multor computere în același timp.

10. Asigurați-vă că Remote Desktop este activat în fila Remote System Properties, selectând butonul radio Permiteți utilizatorilor să se conecteze la acest computer de la distanță .

11. Porniți comutare rapidă de utilizatorîn Panouri de control -> conturi de utilizator -> Schimbați conectarea sau închiderea utilizatorului .

12. Reporniți computerul în mod normal.

Rețineți, dacă nu puteți înlocui sau rescrie fișierul termserv.dll - accesul este refuzat sau eroarea fișierului, dezactivați „Terminați serviciile” în secțiunea „Servicii” a panoului de control „Instrumente administrative”. În plus, fiecare conexiune fizică conectată trebuie să aibă propriul cont de utilizator pe computerul țintă și trebuie să fie autentificată cu propriile acreditări de nume de utilizator și parolă.

Pentru a dezinstala și a reveni la termsrv.dll original, pur și simplu ștergeți versiunea revizuită și redenumiți copia de rezervă înapoi la „termsrv.dll”. Dacă Terminal Services este în funcțiune, trebuie să o faceți în modul sigur.

Dacă un computer cu Windows XP conectat la un domeniu din rețea locală, Windows va seta valoarea RegKey „AllowMultipleTSSessions” la „0” de fiecare dată când computerul nu este repornit. Pentru ca sesiunile de desktop la distanță multiple sau nelimitate să fie permise într-un mediu de domeniu AD, valoarea datelor pentru „AllowMultipleTSSessions” trebuie setată la „1” la fiecare pornire a sistemului. Pentru a schimba valoarea, reporniți ts_multiple_sessions.bat de fiecare dată când computerul pornește. De asemenea, pune ts_multiple_sessions.batîn C: Documente și setări Toți utilizatorii Meniul principal Programe Startup foldere astfel încât să ruleze automat pe primul utilizator cu drepturi de administrator. O altă soluție este instalarea serviciu suplimentar sau definirea unei chei într-o ramură de registru SOFTWARE HKEY_LOCAL_MACHINE Microsoft Windows Versiune curentă Run prin care fișierul batch funcționează automat la pornire și acest lucru este util dacă computerul nu va fi înregistrat de nimeni, dar are totuși nevoie de un lucrător care să permită conexiuni nelimitate de desktop la distanță.

Este diferit dacă utilizatorul se închide conexiune la distanțăîn loc să vă deconectați când el sau ea încearcă să se conecteze din nou, primiți un cod de eroare 4226 asociat cu un eveniment TCP / IP. Pentru a rezolva această problemă, descărcați și instalați Windows XP TCP / IP, limitând conexiunea și patch-ul ID eveniment 4226 și stabiliți o conexiune de cel puțin 50.

Acest ansamblu este construit pe imaginea originală a versiunii rusești Microsoft Windows XP Professional SP3, cu toate actualizările! Disc multi-boot. DESCĂRCARE GRATUITĂ -


Ca și în versiunile anterioare ale clientului sisteme de operare Utilizatorii Microsoft, Windows 10 Pro și Enterprise se pot conecta de la distanță la computerele lor prin Remote Desktop Service (RDP). Cu toate acestea, există o limitare a numărului de sesiuni RDP simultane - doar un singur utilizator la distanță poate lucra simultan. Când încerci să deschizi o secundă Sesiune RDP, sesiunea primului utilizator este solicitată să se încheie.

De fapt, limitarea numărului de conexiuni rdp simultane nu este tehnică, ci mai degrabă licențiată, ceea ce interzice crearea pe baza stație de lucru Server RDP pentru mai mulți utilizatori.

Sfat... În edițiile de acasă ale Windows 10, conexiunile desktop de la distanță primite sunt complet interzise, ​​care, totuși, pot fi înfrânte folosind Biblioteca RDP Wrapper .

Vom analiza două moduri de a dezactiva limita numărului de conexiuni RDP simultane la Windows 10:

    Biblioteca RDP Wrapper

    O alternativă la modificarea fișierului termsrv.dll este utilizarea proiectului Biblioteca RDP Wrapper... Acest program funcționează ca un strat intermediar între SCM-Service Control Manager și Terminal Services și vă permite să activați nu numai suportul pentru mai multe sesiuni simultane RDP, ci și să activați suportul RDP Host pe edițiile de pornire ale Windows 10. RDP Wrapper nu aduce modificări în fișierul termsrv.dll, pur și simplu încărcând termsrv cu parametrii modificați.

    Astfel, această soluție va funcționa chiar și atunci când versiunea de fișier termsrv.dll este actualizată, ceea ce vă permite să nu vă fie frică de actualizările Windows.

    Puteți descărca RDP Wrapper din depozitul GitHub: https://github.com/binarymaster/rdpwrap/releases (cea mai recentă versiune disponibilă a RDP Wrapper Library v1.6)

    Sfat... Apropo, este disponibil codul sursă al Bibliotecii Wrapper RDP, care vă permite să creați singur fișierele executabile, dacă doriți.

    Arhiva RDPWrap-v1.6.zip conține mai multe fișiere:

    • RDPWinst.exe - Programul de instalare / dezinstalare Biblioteca RDP Wrapper
    • RDPConf.exe - utilitar de configurare RDP Wrapper
    • RDPCheck.exe - Local RDP Checker - utilitar de verificare RDP
    • install.bat, uninstall.bat, update.bat - fișiere batch pentru a instala, dezinstala și actualiza RDP Wrapper

    Pentru a instala utilitarul, rulați fișierul install.bat cu drepturi de administrator.

    După finalizarea instalării, rulați RDPConfig.exe... Și asigurați-vă că în secțiune Diagnostic toate elementele sunt colorate în verde.

    Încercăm să deschidem oa doua sesiune RDP. Totul a funcționat! Acum, Windows 10 permite doi utilizatori la distanță să se conecteze simultan prin RDP.

    Pentru a corela versiuni noi (dacă logica secțiunii corespunzătoare a codului nu s-a modificat semnificativ), trebuie să faceți următoarele:

    0. Instrucțiunea este potrivită pentru specialiști mai mult sau mai puțin educați și, cel mai important, specialiști inteligenți care știu să gândească. Cei care sunt obișnuiți să „copieze” totul prin Copy / Paste, se pare, nu vor face față și vor păstra „gemete” și „lamentări” despre „multe litere”, „dificil” sau „nIASIL” din cauza mai multor frici și stereotipuri ale gândind mai degrabă decât complexitatea problemei. Acesta este lotul lor. Născut pentru a se târî, după cum știți, nu poate zbura. Nu te lăsa să te usuci, Anon! Beți Jada sau faceți MUNCA și începeți să vă respectați!

    1. Descărcați orice - plătit sau versiune gratuită Hiew
    Chiar și versiunile foarte vechi ale anilor 90 sunt potrivite, dar dacă aveți nevoie de patch-uri x64, atunci aveți nevoie de 8.x (începând cu mijlocul anilor 2000 :)) Mai bine, desigur, să luați una nouă. Autorul dezvoltă produsul de 25 de ani și există puține alte creații perfecte ale abilității unui programator.

    2. Luați termsrv.dll pentru o anumită versiune acceptată - versiunea originală și corecție. Dacă nu este patch-uri, este rezonabil să presupunem că trebuie să-l patch-uri cu patch-ul existent, nu fi prost! Începeți să vă gândiți! Tot fișierele necesare puneți într-un folder sau foldere separate. Nu încercați să editați nimic pe o singură copie în system32. Cu toate acestea, NIMIC NU SE VA ÎNCHEI (intrarea este blocată în system32) și numai berbecii fac acest lucru.

    3. Comparați versiunile patch-uri și non-patch-uri ale aceluiași DLL cu orice comparator binar. Kitul Windows include utilitarul consolei FC. Comanda „FC / b termsrv.org termsrv.crk> difference.txt” duce la profit. Lista diferențelor, și este mică acolo, aproximativ 20 de linii, va fi trimisă la fișierul Differences.txt
    Deschiderea fișierului editor de textși, fie îl lăsăm deschis, fie îl rescriem pe o bucată de hârtie din care și cu ce compensare s-au schimbat octeții. Imediat aprofundăm și înțelegem că toate compensările și valorile octeților, ca mai jos în Hiew, sunt specificate în sistem hexazecimal, dar acest lucru nu ar trebui să „sperie” pe nimeni, deoarece nimic nu va fi necesar nici măcar pentru a converti în zecimal! (Dacă aveți nevoie brusc de acesta, pentru dezvoltarea generală - un calculator Windows pentru a vă ajuta.)

    În listă, vedem (identificăm) 3 blocuri condiționate, unde adresele merg la rând. Primul bloc este de 2 octeți chiar la începutul exe, la compensări 140-s-ceva-h (dll are același format ca exe, singura diferență este că conține doar proceduri și funcții pentru un apel extern - așa exporturi, prin urmare, nu va fi posibil să îl executați direct prin redenumirea acestuia în exe). Acestea sunt datele când offsetul merge la antetul fișierului exe. Aceste compensări se stochează verifica suma cod-date (fără antet), pe care Windows îl verifică înainte de a începe, asigurându-vă că fișierul nu a fost deteriorat și că ceva nu se va prăbuși, respectiv, atunci când încercați să-l executați. Ne vom întoarce la ele mai târziu.
    Acesta este urmat de un bloc de modificări de aproximativ 10 octeți. Este exact ceea ce vom studia. După aceasta, mai există încă un bloc de modificări - cei 6 octeți cei mai recenți ai exe-shnik. Concluzia este că, în loc de „zerouri”, autorul și-a condus faimosul nume „deepxw” în spațiul gol de la sfârșit. Închinându-se în fața lui pentru patch-uri și idei, dar nu există niciun motiv pentru noi să-i repetăm ​​„desfătările” atunci când transferăm patch-ul, prin urmare, oricine nu are nimic de făcut în serile lungi de iarnă o poate face singur ca parte a studiului „Conducerea literelor obișnuite în spațiile goale ale fișierelor exe folosind Hiew”. Cu toate acestea, puteți lua acest lucru ca un omagiu adus autorului (doar „acolo” nimeni nu citește).

    3. Deschideți dll originalîntr-o fereastră Hiew, patch-uri în cealaltă (rulați 2 copii ale Hiew! În general, este mult mai convenabil să utilizați Far - două dispozitive, ca manager de fișiere și baza pentru lansarea „acestor dvs.” Hiews). În ambele, apăsați F4 (Mod) și selectați Decodare (F3). Vom vedea bucata demontată a fișierului de la bun început. Nu este nimic de urmărit, deoarece Hiew „încearcă” să dezasambleze antetul Fișier EXE, și acestea sunt date, nu cod. Nu este nevoie să te uiți acolo, el îți arată că este complet normal, pentru că aici trebuie să GÂNDEȘTI, nu să „copiezi”! Încă o dată, ne reunim și începem să gândim, nu este nevoie să încercăm prost și să urmăm literalmente instrucțiunile ...

    4. În ambele Hiews (la rândul lor, la naiba, gândiți-vă ...) apăsați F5 (Mergeți) și vedeți că un câmp de intrare a apărut în partea de sus. Acolo conducem în adresa primei diferențe (din AL DOILEA BLOC!) Găsit în fișierul diferenței. DE EXEMPLU, în Win7SP1x86Rus acestea sunt adrese în jurul valorii de 19100h, iar în VistaSP2Eng (x86 sau x64 - xs), așa cum am văzut în blogul autorului, acestea sunt adrese în jur de 65200h. Ajungem la locul primului octet corectat.

    Datele din această fereastră Hiew arată ca:
    - În prima coloană - decalaj hexagonal - de la începutul fișierului sau în memoria procesului - depinde de modul Hiew, selectat de Alt-F1 (Global-Local). Afișează Local = ca în memorie în mod implicit dacă Hiew reușește să descopere formatul codului de date. În cazul nostru, aceasta nu este o problemă, deoarece formatul de fișier exe îi permite să „descopere” cu ușurință. Prin urmare, nu este nevoie să vă speriați să vedeți 06F2F8D51 în locul celor introduse în 19153. Adresarea memoriei este importantă pentru a înțelege adresarea procesului, modul în care va arăta execuția sau pentru a analiza codul, dacă este necesar.
    - A doua coloană conține reprezentarea hexazecimală a codului de date cu analizarea codului și a datelor care se referă la instrucțiuni. Prin urmare, fiecare linie are o lungime diferită. Afișat ca atare numai pentru confortul dvs. „De fapt” (C) în fișierul în sine, toate sunt „cusute” împreună, într-un rând, pe care le puteți contempla în vizualizarea „simplă” a datelor hexagonale (F4-> Hex), unde octeții hexagonali separați de spații sunt „stupid” în stânga și în dreapta - „krakozyabry” din tabelul ASCII, care corespund acestor octeți - ca în „orice” editor vechi „bun”, cum ar fi WinHex, capturile de ecran pe care le-ați văzut pe „orice Site-ul web "" kulkhatskiy ". Lucrăm cu aceiași octeți tot timpul, la fel ca și computerul în sine. Întrebarea este doar în prezentarea și interpretarea lor. Când copiați un fișier executabil de pe disc pe disc, acesta este ALL DATA și FĂRĂ COD, deoarece nimeni nu execută nimic. Dar merită să spuneți Windows că acesta este un fișier executabil, lansați-l, deoarece Windows îl analizează în cod și date și rulează doar codul dintr-un loc predeterminat de standard și antet, după care codul în sine, executat de procesor , este analizat în continuare în structura sa și este împărțit din nou în cod și date și așa mai departe.
    În modul F4-> Decodare, în loc de „krakozyabr”, ne arată octeți și „adevărat sens”.
    - În a treia (dreapta) și cea mai mare coloană (mai precis, câteva coloane), ni se arată o bucată de cod dezasamblată - un text, așa-numitul. Reprezentare „mnemonică” a acestui cod (limbaj de asamblare), destinat unei percepții oarecum simplificate și de înțeles pentru un „homo sapiens”, cu minunata sa gândire asociativă analogică, care este extrem de dificil de perceput secvențe de cod abstracte „goale”.

    5. După finalizarea tranziției la offset-ul dorit în paragraful anterior, vedem că cursorul (acesta gri :)) indică începutul unei comenzi de 6 octeți (pot exista mai mulți octeți în x64) în dreapta care instrucțiunea TIP cmp eax este „demontată”,
    dacă luăm o linie mai sus și puțin mai jos, atunci construcția TIP va ieși:
    mov eax,
    cmp eax,
    jz .06F30B25E
    împingeți edi
    împingeți 020
    sunați la .06F2E1440
    pop ecx
    Pentru a înțelege această construcție, nu trebuie să fii deloc „expert în asamblare”, deși este recomandat să ai cel puțin cunoștințe de bază despre „programarea în orice limbă”. Dar cunoașterea limbii engleze nu va strica în niciun fel!

    Prima instrucțiune (care nu este patch-uri în nici un fel, este „deasupra primei diferențe”) se numește mov - care, îmi pare rău, prima asociere vine în minte de la de limba engleză? - corect - mișcare - adică mutare. Argumentele pentru instrucțiune apar într-o a doua „subcoloană”. eax și edi sunt așa-numite. Registrele pe 32 de biți sunt celule de memorie unice în procesul în sine, destinate stocării datelor în timpul procesării lor. Aproape toate registrele sunt de același tip, teoretic puteți scrie orice acolo, doar pentru a se potrivi, dar unele dintre ele sunt utilizate în mod tradițional pentru a stoca date de anumite tipuri (pentru a nu vă confunda), de exemplu, EAX, EBX, ECX , EDX sunt utilizate direct pentru „date de utilizator”, în plus, ECX merge în mod tradițional ca un contor (de exemplu, pentru cicluri), iar ESI, EDI - ca indicatori către o anumită poziție curentă în memorie, adrese cu care să lucreze. Și unele dintre registre depind de hardware și este mai bine să nu le atingeți - de exemplu, registrul IP conține automat adresa instrucțiuni curente, care este realizat de procesor și, dacă încercați să scrieți unele dintre datele dvs. acolo - o variabilă a programului dvs., procentul va merge prost la instrucțiunile cu această adresă și totul se va prăbuși. ESP - indică stiva - un fel de „sticlă” în care primul care va urca, va fi ultimul care va ieși (Fist In Last Out), destinat stocării temporare a datelor care nu se încadrează în registre, dar nu are sens să-i conducem înapoi în memorie, dacă vor fi folosiți în curând. Pentru a lucra cu date, de obicei un octet - 8 biți, un cuvânt - 16 biți, un cuvânt lung - 32 biți sau un cuvânt lung dublu 64 biți (pentru procesoare pe 64 biți) sunt plasate din memorie într-un registru. Pentru a lucra cu date scurte, puteți accesa părți ale registrului (de exemplu, eax constă din ax - cei 16 biți inferiori și ah și al - părți ale axului în sine), dar acest lucru depășește problema noastră. Apoi, se face un fel de mat de transformare cu datele din registru, după care rezultatul este plasat înapoi în memorie - în aceeași celulă sau în altă celulă sau în oricare alta alocată de autorul (sau compilatorul său) al programului în scopurile respective .

    Adresele sunt indicate între paranteze drepte. Dacă trebuie să luați DATE dintr-o celulă de memorie la o anumită adresă, și nu adresa în sine, atunci pur și simplu scrieți adresa între paranteze drepte. Proiectarea TYPE înseamnă că datele trebuie preluate dintr-o celulă de memorie cu o adresă, a cărei valoare se obține prin adăugarea valorii în registrul ESI + 324h. Este obișnuit să scrieți în Assembler mai clar, dar a fost mai convenabil ca autorul lui Hiew să o arate în acest fel, poate pentru claritate. Când introduceți comenzi, Hiew acceptă perfect construcțiile de tip standard, așa cum se arată mai jos.

    În total, înțelegem că această instrucțiune ia date (4 octeți = 32 biți) la adresă și le pune în registrul EAX. Următoarea instrucțiune ((care este deja în curs de corecție) este CMP. Primul lucru care îmi vine în minte pentru o persoană ușoară, care studiază cu sârguință engleza la școală este compararea. Este vorba de comparație. În caz contrar, totul este la fel ca în instrucțiunea anterioară . Adresa este doar adiacentă.
    cmp eax,
    compară conținutul registrului eax și locația memoriei după adresă. În registrul eax, instrucțiunea anterioară a condus un număr dintr-o celulă adiacentă. Acum este comparat cu numărul din celulă. Ce e atât de dificil, îmi pare rău ??? Puteți învăța un berbec! Acest lucru este cu siguranță mai ușor decât obiectele de "mulți kilometri" dintr-un fel de rahat, trăgând mii de proprietăți în care vă puteți îneca ...
    Dar rezultatul? Comparați comparativ, deci care este rostul, va întreba cititorul atent ... De unde știți unde a scotocit câinele? Și rezultatul este stocat în registrul special de steaguri Steaguri. În acest registru rezervat, fiecare bit înseamnă un steag. În special, există un steag zero - zero. Dacă, ca urmare a executării instrucțiunii de comparație, se dovedește că numerele sunt egale, caseta de selectare va fi bifată (1), dacă nu, atunci va fi ștearsă (0) (sau, dimpotrivă, prea leneșă pentru uită-te cu un depanator - nu contează aici). În mod similar, există o altă casetă de selectare pentru mai puțin - Semn. Steagurile se schimbă ca urmare a executării instrucțiunilor care le schimbă și vor rămâne în poziția lor până când vor fi schimbate ca urmare a executării unei alte instrucțiuni care le afectează starea. Prin urmare, după cmp, putem executa orice alte instrucțiuni în funcție de starea casetei de selectare până când o executăm pe cea care o modifică. Starea steagurilor este citită de instrucțiunile de ramură condiționată și de altele, iar rezultatul este o acțiune sau o inacțiune a acestor instrucțiuni.

    Următoarea instrucțiune merge
    jz .06F30B25E
    Instrucțiunile care încep cu J [aproape] înseamnă Salt. mutându-se în alt loc. Această instrucțiune se referă la instrucțiuni de salt condiționat și înseamnă Salt dacă zero - adică săriți la adresă, dacă este bifată caseta zero. Dacă caseta NU este bifată, atunci „nu se va întâmpla nimic”. Ca argument, adresa de salt este dată (pot fi diferite, relative sau absolute, „departe” sau „închise” în memorie. Aici adresa este specificată în spațiul de adrese al programului, deoarece este configurat de antetul exe , nu are rost să ne aprofundăm, acest lucru va complica doar totul. instrucțiunea anterioară a dezvăluit egalitatea argumentelor, atunci tranziția va avea loc, dacă nu, atunci nu se va întâmpla și procesorul va trece la următoarea instrucțiune.

    Următoarele 2 instrucțiuni
    împingeți edi
    împingeți 020
    Ne amintim că în engleză push înseamnă a împinge, a împinge. Aici înseamnă a împinge numerele în stivă pentru stocare temporară. Adesea, variabilele sunt stocate în acest fel înainte de a intra în proceduri, căutând în registrele de proceduri pot fi utilizate în alte scopuri și folosind stiva, puteți salva atât valorile registrului, cât și transmite argumente unei proceduri care le va scoate de acolo după ce ați introdus-o și împingeți rezultatele acolo înainte de a ieși dacă există și este necesar. Confortul este că nu trebuie să vă faceți griji cu privire la alocarea spațiului de adrese pentru stocarea datelor temporare semnificative. Dacă trebuie să treceți o matrice, trebuie doar să treceți adresa acesteia în memorie. Nu există niciun motiv pentru a transfera toate elementele matricei, aceasta va înghiți în mod inutil memoria și timpul procesorului, așa cum se face în cazul redlocking-ului. (Când este necesar să se păstreze copia originală a matricei în conformitate cu logica de lucru, aceasta este o situație diferită și programatorul însuși inițiază în mod deliberat copierea matricei în scopul replicării.)
    Când lucrați cu o stivă, procentul se va ocupa de toate - zona de stocare a stivei este alocată de sistemul de operare cu suport hardware pentru procesor.
    Prima instrucțiune va salva valoarea registrului EDI - un pointer către o anumită zonă de memorie, iar a doua va împinge constanta predefinită 20h acolo. Probabil, un argument al procedurii, dar nu contează pentru noi, deoarece nu este nevoie să facem analiza pe care a făcut-o autorul patch-ului - transferăm patch-ul terminat într-o altă versiune a programului și acest lucru este de obicei SIMPLU !

    Următoarea instrucțiune
    sunați la .06F2E1440
    În engleză call înseamnă a suna, a suna.
    Este vorba despre apelarea unei proceduri. Nu există nume în codul de apel al procedurii - există adrese unde se află codul acestora. Pentru comoditate, dezasamblatoarele (inclusiv Hiew) pot extrage numele procedurilor și funcțiilor din tabelele de import și export ale fișierelor exe diferite programeși „bibliotecile” după compilare și procedurile primesc nume prin care pot fi apelate dintr-un alt program, dar procedurile interne nu sunt denumite după compilare). În codurile sursă, desigur, existau nume, dar după compilare sunt inutile ... Numai că ar ocupa spațiu. Procesorul nu trebuie să știe numele cuiva, numără numerele ... Uneori decompilatoarele / dezasamblatoarele reușesc să extragă numele procedurilor din informațiile de depanare (dacă următorul coder a uitat să-l taie și a umflat dimensiunea binarului cu informații inutile) și acest lucru este de ajutor în analiza codului, dar în cazul nostru chiar nu ne pasă. Nu trebuie să înțelegem de ce este necesară această procedură și ce face ... Vă reamintesc că avem un patch gata pregătit și dacă reușim să-l transferăm „fără incidente”, atunci nu va fi necesar să aprofundăm în el .

    Ultima instrucțiune dată
    pop ecx
    Pop - acțiunea este opusul împingerii - adică pop ultima valoare împinsă pe stivă. ÎN acest cazîn registrul ecx. Probabil că această instrucțiune este necesară pentru a extrage rezultatul procedurii, dar nu ne pasă, incl. și pentru că această instrucțiune, ca și 2 push-a de mai sus și apel, nu se schimbă după patch și sunt date pentru o prezentare generală și ca o margine de referință a patch-ului. După patch-uri, toate aceste instrucțiuni vor rămâne la locul lor, la fel ca totul după ele.

    6. Acum luăm termenii patchrv.dll într-o altă fereastră Hiew, privim instrucțiunile de la aceeași adresă.
    mov eax,
    mov eax, 000000100
    nop
    mov, eax
    împingeți edi
    împingeți 020
    sunați la .06F2E1440
    pop ecx
    Diferențele sunt vizibile doar în instrucțiunile a doua, a treia și a patra.
    Al doilea mov eax, 000000100
    trebuie doar să scrieți constanta 100h (= 256) în registrul eax
    Al treilea nop
    „cel mai amuzant” = NoOperation - nu face nimic deloc și în vecii vecilor. De ce este nevoie? Și este necesar să se alinieze sincronizarea cu codul de date. Faptul este că dimensiunile codului original și al patch-ului trebuie să coincidă complet cu numărul de octeți și limita comenzii (împreună cu argumentele lor). Dacă ceva se mișcă cel puțin un octet, procesorul va ajunge „în locul greșit”, va percepe un anumit argument de instrucțiune ca o comandă, iar următorii octeți - ca argumente ale acestei comenzi, chiar dacă există un cod de comandă diferit. Totul se va muta imediat și fatal. 99% că programul se va prăbuși cu o eroare fatală. Comanda nop este codul 90h și ocupă un octet. Dacă există un cod redundant care nu este necesar sau chiar dăunător în sensul patch-ului, acesta poate fi înlocuit, împreună cu argumentele, cu atât de mulți noduri la rând, cât este nevoie de octeți. Printre hackeri, acest lucru se numește lătrat sau înfundat. De fapt, aceasta este singura modalitate de a elimina codul inutil din codul executabil, deoarece nu este text și orice „tăiere din mijloc” „în scopul scurtării” va duce imediat la faptul că toate adresele vor fi deplasate, mâncat și nimic nu va merge deloc. Și „cel mai rău” lucru se întâmplă atunci când noul cod, care trebuie să îl înlocuiască pe cel vechi, nu se încadrează în locul „vechi” ... Aici începe durerea de cap a hackerului - cum să-l micșorăm pentru a se potrivi ...
    Al 4-lea mov, eax
    puneți numărul din registrul eax într-o locație de memorie
    În principiu, a treia și a patra sau a treia și a doua instrucțiune pot fi schimbate - nu va schimba nimic. Dar nu puteți elimina nop în nici un fel, deoarece noile comenzi au o lungime de cod cu 1 octet mai mică decât cele vechi și o astfel de discrepanță, dacă nu este parată cu nop, va duce imediat la o eroare de sincronizare.

    Comparația „cu ceea ce a fost” pune imediat totul la locul său!
    A fost - luați un număr dintr-o celulă, comparați-l cu un număr dintr-o celulă. Dacă este egal, atunci „undeva” pentru a sari, dacă nu, atunci mergeți mai departe și efectuați procedura. În contextul sarcinii, acest lucru este similar cu compararea numărului de conexiuni valide cu limita conexiunilor valide (adică 1 pentru o stație de lucru sau 2 pentru un server). Limita este stocată într-un fel de constantă, a cărei adresă este specificată în instrucțiunea de comparație.
    Ce a devenit - luați un număr dintr-o celulă, marcați „această afacere” și suprascrieți imediat valoarea registrului EAX cu constanta 100h (= 256 - adică, se pare, noua limită de 256 conexiuni), apoi puneți acest număr în celulă
    Nimeni nu compară nimic, procedura care se numește mai jos va fi întotdeauna executată. În plus, o nouă limită = 256 este scrisă în celulă unde limita conexiunii a fost evident stocată „forțat” în cazul în care există alte verificări ale acestei limite în altă parte a programului. ASTA E TOT! E greu să te gândești la ceva mai primitiv!

    Dacă ar trebui să căutăm acest loc pe cont propriu, atunci ar trebui să urmărim procedurile acestei DLL cu depanatorul, așa cum a făcut-o în mod evident autorul patch-ului, sau să demontăm totul cu ceva de genul IDA și să studiem cu atenție codul care conține sute de mii de instrucțiuni. Dar avem totul gata! Este ca într-o glumă despre un mecanic care a bătut odată cu un ciocan și mașina a pornit, dar subtilitatea este că știa unde să lovească și costă multă muncă. (Doar nu vorbiți despre bani aici - împingeți-vă fundul în voi înșiși! Mai ales în ajunul marii vacanțe! Pentru fanii „câștigării de bani pe Internet” - există site-uri specializate.)

    De ce patch-ul eșuează pe toate versiunile ulterioare - deoarece adresele se schimbă și codul (argumentele sale) se modifică ușor în timpul compilării. Acest lucru duce la o schimbare a codului necesar din interiorul exe către alte compensări și, dacă căutați după semnătură (secvență strictă de octeți), este posibil să nu constate că argumentele s-au schimbat. Multe adrese, la urma urmei, sunt, de asemenea, argumente de instrucțiuni și schimbă codul binar dincolo de recunoaștere, în ciuda faptului că esența sa este aceeași ... Fă-o manual! Ai un cap pe umeri și nu o „secvență strictă de contururi” ...

    7. Acum, în versiunea ORIGINALĂ a termsrv.dll pe care patch-ul îl patch-uri, trebuie să găsiți o anumită secvență unică, în contextul programului, în apropierea locului pe care trebuie să îl patch-uri pentru a-l căuta în versiune noua termsrv.dll, cel pe care doriți să îl corecți, dar patch-ul nu îl va corela ...
    Trebuie să vă uitați la dezasamblator și să căutați BYTE-uri corespunzătoare acestuia și, dacă alegeți ceva prea „simplu”, atunci o astfel de combinație va apărea de multe ori în căutare și va fi dificil să găsiți locul potrivit, va fi „Se îneacă” printre o grămadă de altele similare. Și pentru noi, „acuratețea lovirii” este extrem de importantă, pentru că dacă o fixați „într-un loc greșit”, nu va funcționa sau chiar Windows va atârna ...
    Nu puteți selecta instrucțiuni care conțin adrese fixe lungi pentru șirul de căutare. Când compilați alte versiuni, acestea vor ieși cel mai probabil și nu veți găsi nimic pe ele în noua versiune.
    Întreaga procedură, unde are loc verificarea, este mică, doar câteva zeci de comenzi. Pentru un asamblator, acesta este „nimic”. Hiew vă va arăta limitele condiționate ale procedurii ca „dungi” _ ^ _ ^ _ ^ _ ^ _ ^ _. Vă rugăm să rețineți că la începutul procedurii există un apel la adresa procedurii „import” a API-ului Windows - CDefPolicy :: Query și Hiew l-au detectat (prin urmare, numele funcției a fost pescuit și scris). Acesta ar trebui să fie un ghid bun pentru dvs. în drumul către locul potrivit. În plus, acest „kakbe sugerează” că ar putea exista o altă modalitate de a rezolva problema, de exemplu, găsirea unei anumite politici „secrete” responsabile pentru comportamentul Terminal Server. Cei interesați pot urmări codul cu depanatorul și pot căuta cum se inițializează o variabilă sau o constantă cu numărul de conexiuni. Dar pentru șirul de căutare, „codul de la CDefPolicy” nu este potrivit, deoarece adresa procedurii din import va fi probabil eliminată în noua versiune. Aș încerca să caut după octeți de la începutul procedurii după CDefPolicy. Acolo merge:
    57 push edi
    6A10 împingeți 010
    8BF1 mov esi, ecx
    33DB xor ebx, ebx
    iese 57 6A 10 8B F1 33 DB
    La sfârșit, puteți adăuga un alt cod E8 al instrucțiunii de apel care urmează, dar NU argumentul acestuia (următorii octeți), deoarece aceasta este adresa și se va schimba atunci când compilați versiuni noi.
    Această secvență îmi dă atunci când caut în Hiew (F7-Căutare)
    Doar 3 potriviri Și apelul către CDefPolicy este vizibil în context doar într-un singur caz - în primul. Dacă ați găsit același loc, scrieți-i adresa din prima coloană (apăsând Alt-F1 - Global!) „Pe o bucată de hârtie” și încercați să-l fixați.
    Dacă codul s-a schimbat atât de mult încât nu găsește nimic, căutăm alte secvențe unice, incl. culese din procedurile învecinate și încercați să le căutați. Sarcina este de a găsi codul necesar, unde „totul coincide în sens”, și nu o secvență, ne gândim la asta și ne uităm la context, încercând să găsim CDefPolicy :: Query în noua versiune. Puteți căuta textul CDefPolicy :: Query în new.dll, veți găsi șirul (de mai multe ori), dar nu locul în care se face referire la adresa acestuia. Această metodă ajută uneori să o găsesc pe cea potrivită folosind F6 (Referință) în Hiew și am reușit să găsesc locul potrivit în dll de la Win7SP1x86Rus de dragul experimentului, dar nu și al faptului că va funcționa peste tot, mai ales cu alte programe ).

    8. Acum trebuie să luați termsrv.dll din versiunea pe care trebuie să o patch-uri. Lansați cea de-a treia copie a Hiew, deschideți o nouă dll în ea ”(pentru a comuta cu ușurință între toate trei și a compara vizual). Găsim locul potrivit, așa cum este descris mai sus, sau mergem la adresa pe care au scris-o „pe o bucată de hârtie” (o bucată de hârtie, în general, este prietenul unui programator din această lume muritoare unde mor hard disk-uri, scoate mufele și sistemul de operare se blochează).
    Analizăm codul de mai jos CDefPolicy :: Interogare și găsim cu ușurință locul potrivit, CA:
    cmp eax,
    jz .06F30B25E
    ÎNȚELEGEM că adresa, dar dacă s-a schimbat, de exemplu, aceasta este adresa de care avem nevoie și o vom opera în editare ulterioară.

    9. Dacă sunteți convins că aveți exact ceea ce aveți nevoie, plasați cursorul peste instrucțiunea cmp și apăsați cu îndrăzneală F3-Edit. Cursorul „gri” se va schimba la „normal” (pentru modul de afișare text) - indice. Ar trebui să indice aceeași instrucțiune cmp.
    Apăsați Tab (sau F2) și va apărea dialogul pentru introducerea instrucțiunilor de asamblare.
    Introduceți instrucțiunea acolo
    mov eax, 100
    Apoi Enter. Pe ecranul principal, veți vedea că octeții „din instrucțiune” s-au schimbat și unii dintre ei au devenit „aurii” (galbeni). În același timp, instrucțiunile de mai jos „s-au deplasat” și în coloana din dreapta vizavi de ele arată „gunoi” - deloc ceea ce a fost acolo înainte.
    Caseta de dialog pentru introducerea comenzilor în partea de sus a ferestrei principale continuă să „se blocheze” și să aștepte introducerea de noi instrucțiuni, în timp ce se afișează unele următoare, interpretate incorect, din cauza congresului de adresare, instrucțiuni.
    Nu acordăm cea mai mică atenție acestei instrucțiuni și o conducem pe următoarea.
    Tastați nop și apăsați Enter
    În fereastra principală, se va aprinde în galben următoarea linie cu codul 90.
    Sincronizarea va fi restabilită și următoarea comandă va fi din nou jz. Acesta va oferi modificarea dialogului pentru introducerea instrucțiunilor.
    Condu acolo
    mov, eax
    Dacă în loc de 320 în comanda cmp a existat o adresă diferită, atunci conduceți în IT!
    Apasa Enter. după aceea, codul din linia 3 se va aprinde în galben, în dreapta căruia ar trebui să existe o instrucțiune mov, eax (sau nu 320, dar numărul care a fost introdus).
    Verificăm dacă sincronizarea datelor de cod NU a fost mutată. Următoarea instrucțiune ar trebui să fie push edi (sau alta dacă codul s-a schimbat mult și ați avut o instrucțiune diferită acolo înainte de patch - ar trebui să rămână la locul său și să fie interpretată corect, ceea ce înseamnă că totul este OK după aceea).

    Când toată lumea a intrat, apăsați Esc O dată. Caseta de dialog pentru introducerea instrucțiunilor va dispărea, dar poate fi apelată din nou oricând (în modul de editare) apăsând Tab. Toți octeții modificați vor fi galbeni. Verifică meticulos dacă totul arată corect, nu este încurcat nicăieri. Nimeni de aici nu va verifica nimic pentru dvs., NU există „protecție împotriva proștilor” de vreun rang sau titlu. Regalia nimeni nu va lua în considerare. Ce au făcut - ce au primit. Nakosyachili - îngheață și nu va funcționa.
    Dacă totul este OK, apăsați F9 (Actualizare). Modificările vor fi scrise într-un fișier de pe disc, iar octeții modificați își vor schimba culoarea în normal (Cyan).

    10. Acum trebuie să corectați exe sumă de control. A face acest lucru este extrem de plictisitor, presupun că Hiew va face acest lucru pentru tine și nu va trebui să faci aproape nimic. Apăsați F8 (Antet). Apare o fereastră „gri, nedescriptibilă”, cu o „decriptare” a parametrilor antetului fișierului exe.
    Apăsați F3 (Editați). În partea de sus a ferestrei „nedescriptibilă” apare o violetă „colorată”. Acesta listează toți parametrii antetului cu adresele și valorile lor. Cu o față plictisitoare, derulați spre final și găsiți parametrul Checksum acolo. În dreapta este valoarea sa (suma de control în sine) în expresii hexazecimale și zecimale, care a fost moștenită din fișierul original UNPATCHED. Apăsați din nou F3 și, iată, linia devine galbenă și suma de control își schimbă valoarea. Putem avea încredere în Hiew, dar îl putem găsi pe forumuri sau în cărți și îl putem calcula manual. Dacă totul ți se potrivește, apasă F9 (Actualizare). Windows pâlpâie, totul dispare ... Acesta este sfârșitul, crede cititorul neinițiat. Dar când praful se depune, suma de control este corectă. Neîncrezătorii pot intra din nou în dialogul menționat anterior și pot compara Checksum cu cel care a fost salvat cu atenție înainte de execuție într-o găleată pe o bucată de hârtie. Puteți ieși din Hiew prin Esc și puteți trece la etapa de testare a produsului.

    11. După ce ați primit fișierul corecționat, puteți încerca să înlocuiți termsrv.dll în sistemul de operare țintă.
    Datorită mecanismelor de apărare ale Windows de la schimbare fișiere de sistem, precum și interzicerea înregistrării rularea programelor(încălcarea partajării) va trebui să opriți serviciul de servicii Terminal (consultați comentariile altor utilizatori de mai sus) și să înlocuiți copiile DLL în „orice WinSxS” și așa mai departe, astfel încât Windows neautorizat să uite chiar să se gândească la încercarea de a restabili versiune fără patch.

    Dacă totul funcționează, atunci ați devenit un kulkhacker sau ați făcut primul pas CONȘTIENT pe această cale. Nimeni nu te deranjează să alegi și să înveți mai departe, făcând din lume un loc mai bun și mai bun. În net există multe instrucțiuni și forumuri tematice întregi pentru cei care doresc să gândească cu propriile lor capete, și nu doar să consume popularul porno din Matrix.

    Nu ezitați să publicați o listă de octeți modificați (o puteți obține folosind același „stoc” „FC / b Fișier1 Fișier2”) pentru alți utilizatori mai puțin sofisticați, aici și / sau cu alte resurse, faceți bine vecinului, pe măsură ce Domnul a lăsat moștenire și slăvire a numelui său în analele istoriei hackerilor.

    Conform listei de modificări, puteți crea un fișier .CRK (pentru patch-uri care înțeleg acest format antic) sau puteți face patch.exe folosind un patch maker, dintre care, de-a lungul anilor de evoluție, au scris zeci și sute. Abia apoi alegeți „cu Suport pentru Windows Vista / 7 ″ deoarece vechi, deși se potrivește bine, dar nu știu nimic despre privilegiile Escalate, iar Windows nu le va permite stupid să corecte nimic în Windows / sistem sau fișiere de program. Instrucțiunile ar trebui să menționeze cerința de a opri serviciul terminal sau de a utiliza patch-uri pe fișiere în foldere separate, urmate de o înlocuire în system32 de către utilizatorii înșiși. În orice caz, publicați lista modificărilor, nu vă faceți vinovați de „lauri”, deoarece cineva ar putea fi nevoit să tragă manual și infa vă va permite să găsiți o soluție alternativă. Patcherul autorului face toate acestea automat, inclusiv lucrul cu WinSxS - m-am uitat la cod, dar cred că nu va fi ușor să găsesc un astfel de patch maker care să țină cont de toate acestea.