Why data and stack segments are executable?

On modern Linux systems, the linker will mark stack/data non-executable IFF all objects that participate in the link have a special “marker” section .note.GNU-stack. If you compile e.g. int foo() { return 1; } into assembly (with gcc -S foo.c), you’ll see this: .section .note.GNU-stack,””,@progbits For nasm, the syntax is shown in section 8.9.2 of … Read more

How to access physical addresses from user space in Linux?

busybox devmem busybox devmem is a tiny CLI utility that mmaps /dev/mem. You can get it in Ubuntu with: sudo apt-get install busybox Usage: read 4 bytes from the physical address 0x12345678: sudo busybox devmem 0x12345678 Write 0x9abcdef0 to that address: sudo busybox devmem 0x12345678 w 0x9abcdef0 Source: https://github.com/mirror/busybox/blob/1_27_2/miscutils/devmem.c#L85 mmap MAP_SHARED When mmapping /dev/mem, you … Read more