Я пытаюсь написать простую программу на C для проверки, работает ли данная строка шелл-кода на моем компьютере (64-разрядная версия), однако каждая попытка запустить приведенный ниже код приводит к ошибке сегментации. ...

0
Matt 5 Янв 2021 в 01:07

1 ответ

Лучший ответ

0xCC в конце - это INT3 или, что должно привести к Trace/breakpoint trap

Если вы измените 0xCC на 0xC3, он вернется без ошибок.

Одно из возможных смягчений - если ваш компилятор помещает постоянные строки в .rdata вместо .text.

Вместо того:

#define CODE #define CODE "\x90\x90\x90\x90\x90\x90\x90\xCC";

Пытаться

__attribute__((section(".text")))
static const unsigned char code[] = "\x90\x90\x90\x90\x90\x90\x90\xCC";
2
Halt State 4 Янв 2021 в 22:55