Inginerie inversă

Inginerie inversă ( inginerie inversă, inginerie inversă , inginerie inversă ; inginerie inversă în engleză  ) este studiul unui dispozitiv sau program finit, precum și documentația pentru acesta pentru a înțelege principiul funcționării acestuia; de exemplu, pentru a descoperi funcții nedocumentate (inclusiv marcaje software ), pentru a face o modificare sau pentru a reproduce un dispozitiv, program sau alt obiect cu funcționalitate similară, dar fără copiere directă.

De obicei, este folosit dacă creatorul obiectului original nu a furnizat informații despre structura și metoda de creare (producție) a obiectului. Deținătorii de drepturi de autor ai unor astfel de obiecte pot pretinde că ingineria inversă sau utilizarea rezultatelor acesteia încalcă dreptul lor exclusiv conform legii dreptului de autor și brevetelor [ 1] [2] .

Inginerie inversă în serviciul statelor

În 2016, la o reuniune a Comisiei guvernamentale pentru înlocuirea importurilor, ministrul industriei și comerțului al Federației Ruse, D.V. Manturov , a anunțat intenția de a crea un centru de inginerie inversă pe baza Fondului de dezvoltare a industriei [3] .

Aplicații ale ingineriei inverse

Inginerie, auto, aviație

Copierea diferitelor mecanisme și mașini fără dezvoltare reală. Vă permite să reproduceți un design de succes la costuri minime, dar există cazuri de copiere și mașini nereușite.

Exemple:

Electronică

Ingineria inversă a dispozitivelor electronice a apărut în zorii ingineriei radio. În anii 1920 și 1930, diverse companii au copiat tuburi radio și soluții de circuite pentru a le utiliza unele de la altele . Cu inginerie inversă, și nu cu producția licențiată, tuburile radio cu același scop ale aproape tuturor producătorilor s-au dovedit a fi unificate și interschimbabile. De exemplu, lampa europeană EL95 este o clonă a lămpii americane 6KA5 anterioare. Există și exemple inverse: americanul 6CA5 și KT88 sunt clone ale lămpii europene EL34 . Același lucru este valabil și pentru tuburile radio sovietice, dintre care multe sunt clone de tuburi americane obținute prin Lend-Lease (de exemplu, 6Zh4, 6P9) sau tuburi germane din echipamente capturate (6G2, GU50). Împreună cu lămpile, au fost copiate și scheme tipice pentru includerea lor, adică, de fapt, diagrame ale blocurilor de echipamente radio. Prin urmare, datorită ingineriei inverse, era lămpii a fost caracterizată, de fapt, prin trecerea la designul standard în electronică. În special, toate receptoarele superheterodine de uz casnic produse în lume au fost construite de fapt după trei scheme, care au fost determinate de lampa unității de amestec heterodin: triodă dublă , triodă heptodă sau pentagridă . Același lucru a fost valabil și pentru amplificatoarele de joasă frecvență. Nu au existat mai mult de o duzină de scheme tipice pentru construcția lor, în funcție de puterea de ieșire: un singur ciclu de putere redusă pe o lampă combinată de tip 6F3P, un singur ciclu de putere redusă cu un bloc de timbru pe o triodă dublă (tip 6N1P) și un pentod de ieșire (6P14P, EL84) sau un tetrod fascicul (6P3S, EL34), push-pull cu un invertor de fază triodă (6N1P + 2x6P14P), push-pull multietajat (6N8P + 2x6P6S + GU50). Televizoarele alb-negru în anii 1960 și 1970 au fost construite de fapt în două scheme: una pentru dispozitive foarte simple, cu dimensiuni mici ale ecranului, fără scanare orizontală APCG și APCHIF (similar cu televizoarele sovietice UNT-35), a doua schemă era destinată dispozitive pe kinescoape cu un unghi de deviere a fasciculului de 110°, APCG, APCHiF (Sovietic UNT-59, majoritatea televizoarelor europene) .

Software

Cercetarea și ingineria inversă a programelor sunt de obicei efectuate în scopul modificării ulterioare, copierii sau, de exemplu, scrierii generatoarelor de chei , algoritmul cărora este obținut pe baza analizei algoritmului pentru verificarea acestora. De asemenea, cercetarea programului este folosită pentru a obține unele informații confidențiale despre structura internă a programului - despre protocolul de schimb de rețea cu serverul, hardware-ul, cheia de securitate sau interacțiunea cu alt program. Un alt domeniu de aplicare este obținerea de informații despre modalitățile de export de date din numeroase formate de fișiere proprietare [5] .

Odată cu dezvoltarea Internetului , sistemele de operare și programele populare sunt din ce în ce mai investigate pentru a găsi vulnerabilități în ele , sau așa-numitele. „găuri”. În viitor, găurile găsite pot fi folosite pentru a obține acces neautorizat la un computer de la distanță sau la o rețea de calculatoare. Pe de altă parte, ingineria inversă este utilizată atunci când companiile de antivirus investighează programele malware pentru a adăuga semnăturile acestuia în bazele de date de produse.

Un exemplu binecunoscut de inginerie inversă este cercetarea BIOS-ului computerului personal IBM , care a reprezentat un pas major către dezvoltarea producției terțe de computere compatibile cu IBM. [6] [7] Crearea serverului Samba [8] [9] (inclus cu sistemul de operare GNU/Linux și care lucrează cu servere bazate pe Windows ) a necesitat, de asemenea, ingineria inversă a protocolului SMB al Microsoft . Crearea multor clienți ICQ a necesitat și inginerie inversă a protocolului ICQ .

Dezvoltarea software inversă se realizează folosind următoarele tehnici.

  1. Analiza comunicațiilor, cea mai frecventă în ingineria inversă a protocoalelor de comunicație, care se realizează folosind un analizor de magistrală și un sniffer de pachete pentru a asculta pe magistrala computerului și , respectiv, în rețeaua de calculatoare .
  2. Dezasamblarea codului mașină al programului pentru a obține listarea acestuia în limbaj de asamblare . Această metodă funcționează pe orice program de calculator , dar necesită mult timp, mai ales pentru un neprofesionist.
  3. Decompilarea mașinii sau a codului octet al unui program pentru a produce cod sursă într -un limbaj de programare de nivel înalt .

În prezent, cuvintele „inginerie inversă” sunt cel mai adesea înțelese ca așa-numitele. inginerie inversă a camerei curate , adică un proces în care un grup de dezvoltatori analizează codul mașină al unui program , compilează un algoritm pentru un anumit program în pseudocod sau, dacă programul este un driver de dispozitiv , compilează specificații exhaustive pentru dispozitiv de interes. După primirea specificațiilor, un alt grup de dezvoltatori își scrie propriul driver pe baza specificațiilor sau algoritmilor primiți . Această abordare vă permite să evitați acuzațiile de încălcare a drepturilor de autor asupra programului sursă, deoarece conform legilor, de exemplu în SUA , se încadrează în conceptul de „ utilizare corectă ”, adică utilizarea corectă a programului original. Rezultatul ingineriei inverse este rareori identic cu cel original, ceea ce evită răspunderea legală, mai ales dacă prima echipă de dezvoltatori controlează absența acestei identități și absența încălcării mărcilor comerciale și a brevetului.

Baze de date

Poate fi folosit la crearea unui model de bază de date relațională .

Industrie

Inginerie inversă a produsului unui concurent pentru a-i afla dispozitivul, principiul de funcționare și a evalua posibilitățile de creare a unui analog.

De exemplu, un număr de producători de echipamente fotografice, precum Sigma , Tamron , Tokina și Carl Zeiss , produc obiective cu montură de tip Canon EF . Acestea sunt proiectate invers și producătorii lor nu au acces la specificațiile Canon. .

Industria militară

cu cel mai mult faptele cunoscute de inginerie inversă au fost:

  • Canistre germane de gaz - trupele britanice și americane au observat că germanii aveau canistre foarte la îndemână. Ei au copiat aceste cutii și s-au numit Jerry cans (de la cuvântul „gerrys” - de la „germani”) [10] .
  • Tupolev Tu-4  - mai multe bombardiere americane B-29 , în timp ce efectuau incursiuni în Japonia , au efectuat o aterizare de urgență în URSS . Armata sovietică, care nu avea astfel de bombardiere strategice, a decis să copieze B-29. Câțiva ani mai târziu au dezvoltat Tu-4, o copie aproape completă a acestuia [11] . În același timp, motoarele, armele și echipamentele electronice Tu-4 nu erau copii ale sistemelor V-29 corespunzătoare.
  • Locomotiva diesel TE1  - în 1945, locomotiva diesel RSD-1 (Da ) ( furnizată URSS sub Lend-Lease ) a adus trenul de scrisori al lui Stalin la Conferința de la Potsdam . Stalin a apreciat foarte mult această locomotivă, așa că în 1947 a început producția copiei sovietice a locomotivei diesel americane, TE1. În ciuda unor diferențe de dimensiune și echipamente separate, TE1 s-a dovedit a fi aproape identic cu Da [ 12] . Toate locomotivele diesel de manevră rusești actuale sunt descendente ai locomotivei diesel americane.
  • Mortare  - în timpul anilor de război, germanii au copiat cu succes mortarele sovietice capturate de 120 mm , pe care le-au adoptat sub numele de Granatwerfer 42 .
  • Pușca de asalt Kalashnikov  - recent conducerea OJSC Izhmash a declarat că aproximativ jumătate din toate AK -urile din lume sunt „contrafăcute” (adică produse fără licență și transfer de tehnologie), motiv pentru care Rusia pierde aproximativ un miliard de dolari pe an. În același timp, restricțiile de brevet (dacă există) privind tehnologiile și soluțiile tehnice și-au pierdut forța [13] .
  • Lansatorul de grenade american PSRL-1 este o copie modernizată fără licență a RPG-7 sovietic .

Vezi și

  • limbaj de asamblare
  • Hacking de software
  • IDA
  • Radare2
  • Codul civil al Federației Ruse / Partea 4 / Secțiunea VII. Drepturi asupra rezultatelor activității intelectuale și mijloacelor de individualizare / Capitolul 70. Dreptul de autor / Articolul 1280. Reproducerea gratuită a programelor de calculator și a bazelor de date. Decompilarea programelor de calculator .

Literatură

Note

  1. Proces SAS împotriva World Programming . Data accesului: 16 decembrie 2014. Arhivat din original pe 16 decembrie 2014.
  2. s: Codul civil al Federației Ruse / Capitolul 70 # Articolul 1280. Dreptul utilizatorului programului de calculator și al bazei de date
  3. Reuniunea Comisiei guvernamentale privind înlocuirea importurilor de arhivă din 15 iunie 2017 la Wayback Machine // Guvernul Rusiei
  4. Nomenclatura și analogii microcircuitelor domestice . Consultat la 17 aprilie 2010. Arhivat din original pe 27 mai 2010.
  5. Folosit adesea, de exemplu, în legătură cu formatele acceptate de Microsoft Office .
  6. 502 Bad Gateway (link descendent) . Preluat la 12 ianuarie 2016. Arhivat din original la 29 martie 2016. 
  7. Compaq I Computer portabil . Preluat la 12 ianuarie 2016. Arhivat din original la 9 noiembrie 2020.
  8. Mituri despre Samba . Preluat la 12 ianuarie 2016. Arhivat din original la 20 octombrie 2017.
  9. Definiția rețelei de calculatoare . Data accesului: 14 ianuarie 2016. Arhivat din original pe 27 noiembrie 2015.
  10. AmericanHeritage.com/The Little Can That Could Arhivat 24 mai 2007.
  11. JSC „Tupolev” - 68 (Tu-4) (link inaccesibil) . Data accesului: 29 martie 2010. Arhivat din original la 24 octombrie 2007. 
  12. Rakov V. A. Locomotive ale căilor ferate interne 1845-1955 . — al 2-lea, revizuit și completat. - M .: Transport , 1995. - S. 374. - ISBN 5-277-00821-7 . Copie arhivată (link indisponibil) . Preluat la 3 august 2012. Arhivat din original la 24 mai 2014. 
  13. Termenul unui brevet pentru o invenție este de 20 de ani, pentru un model de utilitate - 10 ani, pentru un desen industrial - nu mai mult de 25 de ani (link inaccesibil) . Preluat la 26 mai 2016. Arhivat din original la 15 mai 2016. 

Link -uri