Я занимаюсь исследованиями в области шифрования / защиты программного обеспечения.Я хочу связать динамически зашифрованные общие объекты (Linux, архитектура x86, формат ELF32 / 64)
- Код, который должен быть защищен, содержится (зашифрован, без действительного ELF) в общем объекте.
- Сам объект является допустимым ELF-файлом, содержащим метод init
- Расшифровка должна быть запущена, в зависимости от доступной лицензии в функции init, вызываемой загрузчиком.
- После шифрования код присутствует в памяти как действительный файл ELF.
Были некоторые дополнительные требования:
- Расшифрованный код не должен бытьхранится (даже временно на диске) - предотвращать простой дамп объекта и повторное использование кода
- Алгоритм защиты не должен публиковаться, поэтому я не могу использовать части кода GNU (даже люди там делают большую работу!)
Я думаю, что трудный путь состоит в том, чтобы переопределить загрузчик / компоновщик, обеспечивающий необходимую функциональность ... Возможно, может быть способ использовать Linux rtld или его части, другие компоновщики?Есть ли более простой способ?
Спасибо за каждую идею / подсказку
Некоторые связанные ссылки / Информация