Сейчас на форуме: Lohmaty (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Компилятор gcc
Посл.ответ Сообщение

Ранг: 5.0 (гость)
Активность: 0.030.01
Статус: Участник

Создано: 23 октября 2018 12:34
· Личное сообщение · #1

Как скомпилировать прогу в gcc чтоб все секции были rwx, чтоб была возможность переписывать код(например часть функции которая не задействована), после компиляции(эксплойтом).




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 23 октября 2018 15:13
· Личное сообщение · #2

Можешь использовать атрибут section("section-name") через __attribute__, где тебе нужно будет указать флаг aw (allocatable и writable), например:
Code:
  1. unsigned int __attribute__((section(".text,"aw"))) VarName;


Как вариант - задавать отдельно параметры для линкера ld.

-----
EnJoy!




Ранг: 5.0 (гость)
Активность: 0.030.01
Статус: Участник

Создано: 23 октября 2018 21:54
· Личное сообщение · #3

Это как то должно задаваться в параметрах компиляции, но не могу найти как. Куча статей, но то что там есть не работает
Вот напримео:
https://stackoverflow.com/questions/27581279/make-text-segment-writable-elf




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 24 октября 2018 11:52
· Личное сообщение · #4

В моём комментарии был пример с добавлением строки в сорс, ты этот способ попробовал?

-----
EnJoy!




Ранг: 5.0 (гость)
Активность: 0.030.01
Статус: Участник

Создано: 27 октября 2018 20:22
· Личное сообщение · #5

Пробовал, не получилось.
Добавлял в самом main и отдельно, не работает.
VarName это что?
Ковычки одни потерялись или так и должно быть? (".text","aw")




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 28 октября 2018 01:11
· Личное сообщение · #6

Vladislou пишет:
VarName это что?


VarName - это имя твоей переменной

-----
EnJoy!




Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 28 октября 2018 08:19
· Личное сообщение · #7

Поменяй атрибуты страниц в рантайме и не парься. Один вызов VirtualProtect / mprotect на весь модуль, и можно писать во все секции...

-----
PGP key <0x1B6A24550F33E44A>



 eXeL@B —› Вопросы новичков —› Компилятор gcc
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати