- 1
Вопрос
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−10
Вопрос
Кто знает, как динамически выделить память, заполнить её нужными инструкциями, и исполнить этот код, не испытав при этом анальной боли и не получить Segmentation Fault ?
viagrinho 22.04.2018 10:16 # −103
AnalDaddy 23.04.2018 20:11 # 0
Antervis 24.04.2018 05:50 # 0
yet_another_one_shit 24.04.2018 06:33 # 0
У меня получается только со статической.
bormand 24.04.2018 07:09 # 0
j123123 24.04.2018 11:54 # +2
Antervis 24.04.2018 12:07 # 0
yet_another_one_shit 24.04.2018 14:31 # 0
roskomgovno 27.04.2018 22:55 # 0
Начиная с x64 прямо у страницы есть битик NX, а в 32 режиме такого битика не было, и в некоторых случаях можно было самомодифицировать код, но не везде.
К примеру OpenBSD защищала страницы софтварно еще до появления хардварной защиты от amd64.
Называлась эта защита W^X (запись-или-исполнение), кажется на нее намекал там снизу Санут:)
Анонимно замапить mmap и сказать что ты хочешь PROT_EXEC и PROT_WRITE, наверное, можно (хотя это конечно странное желание), однако
в Linux это должно сработать (во всяком случае mmap(2) ничего страшного не обещает), думаю что остальные обычные ОС поступят так же.
Ну а упомянутая выше obsd пошлет тебя нахуй (ENOTSUP), если ты явно не включишь режим пониженной безопастности.
На винде, емнип, нет анонимного мапинга (только в файл), но можно сделать HeapCreate со спец ключиком, и вся выделямая из этого хипа память будет разрешена для выполнения (ну и для записи самособой)
CHayT 24.04.2018 12:12 # 0
bormand 24.04.2018 07:12 # 0
yet_another_one_shit 24.04.2018 08:33 # −1
ЗЫ. Совсем без боли не бывает, про LLVM я знаю, просто хочу зопилить малипюзерный JIT, без всяких там LLVM'ов, чтобы самому с этим всем разобраться.
Psionic 24.04.2018 14:31 # +2
yet_another_one_shit 24.04.2018 16:31 # −1
j123123 25.04.2018 09:32 # 0
https://community.arm.com/processors/b/blog/posts/caches-and-self-modifying-code
subaru 28.04.2018 23:50 # −1
Тут подробнее https://docs.python.org/2/extending/embedding.html
roskomgovno 03.08.2018 02:50 # 0
HighVoltageDick 04.08.2018 22:54 # −1
Факт.
kir_rik 31.08.2018 01:42 # 0