Столкнулся с отсутствием нормальных отладчиков под линукс. Точнее нормальный там только 1-gdb, но он совершенно не может работать с программами которые не хотят что бы их отлаживали. Решил написать подобный отладчик(что то похожее на OllyDbg),который мог бы работать с файлами без section header'а, самотрассирующимся кодом и др. Но вот в чём вопрос можно ли это реализовать при помощи ptrace или нужно выносить всю функциональность в модуль ядра? Хотелось бы узнать ваше мнение.
Думаю, лучше не пользоваться ptrace вообще. Вот здесь неплохо написано, почему: http://the-dude.sourceforge.net/dude_paper.txt Есть уже попытки написать отладчик, похожий на Olly: http://www.codef00.com/projects.php#Debugger Хотя я сам его не пробовал и про него сказать ничего не могу. А вообще вот статья "Beginners Guide to Basic Linux Anti Anti Debugging Techniques" http://www.codebreakers-journal.com/index.php/CodeBreakersMagazine/article/view/14 Автор использует только objdump и gdb. Конечно, там элементарные приемы, и, скорее всего, ты их уже знаешь. Но, думаю, другим пригодится. (Хм..., в ней даже есть моя первая ссылка).
Вполне рабочий, хотя есть некоторые досадные ограничения. Если пользоваться gdb-like отладчиками непривычно, то он будет в самый раз. Однако, против него можно сказать следующее: 1. Если нужен отладчик уровня ядра, то уже есть (и давно) такие вещи как kgdb или kdb. Имхо, они гораздо более зрелые. 2. У меня сложилось впечатление, что проект уже минимум год как заброшен. И, думаю, потому что ... см. п. 1.
Кстати, по поводу Linice, я там не понял, нужно иметь исходники Linux'а, чтобы его подгрузить, или он и без прикомпиляции работает, просто compile-run?
>нужно иметь исходники Linux'а, чтобы его подгрузить исходники нужны чтобы его скомпилять. Broken Sword >linice кто-то юзал вообще? как он в работе? не смог им пользоваться - очень часто виснул
По причине отсутствия исходников Linux'а не могу пользоваться linice'ом. А жаль. Под Windows я только SoftIce в качестве основного отладчика использовал, так как он kernel-mode и при этом достаточно крут по сравнению с другими отладчиками режима ядра. Есть что-нибудь похожее, не требующее исходников?
Linice Kernel Level Debugger Quick Start: You need to have kernel sources installed, or at least compile kernel headers for the kernel version for which you are linking Linice. ===================== Нужны только тексты ядра, но достаточно инклюдов на самом деле. А вы хотели чтобы Линуксоиды сделали самонастройку на ядро, как у софтайса Так извиняюсь ядро в Линуксе такое гибкое, что вряд ли это возможно.
valterg Вот-вот, эта строчка меня и повергла в ужас. Нет у меня даже include Да понятно. Иначе бы выход нашли бы давно.
NullSessi0n Почему же они не интегрируют этот линайс в популярные дистры? У меня, кстати, куча разных дистров валяется, а исходники только в одном.
Quantum Потому что там есть gdb & kgdb. А линайс делали для тех, кто привык к айсу. Поэтому лучше освоить gdb, чем пользоваться сырым продуктом. Кстати есть порт gdb под Винды. Можно тренироваться
valterg Он всегда был в Cygwin'е. В любом дистре полно текстовых редакторов, браузеров, медиа-плееров и т.д. Почему отладчик должен быть один? Возможно, линайс сырой ещё (а светит ли ему избавиться от сырости?) но в Линуксе почти весь софт такой
Не линукса а ядра =) Народ что вы проблему делаете ? заходим на kernel.org скачиваем понравившиеся исходники ядра - компилим ядро - и ядро будет поновее и исходники присутствуют не только linice требует наличие исходников ядра а многие проги - например установщик VMWare =)
Same Диалапщики сейчас кого-то камнями закидают Я же не для того Линукс на DVD купил, чтоб потом ещё несколько болванок исходников откуда-то выкачивать. Час - полтора? Это тема отдельного разговора. Что же я постоянно натыкаюсь на явные баги и мелкие недоделки, то в ядре, то в сишной либе, то в компиляторе этом гнутом? И дистры у меня не такие старые и под линукс/бсд я начал кодить относительно недавно. Добавил: Может, у меня просто руки кривые и искривила их винда, ведь я уже привык, что если моя прога не пашет, то ошибка 99.9% в коде моей проги, а не где-то в другом месте.
Quantum Во-первых, тексты ядра не так много занимают, во-вторых, есть дистрибутивы с текстами, в-третьих, ядро-то не надо копилировать - нужны инклюды для того ядра, под которое будем компилить. Стабильность систем штука хитрая : 95-й Виндус содержал в реестре патчи для 200 популярных пакетов и игр - вот вам и объяснение почему в 95-м "шли все старые игры". Шли естественно не все, но что значит слово тысяч недовольных против миллионов. Патчи присутствуют и в 2000-м и в ХП и совершенно не афишируются - прогу патчат без вашего ведома или тихо "кончают" В Линуксе честно "вылетают" и "виснут".
Ну извините - тогда пусть диалапщики у друзей поспрашивают =) крайнии версии ядра не привышают 40 мб Зависит от мошности твоего кома - у мя компилится за 40 максимум Сконфигурировал ядро - поставил компилится ушел пить чай и сё =) В том то и дело что у тебя дистрибутивы не такие уж старые - разработчики спешать всё поскорее потому часть покетов содержит ошибки в коде Правда мне самому таки глюки не разу не попадались - 100% всех глюков и ошибок было по вине моих рук) а компилятор и правда иногда того - если поставить ключь опитимизации некотрые проги работают немного иначе чем было задумано =) На счет надежности - я использую Debian - на мой взгляд самый надёжный в этом смысле (если интересно прочитай на debian.org требования к версии stable - правда некотороя чась пакетов устарела - но не что не мешает откомпилить любую самую новую версию любого пакета)
да ладно тебе, когда я был диалапщиком ядро у меня было всегда самое последнее. на kernel.org не только ядро лежит, но и патчи. Но что же за линух ты купил, что на нём нету сорцов ядра? PIII 1GHz, ~400Mb после make distclean минут за 20-30 собирается. не всё естественно, но на хрена собирать, например, дрова к видяхе которую я никогда не видел и никогда не увижу?