PavelK
@PavelK

Как узнать, по какому адресу загружена библиотека и какой её размер в байтах, что бы можно было сделать memmove?

Приветствую.
В общем, нужно после загрузки библиотеки переместить память с ней в другое место...
Да, я предполагаю, что это идиотизм какой-то, но всё же, как?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Да, я предполагаю, что это идиотизм какой-то, но всё же, как?

Для этого надо как минимум разобраться, что библиотека представляет собой в памяти, и понять, что это детали не уровня "C++", а уровня "ОС".
После этого можно посмотреть на то, как загружаются ELF (или PE, или что там в твоей ОС), что такое сегменты и что такое динамические релокации. После этого уже можно будет понять, что отдельно друг от друга сегменты библиотеки двигать нет смысла (потому что относительные ссылки между ними не помечены релокациями), а всё целиком имеет смысл двигать только если после перемещения обновлять места динамических релокаций.
Ответ написан
@mayton2019
Ent. Software engineer. Oracle. SQL. BigData.
Несколько мыслей.
- Задача противоречит базовым принципам защиты информации в много-процессной ОС. Если ее рассматривать с разных углов то можно видеть и анти-вирусную угрозу и просто краш системы если она будет работать от супер-пользователя. Эти пункты надо проговорить.
- Реализация будет сильно зависеть не от С++ а от ОС (Windows/Linux)
- Очень полезно понять мотивы зачем этого хочет автор. Тогда и можно придумать эффективное решение. Тоесть не просто сделать memmove, сделать ДЛЯ КАКИХ_ТО целей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы