Cod auto-modificat

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Programarea codului auto-modificator (în limba engleză : cod auto-modificator) este o tehnică specială de programare menită să realizeze programe capabile să-și schimbe propriul cod în timpul execuției.

Datorită complexității analizei legate de acești algoritmi , este o tehnică nerecomandată pentru aproape toate aplicațiile: [1] în prezent doar virușii , programele de inteligență artificială și unii algoritmi de protecție software folosesc codul auto-modificator. [2] Virușii o fac pentru a încerca să scape de analiza programelor antivirus , în timp ce în inteligența artificială este folosit pentru a simula (sau pentru unii să imite) învățarea. În cele din urmă, algoritmii de protecție software folosesc codul de auto-modificare pentru a face dificilă crearea „fisurilor” capabile să elimine protecția software-ului în sine. [3]

În mod normal, codul de auto-modificare este scris în limba maternă a procesorului pe care trebuie să ruleze ( asamblare ), totuși este posibil, cu măsuri de precauție adecvate, [4] să scrieți cod de auto-modificare cu un limbaj de nivel înalt.

Programele de auto-modificare inițiale au fost concepute pentru a obține performanțe maxime de la mașini, [5] dar cu microprocesoarele moderne acest lucru nu mai este adevărat, dimpotrivă obțin adesea rezultatul opus: un procesor modern poate fi încetinit prin codul de auto-modificare. [6]

În prezent, utilizarea tehnicii de cod auto-modificat este descurajată de toți producătorii de microprocesoare [ fără sursă ] deoarece face realizarea acelorași microprocesoare mult mai complexă. Microprocesoarele moderne împart instrucțiunile și datele în două zone separate de memorie. Codul auto-modificat nu are această diviziune clară, deoarece folosește date pentru a-și adapta codul, ceea ce face foarte dificilă gestionarea acestuia într-un procesor modern. În prezent, Intel și AMD acceptă executarea codului de auto-modificare pe produsele lor de linie x86 . Acest suport este menținut pentru compatibilitatea cu aplicațiile anterioare.

Notă

  1. ^ Tehnici de auto-modificare a codului , pe quequero.org . Adus la 27 octombrie 2007 (arhivat din original la 27 octombrie 2007) .
  2. ^ Assembly Programming Journal - Tehnici (cu exemple) pentru gestionarea codului de auto-modificare
  3. ^(EN) Avansat Cod de auto-modificatoare Filed o noiembrie 2007 în Arhiva pe Internet . - Polimorfism și metamorfism al codului
  4. ^ Cod Java care se auto-modifică [ link rupt ]
  5. ^ Low Level Speed ​​Optimization. Arhivat 27 octombrie 2007 la Internet Archive . - Cum se salvează nanosecunde prin optimizarea la nivel de mașină
  6. ^ Memoria cache a procesorului - Cum funcționează memoria cache în CPU-urile actuale

Elemente conexe