Re:On self-modifying executables in Rust
by Hello71 on Friday January 28, 2022 @10:03PM
(#30123379)
I don't think process_vm_writev can write to read-only memory, which executable memory is under modern operating systems. Doing that requires ptrace, which long predates Linux. According to the Linux man page, it is "CONFORMING TO: SVr4, 4.3BSD".
[ Parent
| on HN ]
Re:On self-modifying executables in Rust
by woodruffw on Friday January 28, 2022 @10:40PM
(#30123552)
The ptrace APIs also can’t write to read only memory, at least not on modern Linux running on CPUs with modern MMUs. But SMC doesn’t require that, because you can always map (or remap) executable pages as writable.
Executable code is only read-only by default, you can always change that (or just not do it, in the case of a JIT).
> The ptrace APIs also can’t write to read only memory
Sure they can.
https://stackoverflow.com/questions/49442087/how-does-ptrace...