A számítástechnikában a NOP vagy a NOOP (az angol rövidítése: " N o OP eration ") egy assembly nyelvű processzor-utasítás vagy protokollutasítás , amely a semmittevésre utasítja.
Sok processzor utasításkészlete tartalmaz olyan utasítást, amelynek célja nem egy regiszter vagy memóriahely állapotának megváltoztatása , hanem egy bizonyos számú processzorciklus eltöltése. Azoknál a processzoroknál, amelyekben nincs speciális utasítás, a NOP-t valamilyen más utasítás utánozza olyan paraméterekkel, hogy a regiszterek és a jelzők nem változnak (például SPARC processzorokban a " sethi 0, %g0 " utasítás NOP-ként javasolt ) .
A NOP-okat gyakran használják:
Útmutató Intel x86 - kompatibilis processzorokhoz:
Valójában az x86 processzorok NOP utasítása XCHG EAX, EAX vagy XCHG AX,AX , amelynek ugyanaz a 0x90 műveleti kódja, és nincs hatása, kivéve a következő speciális eseteket:
A "NOP's track" vagy "NOP's springboard" egy jól ismert hacker technika, amely tetszőleges kód végrehajtásához kapcsolódik .
A tetszőleges kódvégrehajtás leggyakoribb oka a puffertúlcsordulás . Azonban gyakran csak hozzávetőlegesen ismert a visszatérési pont helyett kiírandó cím. Ebben az esetben a következő kód jön létre.
nop nop ... nop nop <rosszindulatú kód itt>Miután bármelyik NOP-ra váltott, a processzor végül „legurul” egy rosszindulatú területre.
Sok protokoll, például a telnet tartalmaz egy NOP parancsot, amelyet az ügyfél küldhet, hogy választ kapjon a kiszolgálótól anélkül, hogy bármi mást tenne. A NOOP parancs a következő legismertebb protokollokban található:
A NOP parancs lehetséges felhasználási módjai: