Il existe de nombreux cas:
- Les virus couramment utilisés self-modifying code "deobfuscate" leur code avant l'exécution, mais cette technique peut également être utile dans frustrante, l'ingénierie inverse, la fissuration et indésirables hackery
- Dans certains cas, il peut être un point particulier lors de l'exécution (par exemple, immédiatement après la lecture du fichier de configuration) lorsque l'on sait que pour le reste de la durée de vie du processus - une branche particulière sera toujours ou jamais être prises: plutôt que de inutilement la vérification de certaines variables pour déterminer le chemin à la direction générale, la direction de l'instruction elle-même pourrait être modifié en conséquence
- par exemple, Il peut être connue que seul l'un des types dérivés seront traitées, telles que virtual expédition peut être remplacé par un appel spécifique
- Après avoir détecté le matériel qui est disponible, l'utilisation d'un code de correspondance peut être codé en dur
- Inutile de code peuvent être remplacés par des non-op instructions ou de sauter par-dessus, ou qui ont le bit suivant du code déplacé directement en place (plus facile si vous utilisez indépendante de la position des opcodes)
- Le Code écrit pour faciliter son propre débogage peut injecter un piège/signal/interruption d'instruction prévu par le débogueur à un endroit stratégique.
- Certaines expressions de prédicat basée sur la saisie de l'utilisateur peut être compilé en code natif par une bibliothèque
- Inline quelques opérations simples qui ne sont pas visibles jusqu'à l'exécution (par ex. de la bibliothèque chargée dynamiquement)...
- Conditionnellement l'ajout de l'auto-instrumentation/profil des étapes
- Les fissures peuvent être mises en œuvre que les bibliothèques qui modifient le code de chargement (pas de "soi" modifier exactement, mais les besoins, les mêmes techniques et les autorisations).
- ...
Certains OSs' modèles de sécurité de l'signifie self-modifying code ne peut pas fonctionner sans root/admin privilèges, le rendant impraticable pour utilisation générale.
De Wikipedia:
Le logiciel d'Application fonctionnant sous un système d'exploitation avec la plus stricte W^X de sécurité ne peut pas exécuter des instructions dans les pages qu'il est autorisé à écrire-seulement le système d'exploitation lui-même est permis d'écrire les instructions de la mémoire et, plus tard, de l'exécution de ces instructions.
Sur ces Systèmes d'exploitation, même à des programmes comme la machine virtuelle Java besoin de root/des privilèges d'administrateur pour exécuter leur code JIT. (Voir http://en.wikipedia.org/wiki/W%5EX pour plus de détails)