#include #include #include #include void patch(void* addr, uint8_t* data, size_t len) { size_t pagesize = sysconf(_SC_PAGESIZE); uintptr_t page_start = (uintptr_t)addr & ~(pagesize - 1); mprotect((void*)page_start, pagesize * 2, PROT_READ | PROT_WRITE | PROT_EXEC); for (size_t i = 0; i < len; ++i) { ((uint8_t*)addr)[i] = data[i]; } } int main() { void* target = (void*)main; uint8_t code[] = {0x90, 0x90, 0x90}; // NOPs patch(target, code, 3); return 0; }