LINUX.ORG.RU

KHOOK v1.0

 , ,


2

1

Вышла первая стабильная версия встраиваемого фреймворка (движка) перехвата функций для ядра Linux — KHOOK v1.0

Особенностью данного ПО является то, что перехват осуществляется путём модификации (патчинга) пролога функции, сохраняя возможность вызова оригинальной функции, и не зависит от наличия в целевом ядре такого механизма как kprobes.

Кроме того, для определения количества инструкций процессора, необходимых к сохранению при модификации пролога, используется встроенный в ядро дизассемблер длин, а единственной поддерживаемой архитектурой на данный момент является x86.

В качестве примера использования ниже приведён код перехвата функции ядра inode_permission(...):

#include <linux/fs.h> // has inode_permission() proto
KHOOK(inode_permission);
static int khook_inode_permission(struct inode *inode, int mask)
{
        int ret = 0;
        ret = KHOOK_ORIGIN(inode_permission, inode, mask);
        printk("%s(%p, %08x) = %d\n", __func__, inode, mask, ret);
        return ret;
}

>>> Подробности

★★

Проверено: jollheef ()

и не зависит от наличия в целевом ядре такого механизма как kprobes.

а единственной поддерживаемой архитектурой на данный момент является x86.

очень нужно, продолжайте в том же духе ))))

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от e7z0x1

так есть поддержка, 32/64 бита ... или вам надо специально писать «кошерное» название архитектуры типа x86_64? так даже в ядре Linux, в «arch» оно «arch/x86» зовётся ...

i82 ★★ ()
Ответ на: комментарий от anonymous

Конечно зависит, иначе нужны сигнатуры какие-то/эвристика для поиска символов. Можно конечно передавать адреса параметрами в модуль... Но мне такого не надо было.

i82 ★★ ()