Live briefing
Everything about Self-modifying code
Source code that alters its instructions to the hardware while executing
In computer science, self-modifying code is code that alters its own instructions while it is executing – usually to reduce the instruction path length and improve performance or simply to reduce otherwise repetitively similar code, thus simplifying maintenance. The term is usually only applied to code where the self-modification is intentional, not in situations where code accidentally modifies itself due to an error such as a buffer overflow. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: Self-modifying codeA 5-minute orientation
- Skim a recent paper: Reachability Analysis of Self Modifying CodeInfluential work since 2022
- Pick up a classic book: Java software solutionsThe most-reprinted book on the subject
- Read the landmark paper: A taxonomy of self-modifying code for obfuscationCited 42 times
- Go sideways: Machine codeA closely related topic
- Go sideways: X86 assembly languageA closely related topic
📖 Definitions
No dictionary entry for this exact phrase.
🏆 Landmark papers (most cited)
A taxonomy of self-modifying code for obfuscation
Potent and Stealthy Control Flow Obfuscation by Stack Based Self-Modifying Code
Certified self-modifying code
Verified Abstract Interpretation Techniques for Disassembling Low-level Self-modifying Code
Mobile Agent Protection with Self-Modifying Code
Language-independent sandboxing of just-in-time compilation and self-modifying code
The self modifying code (SMC)-aware processor (SAP): a security look on architectural impact and support
LTL model checking of self modifying code
🆕 Influential since 2022
Reachability Analysis of Self Modifying Code
Control flow obfuscation with irreducible loops and self-modifying code
User Privacy Attacks through Self-Modifying Code Conflicts
LTL model checking of concurrent self-modifying code
System Metamodeling of Open-Ended Evolution Implemented with Self-Modifying Code
📚 Books worth reading
Java software solutionsLewis, John, John E. Lewis Ph. D. · 1997
C How to ProgramPaul J. Deitel, Harvey M. Deitel · 2007
Clinical practice of the dental hygienistEsther M. Wilkins · 1958
Treaty Occupationay ToxicologySuelen Queiroz · 2010
The Conspirators HierarchyJohn Coleman · 1992
From DNA to Gm WheatJohn Farndon · 2006
Digital systems testing and testable designMiron Abramovici · 1990
Neuro-fuzzy and soft computingJyh-Shing Roger Jang, Chuen-Tsai Sun · 1996
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- Machine code In computing, machine code is data encoded and structured to control a computer's central processing unit (CPU) via its programmable interface. A computer…
- X86 assembly language x86 assembly language is a family of low-level programming languages that are used to produce object code for the x86 class of processors. Previous evolutions…
- Bootloader A bootloader, also spelled as boot loader or called bootstrap loader, is a computer program that is responsible for booting a computer and booting an operating…
- Booting In computing, booting is the process of starting a computer as initiated via hardware such as a physical button on the computer or by a software command…
- COM file A COM file is a type of simple executable file. On the Digital Equipment Corporation (DEC) VAX operating systems of the 1970s, .COM was used as a filename…
- Addressing mode Addressing modes are an aspect of the instruction set architecture in most central processing unit (CPU) designs. Addressing modes define how the machine…
- Modified Harvard architecture A modified Harvard architecture is a variation of the Harvard computer architecture that, unlike the pure Harvard architecture, allows memory that contains…
- Prefetch input queue Fetching the instruction opcodes from program memory well in advance is known as prefetching and it is served by using a prefetch input queue (PIQ). The…