Доброе утро, хотел узнать, как програмно можно создать файл /boot/System.map для текущего ядра Linux ? Предвидя ответы, то что данный файл создаётся автоматически при установке ОС, прошу всёже придерживаться заданого вопроса, и сказать, как его создать именно програмно (желательно из ядра)
В общем случае процесс должен выглядеть примерно так Код (Text): export sys_execve; printk ("%X - sys_execve", sys_execve); Работа с файлами из ядра происходит по такому http://www.linuxjournal.com/article/8110 принципу. Другое дело что большая часть представленных в System.map адресов не является экспортируемой и что бы их получить надо сильно хакать. Мы как то раз делали нехорошую вешь ввиде чтения всего кода ядра прямо по адресам в цикле и распознавали нужные объекты по сигнатурам. Кстати способ себя полностью оправдал, так как попадание было 90% процентов. Но этот способ приминительно к линуксу сильно хромает ибо ядро сильно обновляется каждые месяца 2, да и пересорка ядра у многих людей прямо таки хобби =)
friackazoid Я видимо действительно очень много кофе пью, и из-за кофеина раздрожителен. Отвечаю).. нет не так. нет, не по такому. Лично мне пофиг, экспортируемая переменная или нет, всёравно её можно использовать. Сильно хакать? ))) ..а что такое хакать в вашем понимании? Вопрос был очень прост) Как мне создать файл, аналогичный System.map ?? (чтоб там были записаны все адреса и переменные данного ядра) ( ведь при установке, System.map создаётся, хочу знать как именно =) )
featurelles >Очень сильно боюсь показаться глупым, но В гугле забанили? http://linux.about.com/library/cmd/blcmdl1_nm.htm mksysmap - скрипт, который вызывается при сборке ядра и вызывает nm.
featurelles Да сих пор не понял? ^) nm vmlinux. Ещё можно написать парсер файла, благо исполняемый формат открыт.