Cum să vă protejați programul de biscuiți

Am decis să scriu un articol despre cum să-mi protejez programele de hacking. Voi face o rezervă deodată, este aproape imposibil să creezi o astfel de protecție care ar rezista unui cracar experimentat. Dar puteți încerca să creați o astfel de protecție, care va fi prea dură pentru aproximativ 90% din biscuiți. Toate ideile mele de protecție se bazează pe observații personale și pot să nu fie de încredere, dar pot fi utile împotriva majorității începătorilor și a crackerelor avansate. Acum vă voi spune ce instrumente utilizează crackerul mediu:







În primul rând, instrumentul cel mai indispensabil este un program de depanare, adică un program care vă permite să urmăriți codul programului altcuiva într-un program live. Lista acestor programe variază de la un program simplu de depanare la un Soft-Ice Advanced.

Pe scurt, sarcina noastră, de a înșela toate aceste mijloace și, cel mai important, de a încurca hoțul. Și iată cum facem asta, voi merge pe listă și îți voi explica cum să mă protejez de aceste fonduri și de spărgător. Să începem cu debuggerii. De fapt, mulți spărgători nu le place VB, pentru că funcționează prin intermediul bibliotecilor sale, și, desigur, atacatorul va dura foarte mult timp pentru a descoperi în cazul în care codul de program, care solicită funcțiile bibliotecii (verificat prin experiment). Dar acest lucru se întâmplă numai atunci când programul a fost compilat în codul P, adică într-un pseudocod. Aceasta înseamnă că primul inel de protecție trebuie compilat într-un pseudocod. Dacă credeți că acesta este sfârșitul, atunci sunteți profund greșiți. În lume există un program de depanare numit P-Code Loader și vă permite să filtrați apelurile din bibliotecă și să afișați direct codul programului. Desigur, nu toate au, dar dacă există, atunci nu fi prea sigur că crackerul refuză să crack. Prin urmare, codul P nu ar trebui să fie pariul principal al programatorului. Desigur, cu un cod pseudo-cod trebuie să dați o grămadă de biblioteci, dar cum să spunem că sănătatea este mai scumpă.

Uneori, programele utilizează tehnici diferite împotriva depanatorilor, pe baza capacității lor de a executa comenzi înainte de a le executa. Aceasta este, teoretic, puteți crea o comandă care va trimite depanatorul la tartru, în timp ce procesorul va ignora această comandă din cauza sistemului de predicție a tranzițiilor. Nu știu cum să fac asta, așa că am menționat acest lucru doar pentru că m-am întâlnit odată cu această tehnică.

Săpând prin director, am găsit o minunată funcție IsDebuggerPresent, care returnează True dacă există un sistem de depanare a sistemului de tip SofIce în sistem.

Funcția funcționează din NT și Win98:

În continuare, dezasamblatoare. În instrumentele de cracare, dezasamblarea are un loc onorabil. Rareori un cracker examinează un program fără dezasamblare. Disassembler oferă nu numai informații despre codul programului, ci și numele funcțiilor utilizate și expresiile de șir utilizate în program, precum și o navigare convenabilă pentru apelurile de funcții și salturi. Dezamăgitorul poate fi înșelat în mai multe moduri. De la început, ce înseamnă să înșele? A înșela înseamnă să nu permiteți dezasamblării să arate adevăratul cod al programului. Acest lucru poate fi realizat în modul următor, programul poate fi ambalat de un ambalator, cum ar fi Aspack, UPX etc.

În acest caz, dezasamblarea poate afișa numai codul ambalatorului și nimic mai mult. Dar există și pachete de despachetare, deci există întotdeauna o posibilitate ca un cracare să aibă un despachetor adecvat și el va primi un cod pregătit pentru programul tău. Pentru a preveni acest lucru, nu există modalități. Cu excepția cazului în care utilizați mai mulți agenți de împachetare sau utilizați ambalatorul puțin cunoscut. Acest lucru va împiedica grav spărgătorii, dar nu se poate opri deosebit de enervant (la urma urmei, teoretic, puteți găsi locul în care ambalatorul trece controlul la program și efectuează unele manipulări ale codului).

Setați un cronometru care verifică la fiecare 10 minute dreptul utilizatorului de a lucra. Și dacă utilizați cecuri curate (fără gunoi), atunci crapatorul poate observa acest lucru și îl puteți folosi. Prin urmare, verificați utilizatorul într-un loc cu gunoi, astfel încât verificarea dvs. să nu fie izbitoare. Apropo, același timer (sau altul cu un interval mai mic) vă va spune dacă programul dvs. este urmărit sau nu.

Faptul este că, în timpul programului de urmărire în timp pentru Windows se oprește (temporizator sistem este dezactivat), ceea ce înseamnă că notați timpul, și dacă nu se mișcă după 20 de secunde, aceasta înseamnă fie că placa de bază a zburat, sau un program hack. Apropo, este logic să stocați datele criptate în registru sau fișier, astfel încât atacatorul să nu calculeze imediat unde le stocați. Și, desigur, este foarte prost să scrie undeva o linie de tip Registered = 0, cred că chiar și un copil va înțelege ce trebuie făcut. Dar acest lucru poate fi folosit ca o copertă, adică dacă este Înregistrat = 1, atunci puteți afișa un mesaj de tip și îl puteți format în calculator (glumă). Dar, de fapt, ideea nu este rea.







În general, tot ce-mi imprumut creierul, este conceput pentru a încurca hoțul.

Dar acestea erau florete, acum fructe de padure.

După cum știți, verificarea parolei este cea mai importantă apărare, deoarece este cea care trebuie să reziste grevelor de artilerie grele și, prin urmare, trebuie să aibă protecție, ca un banc în siguranță.

Pentru început, îți voi explica cum se declanșează hackerul. El are de obicei două opțiuni pentru a începe de la început sau la sfârșit. Aceasta înseamnă că poate începe să exploreze programul de la începutul parolei sau să înceapă din momentul în care programul afișează un mesaj despre o parolă greșită. Ambele metode au argumente pro și contra. Dacă mergeți de la început, puteți afla unde sunt stocate numele și parola introduse și ce se face cu acesta. Dar, pe de altă parte, trebuie să filtrați o grămadă de gunoi pentru a găsi ceva meritoriu. Dacă mergeți de la capăt, atunci există o șansă să consultați codul apelantului superior al mesajului sau dacă aceasta este o procedură separată pentru a merge la locul de verificare. Dar există unele dificultăți, uneori, programul nu utilizează standard funcția de afișare a mesajelor, astfel încât nu poate fi prins, sau după programul de spectacol nu vor fi returnate la mesaj, unde a fost adus, și așa mai departe, de asemenea, nu știu ce sa întâmplat acolo. Sarcina noastră este să ne asigurăm că crackerul nu înțelege unde este verificarea și că nu ar putea să spioneze. Întrucât, în majoritatea cazurilor, hoții merg pe prima cale, atunci ne vom strădui. Nu văd o modalitate de a citi numele de utilizator și parola fără a pune hmemcpy, aceasta este o caracteristică standard în Windows, care se numește peste tot fără permisiunea noastră, așa că aici avem avantajul unui atacator. Dar cine a spus că trebuie să verificăm parola, chiar acolo și să nu plecăm de la biroul de bilete. Putem să spunem și să scriem liniștit datele undeva, apoi să folosim timerul descris mai sus și dacă ne-am răsfoit, atunci vom pleca fără mesaje inutile. Dacă nu atunci, undeva în 20 de clicuri ale mouse-ului, verificați liniștit în liniște ceea ce am alunecat.

Este de dorit codarea atât a numelui, cât și a parolei de către un algoritm puternic și verificarea rezultatelor. Și trebuie să verificăm scrisoarea, alternând cu gunoiul și apoi un program precum Smartcheck va înregistra și dacă nu sunt ascunse, atunci putem ghici unde se întâmplă acest lucru. Apropo, dacă rezultatul nu este corect, atunci nu jurați, puteți continua să lucrați în siguranță, deoarece un intrus poate prinde un mesaj pe acest mesaj. Și așa cum am spus, folosiți diferite funcții peste tot.

Uneori programele folosesc CRC, adică un număr unic pentru fiecare program care îi determină integritatea. Poate fi stocat undeva și numărate din nou de fiecare dată, iar în cazul în care numerele nu se potrivesc, atunci, fie pe computer, virusul sau cracker-ul au răsunat în codul programului. Dacă o săpătați, este mai bine să ieșiți. Și este chiar mai bine să plecați fără mesaje. Vă sfătuiesc să vă abțineți de la orice rapoarte despre apărare. Și toate pentru că nu poți da cracarei nici măcar o șansă să prindă programul pe orice. Funcțiile pentru afișarea mesajelor nu sunt atât de multe și sunt destul de bine cunoscute, însă funcția care este utilizată pentru a ieși din program nu este foarte bine cunoscută și există șansa ca cracare să nu înțeleagă ce să facă.

Am recitit ceea ce am scris și am înțeles că nu am explicat ce înseamnă să prindeți programul. Acum o voi explica. Programele sunt mari, iar protecția nu este, de asemenea, mică. Prin urmare, pentru a nu întoarce munții în zadar, biscuiții folosesc puncte de întrerupere. Aceasta este, în exemplul de VB, pentru a afișa un mesaj folosind funcția MsgBox rtcMsgBox, un atacator poate spune debugger (dacă îl cunoașteți), opriți programul în cazul în care va provoca rtcMsgBox. Și când programul dvs. este indignat de o parolă incorectă, un atacator poate să-și înceapă cercetarea mult mai aproape de un loc important de apărare decât este necesar. Prin urmare, cred că este mai bine să nu dați crackerului o șansă suplimentară de a penetra programul.

Adesea, biscuiții nu modifică corupt codul dorit, ci investighează algoritmul pentru crearea unei parole și scriu generatoare de numere de serie. Prin urmare, este necesar să protejăm bine acest algoritm. Este de dorit să se utilizeze un algoritm rezistent la criptare, cum ar fi RSA sau MD5. Pe Internet puteți găsi metode de lucru cu ele. De asemenea, pentru a face mai dificilă pentru a genera un cracare, este de dorit de a sparge parola în mai multe etape, împărțite pe funcții (de preferință de lucru la din ce în ce a cauzat nu numai din cauza parolei), precum și în intervalele dintre apeluri ale acestor funcții pentru a verifica programul de cercetare. Și, de asemenea, amintiți-vă că, atunci când programul sub debugger, aceasta nu poate rula în paralel o serie de lucruri, care este, în cazul în care se va verifica prezența debugger, un atacator poate observa și în afara. Deci, nu dați nimănui această șansă, tratați fiecare utilizator ca potențial intrus. Asta-i tot ce am vrut să-ți spun

Am scris acest articol din mai multe motive:

  • Voiam să împărtășesc cunoștințele mele cu oamenii.
  • Nu am nimic de făcut.
  • M-am săturat să arate ca cineva care se simte agresat de apărare slabe de programatori care folosesc scheme de protecție în urmă cu 20 de ani, și am decis întinderea competențelor sale de a rectifica situația.
  • Am observat că atunci când explici cuiva, ceva, începi să înțelegi mai bine.

Ei bine, ce a atacat omul. La urma urmei, acesta nu este un concurs pentru cea mai bună cunoaștere a subiectului. Acesta nu este un exactitate de vanitate, ci un loc în care puteți împărtăși cunoștințele cu aceia pentru care sunt folositori. Dacă știți mai multe, corectați și spuneți-mi.
Nu sunt de acord - corect. Dar de ce să se insulte unul pe celălalt. Sunteți încă programatori și nu șoferi de tractor care întotdeauna concurează cine este mai abrupt! Și să scriu comentariile în stilul "Toate țapii, eu știu mai mult decât toți împreună" Nu am nevoie de minți mari. Este mult mai greu să stai jos și să scrie!

Înainte de a scrie articole despre protecția progilor, depinde de tine ce să faci.
Citez:
„Intrand cu referință API, am găsit o funcție IsDebuggerPresent minunată, care returnează True, în cazul în care sistemul este un tip SofIce'a sistem debugger“ - .. Prostii, că prostiile astea de la propatchina makroharda poate fi de câteva secunde în cadru, și cu atât mai mult (.) acest apishka nu poate determina activitatea Aisa.

ZY V-aș sfătui să examinați mai serios această problemă înainte de ai învăța pe alții.







Articole similare

Trimiteți-le prietenilor: