Как я могу отладить программу, связывающую определенную версию общей библиотеки?

привет мир.с:

int main(){}

[1] 9845 недопустимая аппаратная инструкция (дамп ядра) LD_PRELOAD=./libc.so.6 ./helloworld

Эта предварительная загрузка libc является старой версией glibc.

Могу ли я отлаживать helloworld, связывая его в своей системе?

Или есть быстрый способ развернуть виртуальную машину с определенной версией общих библиотек?


person Donald Wu    schedule 26.06.2016    source источник


Ответы (2)


Могу ли я отлаживать helloworld, связывая его в своей системе?

Да, но делать это нужно правильно. Этот ответ содержит подробную информацию и объяснение, почему ваш LD_PRELOAD не работает.

person Employed Russian    schedule 28.06.2016

  • Из вашего сообщения я мог видеть, что POC сбрасывает ядро. Так что лучше используйте gdb для анализа дампа памяти и просмотра стека вызовов. Убедитесь, что вы загружаете правильную libc в gdb при анализе дампа ядра.
  • В противном случае используйте LD_DEBUG=all перед вызовом POC и посмотрите, есть ли какие-либо указатели на сбой, просмотрев подробности во время выполнения.
person Nikhil A R    schedule 27.06.2016
comment
Извините, что ввел вас в заблуждение. POC дамп ядра? Нет. Я был уязвим. Я не запускал POC. И я так понимаю дело вовсе не в POC. Я обновил свой пост. Благодарю вас! - person Donald Wu; 27.06.2016