Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
return 1;
}
return 1;
}
Сохраним вышеприведенный код в файле new_mkdir.c и получим исполняемый модуль командой:
gcc -o new_mkdir new_mkdir.c
Но запускать на выполнение полученный модуль пока рано. Нам еще необходимо определить адреса и размеры функций get_kmalloc и new_mkdir. Для этого воспользуемся утилитой objdump. Введем команду:
objdump -x ./new_mkdir > dump
Вывод перенаправим в файл dump. Откроем этот файл и найдем в нем следующие строки:
08048630 l F .text 00000038 get_kmalloc.39
08048668 l F .text 00000011 new_mkdir.43
Итак, адрес функции get_kmalloc – 0x08048630, размер – 56 байт (0x38), адрес функции new_mkdir – 0x08048668, размер – 17 байт (0x11).
Открываем файл new_mkdir.c и в разделе переменных заполняем полученными значениями соответствующие поля:
ulong get_kmalloc_size=56; – размер функции get_kmalloc
ulong get_kmalloc_addr=0x08048630; – адрес функции get_kmalloc
ulong new_mkdir_size=17; – размер функции new_mkdir
ulong new_mkdir_addr=0x08048668; – адрес функции new_mkdir
После этого перекомпилируем модуль. Запустив его на выполнение, мы осуществим перехват системного вызова sys_mkdir. Все обращения к вызову sys_mkdir будут обслуживаться функцией new_mkdir. Чтобы убедиться, что вызов перехвачен, введем команду mkdir <имя каталога>. При этом ничего не произойдет, так как функция-перехватчик new_mkdir просто вернет нулевое значение.
Работоспособность вышеприведенного кода была
проверена для ядер версий 2.4.17 и 2.4.20. При подготовке статьи были
использованы материалы сайта