Self-modifying code: Difference between revisions

Content deleted Content added
Operating systems: Add a sentence about self-modifying code in the Linux kernel
Line 150:
 
===Operating systems===
The [[Linux kernel]] notably makes wide use of self-modifying code; it does so to be able to distribute a single binary image for each major architecture (e.g. x86, x86-64, ARM...) while adapting the kernel code in memory during boot depending on the specific CPU model detected, e.g. to be able to take advantage of new CPU instructions or to work around hardware bugs.<ref name="linux_self_modifying_Paltsev">{{cite web |last1=Paltsev |first1=Evgeniy |title=Self Modifying Code in Linux Kernel - What, Where and How |url=https://talk.telematika.org/2019/all/self_modifying_code_in_linux_kernel_-_what_where_and_how/ |access-date=27 November 2022}}</ref><ref name="linux_self_modifying_altinstructions">{{cite web |last1=Wieczorkiewicz |first1=Pawel |title=Linux Kernel Alternatives |url=https://grsecurity.net/linux_kernel_alternatives |access-date=27 November 2022}}</ref>
 
Because of the security implications of self-modifying code, all of the major [[operating system]]s are careful to remove such vulnerabilities as they become known. The concern is typically not that programs will intentionally modify themselves, but that they could be maliciously changed by an [[exploit (computer security)|exploit]].